"ダミー "からの質問 - ページ 197

 
FiftyStars:

次のバーがいつ 開くか、つまりまだ形成されていないバーを判断するにはどうすればよいですか?

30分以上の時間枠の場合、予測の正答率は99.9%を超えるが、一般的には不可能である。
 

このようなリクエストをループさせて注文を出すことは可能なのでしょうか?)

      while(result.retcode!=TRADE_RETCODE_DONE)
      {
        if(OrderCheck(request,check))
        {
          OrderSend(request,result);
        }
        if((MQL5InfoInteger(MQL5_TESTING)||MQL5InfoInteger(MQL5_OPTIMIZATION)))break;
      }
 
G001: このようなリクエストをループさせて注文を出すことは可能なのでしょうか?)
好ましくない。例えば、TRADE_RETCODE_DONEの 代わりに、注文が行われたという答えをサーバーが 返すとします。そうすると、あなたのコードは同じようなリクエストでサーバーに過大な負荷をかけることになります。
 
Yedelkin:
好ましくない。例えば、TRADE_RETCODE_DONEの 代わりに、注文が入ったというレスポンスをサーバーが 返すとします。そうすると、あなたのコードは同じようなリクエストでサーバーに過大な負荷をかけることになります。

その方がいいのでしょうか?

      int ResBear = -1;
      while(ResBear == -1)
      {
        if(OrderCheck(request,check))
        {
          ResBear = OrderSend(request,result);
        }
        if((MQL5InfoInteger(MQL5_TESTING)||MQL5InfoInteger(MQL5_OPTIMIZATION)))break;
      }
 
G001: こっちの方がいいのかな?

ありえない。OrderSend()関数の説明を見てください。正常に実行された場合、まだリターンコードを確認する必要があることを教えてくれるはずです。つまり、リターンコードのリストを用意して、それぞれのコードに対するプログラムの動作を考えるという、最も面倒な方法を取らなければならない。つまり、「OrderSend() を送信し、リターンコードを取得し、受信したリトコードに反応 した」ということです。

2点目です。イベントモデルを使用する方が良い。つまり、1つのティックが到着したら関数の実行をループさせず、何回か失敗したら関数を終了して新しいティックを待ちます。

 
ありがとうございます。本当に面倒なので、試行回数をもっと制限することにします。
 
G001: ありがとうございます。本当に面倒なので、試行回数をもっと制限することにします。

どうせいつかやらなきゃいけないんだから :)自分の体験から言うと。

 
と思うのですが、今のところ知識が不足しています。
 

すみません、テスターではコンディションがないのに、ビジュアルモードのテスターではコンディションがあるようにするにはどうしたらいいのでしょうか?

プロパティリストでは これができず、なぜかこの条件ではうまくいきません。

if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_TESTER)==1 && MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

 
if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_TESTER)==1 && MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

この条件から、3つのシチュエーションで性能を発揮することがわかります。

1)テスターが動作している場合

2)テスターが動作していない場合

3)ビジュアルテスターが動作した場合

のように、関数が常に動作するようにするには、2番目の条件を削除して、1番目と3番目の条件を && で接続する必要がある場合がほとんどです。