ご訪問ありがとうございます。
今回は、TrimPipsの修正版についてお伝えします。
問題
・MT4起動時に「チェックコードが誤っています」のエラーが表示される
こんな風にMT4起動時にエラーメッセージが表示されるとの
問い合わせがありました。
さらにこんなメッセージまで^^
その後、使用できるのですがかなり遺憾です。
うーーーーん、当方で再現しないので
原因がわからなかったのですが、ついに判明しました。
MT4起動時に複数通貨でTrimPipsを使用している
状態の場合、TrimPipsがファイルを読み込むと高確率でエラーが
発生していることがわかりました。
ErrorDescription させると
2022.03.05 09:03:01.793 ファイル読み込み失敗 error(5004): cannot open file
いやいや、「cannot open file」ってなんで失敗やねん???
とりあえず、ちょっと待てばいいのかなとSleep(5000)(5秒)とかに
しましたが、それでも時々エラーとなります。
結果として何回かリトライするようにしました。
同じスリープ時間だと、結局、タイミングが同じに
なるような気がしたので、一応、乱数により
当にスリープし、失敗したら再度スリープ(100回まで繰り返し)
以下のようにエラーなら100回リトライするよう変更しました。
イマイチスッキリしませんが、これで良しとします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
int num = 0; //スリープ時間ms for(int i = 0; i < 100; i++) { num = MathRand() % 50 + 10; Print(i+1, "回目:",Str_IniFileName,"読み込み用", num, "m秒スリープ"); Sleep(num); //ファイル読み込み(ウインドウの初期位置を取得) int handle = FileOpen(Str_IniFileName, FILE_CSV, '='); if(handle != INVALID_HANDLE) { 読み込み後の処理 FileClose(handle); //ファイルクローズ break; } else { int err = GetLastError(); Print("AccountFile ファイル読み込み失敗 error(", err, "): ", ErrorDescription(err)); } } |
ログを見ると3回位失敗して成功することがあるようです。
これにより
TrimPips起動時の初期ファイルの読み込みが正常に行えるようになったので、
ウインドウ位置も保持できるようになりました。
ちなみにMQL5版では、エラーになっていなかったのですが
ソースの共通化のために上記ソースでビルドしたところ
‘ErrorDescription’ – undeclared identifier TrimPips.mq5 273 64
のエラーが表示されました。
なので、
#include <ErrorDescription.mqh>
したのですが、
ErrorDescription.mqh
先でもエラーが???
とりあえず、エラー箇所をコメントアウトして
ビルドしました。(うーん、なぜだ)
最後までご覧いただきありがとうございます。
つぎはこちら⇒
コメント