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

 

Попробовал реализовать эксперт из статьи 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()

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

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

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


 

Мы решили хранить значения Stop Loss и Take Profit в определенных ранее переменных STP и TKP. Почему мы это сделали?

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

Мы должны быть уверены в том, что наш советник будет корректно работать со всеми брокерами. Для определения точности цены котировок по текущему символу графика можно воспользоваться.

Удивительный "подход" используют уважаемые и опытные программисты для "решения проблемы" 5-тизнака. А теперь этот "подход" ещё и культивируется среди новичков, в учебной, можно сказать, литературе.

Приведённый автором "подход" полностью сводит на нет всё преимущество 5-тизнака. Вместо того, чтобы объяснить новичку, что введение 5-тизначной котировки даёт возможность установить, например, тейк-профит не 10 пунктов, а 10,5. А также объяснить, что при использовании советника на 5-тизнаке надо указывать тейк-профит не 10 пунктов, а 100. Вместо таких объяснений в программный код вводятся строки, которые программно не дают возможность использовать преимущества 5-тизначных котировок.

"Мы должны быть уверены в том, что наш советник будет корректно работать со всеми брокерами". Ну убедились и дальше что? Как теперь использовать преимущество 5-тизнака, если программно советник это преимущество "приговорил исправно служить".

 
abolk:

Удивительный "подход" используют уважаемые и опытные программисты для "решения проблемы" 5-тизнака. А теперь этот "подход" ещё и культивируется среди новичков, в учебной, можно сказать, литературе.

Приведённый автором "подход" полностью сводит на нет всё преимущество 5-тизнака. Вместо того, чтобы объяснить новичку, что введение 5-тизначной котировки даёт возможность установить, например, тейк-профит не 10 пунктов, а 10,5. А также объяснить, что при использовании советника на 5-тизнаке надо указывать тейк-профит не 10 пунктов, а 100. Вместо таких объяснений в программный код вводятся строки, которые программно не дают возможность использовать преимущества 5-тизначных котировок.

"Мы должны быть уверены в том, что наш советник будет корректно работать со всеми брокерами". Ну убедились и дальше что? Как теперь использовать преимущество 5-тизнака, если программно советник это преимущество "приговорил исправно служить".

10,5 - это тот еще аргумент :)

А стандартизация на 4 знака вполне объяснима, если учесть необходимость универсальной работы на счетах с разной точностью.

Возможно если все брокеры будут использовать счета с 5 знаками такой обработки не понадобится (хотя для универсальности кода наличие такого блока не повредит) ИМХО.

А вот как это не дает воспользоваться преимуществами 5-го знака я понять не могу.

Точность данного блока вполне позволяет пользоваться 1-м четырехзначным пунктом (условно "стандартным"), в пересчете на пятизнак выйдет 10 пипсов.

PS

Не думаю большинство брокеров позволят нормально использовать меньшее значение. Даже если позволят и в этом будет необходимость из положения можно будет выкрутиться (пусть даже применив такие странности как 0,1-0,9).

 
Interesting:

10,5 - это тот еще аргумент :)

А стандартизация на 4 знака вполне объяснима, если учесть необходимость универсальной работы на счетах с разной точностью.

Возможно если все брокеры будут использовать счета с 5 знаками такой обработки не понадобится (хотя для универсальности кода наличие такого блока не повредит) ИМХО.

А вот как это не дает воспользоваться преимуществами 5-го знака я понять не могу.

Точность данного блока вполне позволяет пользоваться 1-м четырехзначным пунктом (условно "стандартным"), в пересчете на пятизнак выйдет 10 пипсов.

PS

Не думаю большинство брокеров позволят нормально использовать меньшее значение. Даже если позволят и в этом будет необходимость из положения можно будет выкрутиться (пусть даже применив такие странности как 0,1-0,9).

 

При 4-хзнаках цена изменяется на 0,0001, при 5-ти - на 0,00001.

На 4-хзнаке нет возможности сделать возможным закрыться по тейку через 10,5 стандартных пунктах, а на 5-тизнаке такая возможность есть.

