Как получить период оптимизации из скрипта

Я хотел бы получить период оптимизации (когда проверяются данные об использовании)

Сначала пробовал так.

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

Однако у него есть проблема, даже если я установил 2005/01/01 - 2005/01/29 в раскрывающемся списке пользовательского интерфейса тестера стратегий.

dtFrom будет 2005/01/09, dtTo будет 2005/01/28 в скрипте.

Потому что 01-08 — выходной, а 29 — суббота, поэтому расчет данных не производится.

А также, если у него нехватка бюджета, запуск останавливается, и dtTo является датой, когда возникает нехватка.

Есть ли простой хороший способ получить дату, которую Пользователь установил в окне тестера стратегий??


person whitebear    schedule 04.04.2018    source источник


Ответы (1)


Есть ли простой хороший способ получить дату, которую Пользователь установил в окне тестера стратегий??

Да, есть, но данные не извлекаются из полей GUI-формы:

"Поток времени" терминала MetaTrader имеет другую механику (в StrategyTester более сложная, если включена оптимизация [x]). Платформа просто эмулирует время, и единственными «внутренне видимыми» датами и временем являются те, которые передаются эмулируемым потоком QUOTE.

Несмотря на то, что были некоторые сложные приемы для ввода начальных/конечных ограничений для тестирования скользящего окна и аналогичных вариантов использования с помощью параметров, 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
              ")"
               );
}
person user3666197    schedule 05.04.2018