voidOnStart()
{
uchar max=0;
for(int t=0;t<LONG_MAX;t++) {max++;} //так получаем предупреждение expression is always true, цикл работаетfor(int t=0;t<LONG_MAX+1;t++) {max++;} //так предупреждение есть, но цикл не работаетfor(int t=0;t<ULONG_MAX;t++) {max++;} //так нет предупреждения и цикл не пашетPrint("Done!");
}
voidOnStart()
{
uchar max=0;
for(int t=0;t<ULONG_MAX-1 e0;t++) {max++;} //так цикл работает, предупреждения нет так как ULONG_MAX-1e0 имеет тип doublefor(int t=0;t<ULONG_MAX-1;t++) {max++;} //а так нет и предупреждения тоже нетPrint("Done!");
}
データ処理の高速化を優先したMT4用EAのToRを書いています。
計算の順序やサンプリング(代表というのが正しいか)が高速化のために重要かどうかアドバイスしてください。
ブロック図の写真で2種類のバリエーションを添付しています。
もし可能なら、ブロックの選択的実行が-純粋にプリミティブなレイアウトになる場合、コードがどのように見えるべきかを書いてください、そして、これにより大幅な速度向上が得られるでしょうか
テスターのポジションを閉じる というのは、どのように説明されるのでしょうか。スプレッド拡大が原因か?
MetaTrader取引プラットフォームのスクリーンショット
EURUSD, M20, 2014.04.12
Alfa-Forex、MetaTrader 5、リアル
temp_file_screenshot_63279.png。
テスターのポジションを閉じる というのは、どのように説明されるのでしょうか。スプレッドの拡大でしょうか?
[img]https://charts.mql5.com/4/434/eurusd-m20-alfa-foreks-temp-file-screenshot-63279-png.png[/img].
スプレッドが広がっていれば(スクリーンショットで判断すると、5桁で720ポイント!)、すべてが正しいということになります。
売りポジションはAsk価格で決済されました。ストップがかかっていた場合です。
ところで、あなたのブローカーAlfa-Forexは、週の終わりと始まりにちょうど巨大なスプレッドが あります。
おそらく、気配値履歴に記録され、テスターがその上で売買のシミュレーションを行ったのでしょう。
週末の停車は危険です。どうせギャップから救われないし、スプレッド拡大で簡単に捕まってしまいます。
LONG_MAX+1< 0 のため、エラーは発生しない。
ここで、警告は有効です (t<LONG_MAX if t int always true ) 無限ループULONG_MAX-1< 0 なので,比較演算はintに還元 されるのでエラーはない。
では、どう説明するのか。
ULONG_MAX-1< 0、すなわち比較演算がintまたはlongにキャスト されるため、ここでエラーは発生しません。
ループ内のtest式での比較のことでしょうか?
単純な比較ではそうは思えないからです。
入れ替えるだけでいいんです :)
この再配置は何をするのか? tはULONG_MAX-1より 低く、今もそうである。