初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 588

 
barudkinarseniy:

エキスパートアドバイザーで、ボタンやトグルスイッチなどのオブジェクトをチャートに追加することは可能でしょうか。また、可能な場合はどのように追加するのでしょうか。

オブジェクト:OBJ_BUTTONまたはOBJ_BITMAPに関する ヘルプです。そこに例がある。
 
テスターでは連続損失3となっていますが、手動で5、それ以上と数えてみました。何が原因なのでしょうか?
 

edutak:
Тестер пишет, непрерывный проигрыш 3, а я вручную насчитал 5, потом еше больше. Из-за чего такое может быть?

少なくともテスターからのレポートがなければ、理解できない。

 
Vladislav Andruschenko:

少なくともテスターからのレポートがなければ、理解できない。

 
edutak:

ロット 0.1

テスターが嘘をついているのでは?

 
edutak:
レポートはStrategyTesterレポートhtmlです。
 
Vladislav Andruschenko:
レポートはStrategyTesterレポートhtmlです。
添付できない...
 
edutak:
添付できない...
アーカイブしてください。
 
Alexey Viktorov:
アーカイブしてください。
これです。
ファイル:
 



インジケータを順次確認していくと、if {}の後ろのサブルーチンでバウンスしており、その中にWがないことが判明しました。ここでは、そのポイントを明確にするために、簡略化したコードを紹介します。

//--- 入力パラメータ

入力 int w=10;

//---

{

int i;

//---

int co=0;

for(i=0;i<=w;i++)if(w==10){co++;Alert(co);}

//--- 次の呼び出しのために prev_calculated の値を返す

return(rates_total);

}

結果(arlet)。

2016.05.30 00:45:14.064 1 (ユーラスド,H1) 11

2016.05.30 01:10:35.972 1 (ユーラスド,H1) 10

2016.05.30 00:45:14.064 1 (ユーラスド,H1) 1

ルール:括弧内の式が真であれば、演算子1が実行される。

コード中:operator1がALWAYSで実行される。

if()は括弧内の条件が真であるときに一度だけ動作するようにすればいいと思います。しかし、実際にはチェックごとに発生するため、{}内の式はすべて各ステップで実行され、マシンタイムを噛んでしまう。

質問:ループ中にCO変数が0から11に成長したのはなぜですか?なぜ、ステップごとにAlertが発動するのですか?

ファイル:
1.ex5  7 kb
1.mq5  2 kb
理由: