Прикручивание файла TrailingFixedPips.mqh к советнику - страница 2

 
vas:
А почему?

Возьмем в качестве примера,  советник  описанный вот здесь https://www.mql5.com/ru/articles/100  и восгоримся желанием  к нему прикрутить TrailingFixedPips.mqh

 Но этот TrailingFixedPips.mqh тащит за собой следующий класс:

Вот этой командой:   #include <Expert\ExpertTrailing.mqh>

 Хорошо посмотрим на ExpertTrailing.mqh

 А ExpertTrailing.mqh Тащит за собой еще 4 класса

#include <Trade\SymbolInfo.mqh>

#include <Trade\AccountInfo.mqh>

#include <Trade\PositionInfo.mqh>

#include <Indicators\Indicators.mqh>

 Что за цель у меня была? Мне всего лишь хотелось двигать стоп лосс за открытой позицией на каком то от нее расстоянии.

 Если я воспользуюсь TrailingFixedPips.mqh  То я сейчас потащу в советник, описанный вот здесь https://www.mql5.com/ru/articles/100  , коды, еще 6-ти классов.

 Не зная коды 6-ти классов  прикручивать TrailingFixedPips.mqh  нельзя.

 Нужны описания (по русски) этих классов.  

#include <Trade\SymbolInfo.mqh>
#include <Trade\AccountInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Indicators\Indicators.mqh>

Это стандартные классы, которые поставляются вместе с терминалом и достаточно хорошо описаны в справке.

Удобство использования

Удобство использования этих классов в том, что они существуют (должны) существовать во всех терминалах, что по идее позволяет программисту не заботиться о наличии этих классов и правильности их работы (второе - относительное утверждение).

Неудобство применения

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

Соответственно и все ошибки (возможные) существующие в этих классах также перейдут в создаваемый проект.

PS

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

 
вот потому и пишут люди свои простенькие алгоритмы, абсолютно не пользуясь громоздкими библиотеками. человек хотел двигать стоплос, в результате его код вырос минимум раз в 5 ).. аналогично и скрытые ошибки увеличили свое существование... проще выдрать необходимых несколько строк и заставить их работать
 
maryan.dirtyn:
вот потому и пишут люди свои простенькие алгоритмы, абсолютно не пользуясь громоздкими библиотеками. человек хотел двигать стоплос, в результате его код вырос минимум раз в 5 ).. аналогично и скрытые ошибки увеличили свое существование... проще выдрать необходимых несколько строк и заставить их работать

Тут ошибочки логические есть:

1. Его код не увеличился, поскольку классы находятся во внешних библиотеках;

2. Ошибки в этих классах очень быстро будут находиться (по сравнению с самопальными аналогами). исключение составят только более продуманные собственные решения...

PS

Я не говорю уже о моменте "стандартизации" кода. Для себя конечно можно придумать иные решения, но эти решения не будут стандартными и смогут работать только в определенных условиях...

 
vas:

Давайте. 

Вы можете досказать ответ на мой вопрос? :)

Досказываю...

Попробовал реализовать эксперт из статьи 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 (с заменой).                                     - файл из стд. поставки с небольшими изменениями

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

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

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

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

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

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

Ааа... Всю задачу решили :)

А то я чуть голову не сломал.

Interesting: Это стандартные классы, которые поставляются вместе с терминалом и достаточно хорошо описаны в справке.

чес слово не видел до этого. :) Куда смотрел?
 
Automated-Trading:
Пожалуйста скачайте обновленный вариант кода советника.

я так думаю, вы  и ExpertSignal исправили у себя?

в папке  C:\Program Files\MetaTrader 5\MQL5\Include\Expert       

у меня стоит вот с этой датой:    Revision 2010.07.12

 
vas:

я так думаю, вы  и ExpertSignal исправили у себя?

в папке  C:\Program Files\MetaTrader 5\MQL5\Include\Expert       

у меня стоит вот с этой датой:    Revision 2010.07.12

А что, компилятор даёт сообщение об ошибке?
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции - Документация по MQL5
 
uncleVic:
А что, компилятор даёт сообщение об ошибке?

Да.   показывает на CiClose          *m_close;   в SignalADX-MA.mqh

 

 

в ExpertADX-MA.mq5

в блоке:

int OnInit()
  {
//--- creation of all necessary objects
//создание всех необходимых объектов
   if(ExtExpert.Init(Symbol(),Period(),false,InpMagicNumber))
     {
      if(!ExtExpert.InitSignal(new CSignalADX_MA))        return(-2);
      if(!ExtExpert.InitTrailing(new CTrailingFixedPips)) return(-3);
      //--- ok
      return(0);
     }
//--- failed
// в случае неудачи
   ExtExpert.Deinit(); //
   return(-1);

  }


return(-1) стоят с возвращаемыми значениями  - 2 -3 - 1  ?

Назначение возвращаемых значений ?

или это просто по инерции поставил?