Если программно использовать вышеуказанный блок, то при использоварнии советника на 5-тизнаке возможность изменить, например, тейк на 10,5 стандартных пункта будет отсутствовать. Для скальперов это важно.

Чтобы советник корректно работал на 4-х и 5-тизнаке надо при округлениях программно учитывать значность котировок, а во входных параметрах при задании, например, тейка, вручную учитывать, что 10 стандартных пункта записываются как 100.

В противном случае, если использовать такие блоки, то при переходе с к5-тизнака на 4-хзнак, что придётся делить?

Это же входные параметры, зачем с ними производить "странные" операции преобразования

 
abolk:

На 4-хзнаке нет возможности сделать возможным закрыться по тейку через 10,5 стандартных пунктах, а на 5-тизнаке такая возможность есть.

Вы торгуете? Или так, потеоритезировать захтелось?

Очень слабо представляю себе советника, для которого изменение ТП на 0.5 пункта сильно скажется на результатах. Для 99% советников проще и удобнее указывать все значения в 4-хзначных пунктах. А оставшийся 1% нет смысла описывать в общеобразовательных статьях.

 
komposter:

Вы торгуете? Или так, потеоритезировать захтелось?

Очень слабо представляю себе советника, для которого изменение ТП на 0.5 пункта сильно скажется на результатах. Для 99% советников проще и удобнее указывать все значения в 4-хзначных пунктах. А оставшийся 1% нет смысла описывать в общеобразовательных статьях.

+1.

Дело не в том с какой точностью торговать, а в том с какой будет звучать эти самые 10,5 и как это будет всех путать (особо начинающих трейдеров).

Пипс по определению самая малая единица изменения цены. Может я не прав?

Да и советников торгующих с ТП и СЛ в 5 пятизначных пункта (0,5 стандартного) вряд ли можно будет часто встретить в реальной жизни.

Я бы даже определил число таких экспертов как 0,1-0,01% от общего числа.

PS

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



 
abolk:

Приведённый автором "подход" полностью сводит на нет всё преимущество 5-тизнака. Вместо того, чтобы объяснить новичку, что введение 5-тизначной котировки даёт возможность установить, например, тейк-профит не 10 пунктов, а 10,5. А также объяснить, что при использовании советника на 5-тизнаке надо указывать тейк-профит не 10 пунктов, а 100. Вместо таких объяснений в программный код вводятся строки, которые программно не дают возможность использовать преимущества 5-тизначных котировок.

Полностью поддерживаю автора данного замечания.

Кому надо, тот и до 3-го знака себе округлит. Но делать это в общем случае - грубая ошибка.

Чем выше точность - тем лучше, и сводить ее на нет для всех какими-то своими сугубо субъективными взглядами практического использования не стоит.

P.S. В общем случае SL и TP задаются не в абсолютных значениях (как это везде принято), а в относительных. Тогда проблемы пипсов, 5-и знаков, пипсодолларов и остальной надуманной хрени отпадают сами собой.

 

abolk,  hrenfx,   о чём, собственно говоря, спор-то? Читаем внимательно название статьи: "... для начинающих".  Статья полностью оправдывает своё предназначение, как названием, так и содержанием. Поверьте на слово, для начинающих глубоко по барабану, какова точность округления у эксперта, основной подход: "нам бы с написанием советника разобраться". Пусть хоть 2 знака, хоть 7 знаков. Лично для меня, как для начинающего, фишка с "округлением" до 4 знаков (правда, в другой статье) оказалась очень полезной, раскрыв один из приёмов программирования. А с набором опыта высококвалифицированые специалисты сами смогут решить, с какой точностью производить вычисления/торговлю, и обсуждаемая статья никак не сможет им в этом помешать. Вам же эта статья никак не помешала :) Так и другие: "дорастут до вашего уровня - сами разберутся".

Ещё раз обращаю внимание: автор статьи не навязывает своё видение вопроса и не ставит на обсуждение ценность использования 4- или 5-знака. Автор всего лишь помогает новичкам освоить первоначальные шаги программирования на MQL5, с использованием тех или иных приёмов программирования. 

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