エラー、バグ、質問 - ページ 311

 

新しいビルドのバグで、x64システム(特にWindows 7、Core i7プロセッサ)でのみ可能です。以前のビルドでは、このような不具合はありませんでした。このバグには次のような意味があります。

Expert Advisor のソースコードを大きく変更せず(例えば、ある変数の値だけを変更する)、その後再コンパイルしても、テスト結果は 変わりません。

以下までたどり着きました。

void OnTick()関数にreturn; :)を挿入してコンパイル、実行、結果は同じです!!!!一般的には、その線があるはずですが。

解決策は、*.ex5ファイルを削除して再コンパイルするか、コンパイラがキックするようなゴミを書いてからコンパイルするかのどちらかでした。

明日、x32bitのOSで同じことが起こるかどうか確認してみます。

また、x64ではチャートで新しいウィンドウを開くのに時間がかかりすぎ、削除するのに時間がかかりすぎることに気づきました

そして、端末は約5秒間「応答なし」と表示されたままハングアップします。

 
bobsley:

新しいビルドのバグで、x64システム(特にWindows 7、Core i7プロセッサ)でのみ可能です。以前のビルドでは、このような不具合はありませんでした。このバグには次のような意味があります。

Expert Advisor のソースコードを大きく変更せず(例えば、ある変数の値だけを変更する)、その後再コンパイルしても、テスト結果は変わりません。

以下までたどり着きました。

void OnTick()関数にreturn; :)を挿入してコンパイル、実行、結果は同じです!!!!一般的には、その線があるはずですが。

解決策は、*.ex5ファイルを削除して再コンパイルするか、コンパイラに警告を出させてからコンパイルするような無意味なことを書くか、でした。

明日、x32bitのOSで同じことが起こるかどうか確認してみます。

また、x64ではチャートで新しいウィンドウを開くのに時間がかかりすぎ、削除するのに時間がかかりすぎることに気づきました

そして、端末は約5秒間「応答なし」と表示されたままハングアップします。

Check this folder (Username UsernameAppataRoaming ↪MetaQuotes↩Terminal ↪M72CEBD0F7A5518983A10360D0E46A5B6 ↪MQL5↩) maybe your EA will compile there
 
bobsley:

新しいビルドのバグで、x64システム(特にWindows 7、Core i7プロセッサ)でのみ可能です。以前のビルドでは、このような不具合はありませんでした。このバグには次のような意味があります。

Expert Advisor のソースコードを大きく変更せず(例えば、ある変数の値だけを変更する)、その後再コンパイルしても、テスト結果は変わりません。

以下までたどり着きました。

void OnTick()関数にreturn; :)を挿入してコンパイル、実行、結果は同じです!!!!一般的には、その線があるはずですが。

解決策は、*.ex5ファイルを削除して再コンパイルするか、コンパイラがキックするようなゴミを書いてからコンパイルするかのどちらかでした。

明日、x32bitのOSで同じことが起こるかどうか確認してみます。

...

このバグを特別にキャッチしたわけではありませんが、32ビットで同様の動作があることに気づきました。セミコロンのような終わっていない式をコンパイルすると設定されるエラーです。
 
Im_hungry:
もちろん歴史はありますが、すべてのワームが広がった歴史を持っているわけではないのです

1.全ては語らず、これだけ、開発者のサーバー -access.metatrader5.com:443(まあ、今のところMT5でこれ以上の履歴の人に会ったことはないのですが)です。

私の脚本を例にとると、あまり良いものではありませんが、それでもまだ完成していません。TF「1週間」、バー数 930で実行してみます。

次のような結果が得られます。

2011.02.22 11:38:50     -   1:1993.05.09 00:00 open = 1.2368, high = 1.2368, low = 1.2084, close = 1.219, volume = 252, spread = 50
2011.02.22 11:38:50     -   0:1993.05.02 00:00 open = 1.2334, high = 1.2466, low = 1.2267, close = 1.2332, volume = 0, spread = 0
2011.02.22 11:38:50     -   Скопировано баров: 930

週足バーのスプレッドは1993.05.02からのようで、バーの歴史はさらに深いようです。しかし、このデータは、ユーロが1999年から正式に存在するのであれば、それほど深いものではないのかもしれない(ただし、神と共にある、とは別の問題である)。

2.次に、日足チャートでスプレッド情報の深さを指定してみる。

1週間に5回取引日があることを前提に、日足チャートでのスプレッドデータの履歴の始まりを探ってみましょう(最初からおおよその数字を4630とします)。

2011.02.22 11:56:06     -   2:1993.05.13 00:00 open = 1.2148, high = 1.2158, low = 1.2084, close = 1.2099, volume = 100, spread = 50
2011.02.22 11:56:06     -   1:1993.05.12 00:00 open = 1.2138, high = 1.2171, low = 1.2105, close = 1.2152, volume = 0, spread = 0
2011.02.22 11:56:06     -   0:1993.05.11 00:00 open = 1.2167, high = 1.2202, low = 1.2121, close = 1.2141, volume = 0, spread = 0
2011.02.22 11:56:06     -   Скопировано баров: 4630

したがって、日足でのスプレッドの履歴は1993.05.13から始まっていることがわかる。

追記

私は、さらに類推(私が理解している最も小さい時間枠の最も古い日付と我々が探しているその場所になります)で整理すると思います...

に広がることだけを指摘する。

1993.05.13から利用可能なH12(しかし、私は毎日理解としてそこにバー) - 深さは約7790バーです。

H6は1993.05.13から利用可能(日足) - 深さは約14100本です。

 
sergey1294:
Check this folder (UsernameAppData⇄Roaming⇄MetaQuotes⇄TerminalⒸ72CEBD0F7A5518983A10360D0E46A5B6ⒸMQL5) Maybe your EA will compile there.

確認しましたが、もちろん真っ白です。And why would it be, I've got the esperts in ...\ \ExpertsExamples.

そこで、彼らのコンピレーションが登場するのです。

今日、職場のx32 OSで確認しました。アップグレード前は問題なかったのに、端末をアップグレードしたらすぐに同じ不具合になりました

 
 double op, sp;
     
     if ( ObjectGetDouble ( 0,"Open", OBJPROP_PRICE,0,op) &&  ObjectGetDouble ( 0,"Stop", OBJPROP_PRICE,0,sp ) ){
     
        if ( is40x_b0[0] > 0 && Tick.bid > op && Tick.bid < sp ){ <--------------- Дает предупреждение possible use of uninitialized variable 'sp'
         Sell(); 
        }
        
        if ( is40x_b1[0] > 0 && Tick.ask < op && Tick.ask > sp ){
         Buy(); 
        }

     }
 
Academic:


斯くやあらん
 double op=0, sp=0;
 
sergey1294:
こうでなければならない。
なぜ?
 
Academic:
なぜ?

本当に何も問題ないんです。

変数は、初期化時にリセットされます。

ここでは、その様子をご覧いただけます。

int i;

printf("i=%d",i)。

 
bobsley:

本当に何も問題ないんです。

変数は、初期化時にリセットされます。

ここでは、その様子をご覧いただけます。

int i;

printf("i=%d",i)。

この警告が出るのは、ObjectGetDouble 関数に 参照が渡され、if 文で両方の呼び出しが返す真偽をチェックしているため、両方の関数が真を返した場合のみこれらの変数が処理され、これらの変数が正しい値に設定できないことを意味します。

Документация по MQL5: Графические объекты / ObjectGetDouble
Документация по MQL5: Графические объекты / ObjectGetDouble
  • www.mql5.com
Графические объекты / ObjectGetDouble - Документация по MQL5