0

最適化期間を取得したい(利用データチェック時)

まずはこんな感じでやってみました。

datetime dtFrom;
datetime dtTo;
void OnInit(){
  dtFrom = Time[0]; //from date
}
double OnTester(){
  dtTo = Time[0]; // to date
}

2005/01/01 - 2005/01/29ただし、ストラテジー テスター UI ドロップボックスで設定しても問題があります。

dtFrom は2005/01/09、dtTo は2005/01/28Script になります。

01-08は休日、29日は土曜日のため、データの計算はありません。

また、予算が不足している場合は実行が停止し、dtTo不足が発生した日付です。

ユーザーがストラテジー テスター ボックスで設定した日付を取得する簡単な方法はありますか??

4

1 に答える 1

1

ユーザーがストラテジー テスター ボックスで設定した日付を取得する簡単な方法はありますか??

はい、ありますが、GUI フォーム フィールドからデータを取得していません:

メタトレーダー ターミナルの「時間の流れ」には他のメカニズムがあります ([x] 最適化がオンの場合、StrategyTester ではより複雑になります)。プラットフォームは単純に時間をエミュレートし、「内部的に見える」日時は、エミュレートされた QUOTE-stream によって運ばれるものだけです。

スライディング ウィンドウ テストの開始/終了制限を挿入するための複雑なトリックがいくつかありましたが、パラメーターを介して同様のユース ケースが使用OnTester(){...}されましたが、GUI フォーム フィールドを「見る」ことはありません。

この「内部」datetime自己スニファーはうまく機能します。

datetime aGloballyAccessibleSessionFirstVisibleDATETIME,
         aGloballyAccessibleSessionLast_VisibleDATETIME;

int OnTick(){

static bool is1stQUOTE = True;
       if ( is1stQUOTE ){                                             // .TEST
            is1stQUOTE = False;                                       // .LOCK
            aGloballyAccessibleSessionFirstVisibleDATETIME = Time[0]; // .SET
       }
       /**/ aGloballyAccessibleSessionLast_VisibleDATETIME = Time[0]; // .UPD

       ...

}

double OnTester() {
       ...
       Print( "First QUOTE was on (",
               aGloballyAccessibleSessionFirstVisibleDATETIME,
              ")",
              "Last QUOTE was on (",
               aGloballyAccessibleSessionLast_VisibleDATETIME
              ")"
               );
}
于 2018-04-05T12:01:23.270 に答える