Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 674

 
Leo59:

У меня что-то вывести с помощью Print() в журнал тестера никак не получается. А как Вы это делаете ?

Вот код OnInit() от советника:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   SymbolSelect("EURJPY",true);
   Print(__FUNCTION__,", ",TimeToString(TimeCurrent()));
   SymbolSelect("USDJPY",true);
//---
   return(INIT_SUCCEEDED);
  }


Дальше ставлю точку останова (шаг 1) и запускаю тестирование на истории (шаг 2):

OnInit() 

 

и в тестере получаю результат:

2016.11.23 13:02:24.191 2016.06.13 00:00:00   OnInit, 2016.06.13 00:00
 

Vladimir Karputov:

Дальше ставлю точку останова (шаг 1) и запускаю тестирование на истории (шаг 2):

Странно, но у меня эта голубая кнопка, на которую у Вас указывает цифра "2", не активна. Может это быть от того, что я в MT4 ?
 
Но, тем не менее, если уж написано такое:


Существуют ограничения работы некоторых функций в тестере стратегий клиентского терминала.

Функции Print() и PrintFormat()

Для увеличения быстродействия при оптимизации параметров советника функции Print() и PrintFormat() не выполняются. Исключением является использование этих функций внутри обработчика OnInit(). Это позволяет облегчить поиск причин ошибок при их возникновении.


то почему функции Print() внутри обработчика OnInit() не работает как обычно ?

И вообще, по поводу других пользовательских функций в init() в режиме оптимизации ?
 
Leo59:
Странно, но у меня эта голубая кнопка, на которую у Вас указывает цифра "2", не активна. Может это быть от того, что я в MT4 ?

Да, именно по этому я могу свободно тестировать любые советники на ИСТОРИИ, то есть выбирать промежуток, скажем с 2016.06.20 по 2016.11.11 и спокойно, шаг за шагом проводить отладку, наблюдать изменение переменных, а Вы не можете этого делать.

Так стоит ли продолжать сидеть на старом терминале, поддержка которого завершена? Или может уже стоит использовать современный терминал MetaTrader 5? Ведь в MetaTrader 5 уже и хеджирование появилось:  Торговая платформа MetaTrader 5 получила хеджирование.

 
Vladimir Karputov:

Да, именно по этому я могу свободно тестировать любые советники на ИСТОРИИ, то есть выбирать промежуток, скажем с 2016.06.20 по 2016.11.11 и спокойно, шаг за шагом проводить отладку, наблюдать изменение переменных, а Вы не можете этого делать.

Так стоит ли продолжать сидеть на старом терминале, поддержка которого завершена? Или может уже стоит использовать современный терминал MetaTrader 5? Ведь в MetaTrader 5 уже и хеджирование появилось:  Торговая платформа MetaTrader 5 получила хеджирование.

Почему я могу спокойно заниматься отладкой в МТ4, и спокойно, шаг за шагом, проводить отладку, наблюдать изменение переменных? Что я не так делаю?
 
Artyom Trishkin:
Почему я могу спокойно заниматься отладкой в МТ4, и спокойно, шаг за шагом, проводить отладку, наблюдать изменение переменных? Что я не так делаю?
ЧТО Вы делаете неправильно: очень быстро читаете или намеренно пропускаете текст. 
 
Уважаемые!!!!

Вопрос по существу:

почему функции Print() внутри обработчика OnInit() не работает как обычно ? И вообще, что по поводу других пользовательских функций в init() в режиме оптимизации ?

 
Leo59:
Уважаемые!!!!

Вопрос по существу:

почему функции Print() внутри обработчика OnInit() не работает как обычно ? И вообще, что по поводу других пользовательских функций в init() в режиме оптимизации ?

Выше уже всё объяснено. Работало и работает. А Вам показал пример.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих

Vladimir Karputov, 2016.11.23 12:07

Вот код OnInit() от советника:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   SymbolSelect("EURJPY",true);
   Print(__FUNCTION__,", ",TimeToString(TimeCurrent()));
   SymbolSelect("USDJPY",true);
//---
   return(INIT_SUCCEEDED);
  }


Дальше ставлю точку останова (шаг 1) и запускаю тестирование на истории (шаг 2):

OnInit() 

 

и в тестере получаю результат:

2016.11.23 13:02:24.191 2016.06.13 00:00:00   OnInit, 2016.06.13 00:00

 
Vladimir Karputov:

Выше уже всё объяснено. Работало и работает. А Вам показал пример.


Владимир, в Вашем примере с точкой останова и запуском тестирования из MetaEditor, а не из тестера в терминале является не стандартным.

Повторюсь:

1. Почему функции Print() внутри обработчика OnInit() не работает как обычно ?

2. Как работают другие пользовательские функции в init() в режиме оптимизации ?

 
Leo59:
Владимир, в Вашем примере с точкой останова и запуском тестирования из MetaEditor, а не из тестера в терминале является не стандартным.

Повторюсь:

1. Почему функции Print() внутри обработчика OnInit() не работает как обычно ?

2. Как работают другие пользовательские функции в init() в режиме оптимизации ?

Такое ощущение, что Вы не разу не включали терминал.

Вот код OnInit() от советника:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   SymbolSelect("EURJPY",true);
   Print(__FUNCTION__,", ",TimeToString(TimeCurrent()));
   SymbolSelect("USDJPY",true);
//---
   return(INIT_SUCCEEDED);
  }

По шагам. Шаг первый - запускаем тестер из терминала (одиночный проход), тестирование на истории, с визуализацией:

Шаг 1

В тестере стратегий получаем результат:

Шаг 2

Причина обращения: