Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих" - страница 3

 

После некоторых трудностей тестер отработал полностью и выдал результаты, совпадаюшие с заявленными результатами в статье.

Про трудности. Закачка истории происходила очень долго (55 минут при скорости 8 Мбит/сек), с несколькими прерываниями, пришлось заново стартовать тестер 2 раза. В конце концов тестер завис. Закрыл МТ 5, а вот открыть его вновь так и не смог. Пришлось полность перезагрузить систему. После этого МТ5 спокойно загрузился, и на удивление, тестер полностью отработал (около 2 минут) и выдал все результаты, заявленные в статье (параметры тестирования указывал точно такие, как указано в статье). И далее тестирование на разных таймфреймах проходило без проблем.

Резюме. Статья классная. Советник работоспособный. Буду рыть дальше.

 
интересно, почему вызовы ArraySetAsSeries находятся в теле OnTick(), а не OnInit() ?
Документация по MQL5: Операции с массивами / ArraySetAsSeries
Документация по MQL5: Операции с массивами / ArraySetAsSeries
  • www.mql5.com
Операции с массивами / ArraySetAsSeries - Документация по MQL5
 
Также это лучшее место для получения хэндлов технических индикаторов, которые будут использоваться (в нашем случае это индикаторы ADX и Moving Average).

 

Почему бы не сказать в этом месте что такое хэндл технических индикаторов?

Что это? идентификатор индикатора?

 
vas:

Почему бы не сказать в этом месте что такое хэндл технических индикаторов?

Что это? идентификатор индикатора?

Хендл индикатора это идентификатор потока в котором расчитывается индикатор, вызывая хендл вы обращаетесь к потоку данных.

зы а функция которая возвращает хендл этот самый поток создаёт(запускает). Собственно поэтому разработчики не рекомендуют обращатся к потоку сразу после его создания так как он может быть ещё в процессе обсчёта данных.

 

Отличная статья! Четко структурирована и легко понятна.

Вызывает сомнение выражение return в первом условии "if" в "OnInit()". Возможно, параметр должен быть -1, что угодно, но не 0, или условие if является избыточным.

 

Попробовал реализовать эксперт из статьи https://www.mql5.com/ru/articles/100  на классах стандартной библиотеки.

То что получилось выкладываю.

К сожалению, идентичной торговли не получилось, так как код из статьи имеет ошибки.

Файл ExpertADX-MA.mq5 нужно положить в Experts\Advisors.                                        - это эксперт

Файл SignalADX-MA.mqh нужно положить в Include\Expert\Signal.                                  - это класс торговых сигналов

Файл TrailingFixedPips.mqh нужно положить в Include\Expert\Trailing (с заменой).          - файл из стд. поставки с небольшими изменениями

Файл Expert.mqh нужно положить в Include\Expert (с заменой).                                     - файл из стд. поставки с небольшими изменениями

Изменения стд. поставки пройдут в следующем билде.

PS: В эксперте "прикручен" трал (по просьбам трудящихся).

Для "откручивания", нужно закомментить строку:

      if(!ExtExpert.InitTrailing(new CTrailingFixedPips)) return(-3);

в файле ExpertADX-MA.mq5.

Пошаговое руководство по написанию MQL5-советников для начинающих
Пошаговое руководство по написанию MQL5-советников для начинающих
  • 2010.06.09
  • Samuel
  • www.mql5.com
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
Файлы:
 

Ошибки в коде эксперта в статье Пошаговое руководство по написанию MQL5-советников для начинающих исправлены.

Пожалуйста скачайте обновленный вариант кода советника.
 

В приведенном коде советника

Динамический массив   double maVal[] объявлен в глобальной области.

а не в области функции  void OnTick()

Предположим советник простоял сутки в работающем режиме.

Вопрос:  Что станет с памятью выделенной под динамический массив?  Как быстро она забьется мусором?

Или иными словами сформулирую вопрос: В этом случае  происходит утечка памяти? 

 

Спасибо за статью!

 
Я очень благодарен за эту статью, она мне очень помогла. После написания кодов для советника я нажал кнопку отладки и мне сказали, что у меня 10 ошибок, в вашей статье нет никакой информации для исправления этих ошибок. Как мне решить эту проблему, пожалуйста, напишите как можно скорее?