Как настроить период времени в исходном коде MQL4?

Я использую MQL4.

В настоящее время я использую [Expert Advisor]-s в MT4.StrategyTester и устанавливаю период времени с помощью встроенных элементов графического интерфейса раскрывающегося календаря.

Что я хочу сделать, так это настроить период времени прямо в исходном коде MQL4.

Если это реализовано, например, я могу сравнить результат

'from 2011/01-to 2011/12' 

to

'from 2012/01-to 2012/12'

и так далее.


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


Ответы (1)


Существует простое решение этого требования, даже с добавленной стоимостью для полностью автоматизированной крупномасштабной оптимизации гиперпараметров в указанном инструменте MT4.StrategyTester с использованием предложенной пары параметров ( aStartFromDATE и aRunTillDATE ) в виде итерируемого кортежа, который может быть использован в перекрестных проверках надежности TradingStrategy его релиз-кандидатов по некоторому быстрому/скользящему календарю окно времени.

extern datetime aStartFromDATE = D'2010.01.01 00:00';
extern datetime   aRunTillDATE = D'2345.01.01 00:00';

void OnTick(){
     if (  Time < aStartFromDATE
        || Time >   aRunTillDATE
           ){
           IgnoreTicksOutsideTheGivenPeriodOfTime();
           return;
     }
  // SURE TO BE INSIDE THE GIVEN ( MT4.STRATEGY/TESTER ITERABLE ) PERIOD OF TIME
     ...
     ..
     .
}
void IgnoreTicksOutsideTheGivenPeriodOfTime(){
  // Ignore, but still may do execute some utility service during a void run
}

Будьте осторожны с различными областями поддержки синтаксиса:

Можно также быть осторожным с вариантами использования, которые включают ограничения StrategyTester для некоторых мощных конструкторов нового синтаксиса:

PrintFormat() является одной из таких неподдерживаемых частей внутри StrategyTester во время оптимизации гиперпараметров.

Функция PrintFormat() не работает при оптимизации в тестере стратегий.

person user3666197    schedule 10.11.2016
comment
Большое спасибо!! Это отличный совет, чтобы установить дату и время как внешний. Это работает на данный момент. Однако как я могу подметать периоды и оптимизировать? В «экспертных свойствах» значения StartFromDATE и aRunTillDATE нельзя выбрать. Я хочу установить 2012/04/01-2012/04/31,2012/05/01-2012/05-31,2012/06/01-2012/06/30,,,, и так далее, чтобы увидеть результаты по каждому периоду. И спасибо за предупреждение о WIld World of MQL4. Я так взволнован. - person whitebear; 11.11.2016
comment
Рад, что предложения оказались полезными. Не стесняйтесь нажимать «за» и, наконец, щелкать значок, чтобы принять ответ — так StackOverflow поощряет пользователей демонстрировать полезность. Для варианта использования оптимизации выбор становится активным после отметки [ x ] в флажке оптимизации в диалоговой панели графического интерфейса пользователя MT4.StrategyTester. - person user3666197; 11.11.2016
comment
Спасибо, я поставил кнопку Anser, но не могу нажать стрелку вверх, это из-за того, что моя репутация слишком коротка. Извините, я могу быть слишком новичком для stackoverflow. Однако, даже если я нажму кнопку оптимизации, выбор не станет активным img. В случае, если я хочу развернуть календарь по месяцам. Что мне нужно сделать больше?? - person whitebear; 11.11.2016
comment
Я нашел способ установить данные в исходном коде. Сделать массив для набора данных времени. datetime StartFromDate[0] = D'2345.01.01 00:00'; datetime StartFromDate[1] = D'2345.02.01 00:00'; datetime StartFromDate[2] = D'2345.03.01 00:00'; тогда я могу использовать такое время StartFromDate[i] и изменить переменную в свойстве оптимизации. - person whitebear; 11.11.2016