Вопросы по Мастеру MQL5 и стандартной библиотеке торговых классов - страница 6

 
uncleVic:
Мастер и классы для него переведены пока в "режим сопровождения". Для создания простейших мультивалютников классы уже приспособлены (сейчас не готов, а позже положу сюда примерчик).

 Сварганил мультивалютник из классов на базе сгенерированного мастером. Но при этом пришлось подкорректировать класс EXPERT.

В нем в самом начале в методе INIT()  идёт проверка на рабочий символ ну и соотвественно мультики не идут. Проверку убрал и всё пошло. Посмотрите будет время - идея хотя бы та ???

 

if(symbol!=Symbol() || period!=Period()) 

на

 if(period!=Period())

Файлы:
Master01_ML.mq5  14 kb
 

Здравствуйте, модератор!

У меня такой вопрос:

Мастер MQL5 имеет в свое составе 20 модулей сигналов, которые производят анализ на предмет обнаружения дивергенций, перекупленности, перепроданности и др. Не подскажите, можно ли заимствовать из этой библиотеке любой такой модуль сигналов от Мастера MQL5 для проведения анализа того же самого, но от индикатора пользовательского, собственной разработки, и что для этого нужно сделать? Большая для этого потребуется доделка (переделка) или достаточно чего-то изменить в модуле (его копии) из стандартной поставки?

Заранее спасибо!

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

ForexMoneyMaker:

Не подскажите, можно ли заимствовать из этой библиотеке любой такой модуль сигналов от Мастера MQL5 для проведения анализа того же самого, но от индикатора пользовательского, собственной разработки, и что для этого нужно сделать? Большая для этого потребуется доделка (переделка) или достаточно чего-то изменить в модуле (его копии) из стандартной поставки?

Хороший вопрос! И вот почему - действительно, можно минимальными переделками стандартных модулей создать новый модуль, просто вместо одного индикатора вставив другой. Я не знаю, когда мы сможем сами написать статью на эту тему, поэтому предлагаю:

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

 
Erm955:

 Сварганил мультивалютник из классов на базе сгенерированного мастером. Но при этом пришлось подкорректировать класс EXPERT.

В нем в самом начале в методе INIT()  идёт проверка на рабочий символ ну и соотвественно мультики не идут. Проверку убрал и всё пошло. Посмотрите будет время - идея хотя бы та ???

 

if(symbol!=Symbol() || period!=Period()) 

на

 if(period!=Period())

Идея та, но:

1. Изменять класс CExpert нехорошо. Хорошо от него наследоваться, переопределив метод Init(...).

2. Изменять класс CExpert не нужно. Нужно написать:

...
   if(!ExtExpert_EG.Init(Symbol(),PERIOD_M10,Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert_EG.Deinit();
      return(-1);
     }
   ExtExpert_EG.Symbol("NZDUSD");
...

Пока так...

 
ForexMoneyMaker:

Здравствуйте, модератор!

У меня такой вопрос:

Мастер MQL5 имеет в свое составе 20 модулей сигналов, которые производят анализ на предмет обнаружения дивергенций, перекупленности, перепроданности и др. Не подскажите, можно ли заимствовать из этой библиотеке любой такой модуль сигналов от Мастера MQL5 для проведения анализа того же самого, но от индикатора пользовательского, собственной разработки, и что для этого нужно сделать? Большая для этого потребуется доделка (переделка) или достаточно чего-то изменить в модуле (его копии) из стандартной поставки?

Заранее спасибо!


Загляните на англоязычный форум. тут
 
uncleVic:

Идея та, но:

1. Изменять класс CExpert нехорошо. Хорошо от него наследоваться, переопределив метод Init(...).

2. Изменять класс CExpert не нужно. Нужно написать:

Пока так...

  Надо переопределять метод Init(), исключив из него проверку на рабочий символ. А п.2 не подходит, так как в методе Init()  кроме всего прочего идет проверка на количество цифр Digits и если рабочий символ будет с 5 цифрами, а тестируемый с 3 цифрами, то будет ошибка со стопами/профитами. Я наследовался и переопределял. Теперь всё работает.

 Я, конечно, не большой специалист по ООП, но получается, что для того, чтобы гибко настраиывать программу на разное количество тестируемых символов, необходимо в программе тупо забить, например, 21 кусок кода (на все символы), а далее методом выбора из входных параметров проходить по тому или иному участку кода. Без ООП я делал то же самое, но все хэндлы и значения индикаторов в ините забивал в динамические массивы, а далее а ОнТике уже использовал эти массивы. То есть я пока не увидел преимуществ ООП?  

 P S.  Я не совсем точно написал. Надо столько забить кусков кода, сколько символов одновременно я собираюсь тестировать. Может есть возможность как то динамически подключать данные (хандлы и значения индикаторов) в ходе настройки на количество работающих одновременно символов. Проблема в том, что это всё надо подключать в Init, а использовать в OnTic/OnTimer. 

Файлы:
Master02_ML.mq5  20 kb
 
Erm955:

  Надо переопределять метод Init(), исключив из него проверку на рабочий символ. А п.2 не подходит, так как в методе Init()  кроме всего прочего идет проверка на количество цифр Digits и если рабочий символ будет с 5 цифрами, а тестируемый с 3 цифрами, то будет ошибка со стопами/профитами. Я наследовался и переопределял. Теперь всё работает.

 Я, конечно, не большой специалист по ООП, но получается, что для того, чтобы гибко настраиывать программу на разное количество тестируемых символов, необходимо в программе тупо забить, например, 21 кусок кода (на все символы), а далее методом выбора из входных параметров проходить по тому или иному участку кода. Без ООП я делал то же самое, но все хэндлы и значения индикаторов в ините забивал в динамические массивы, а далее а ОнТике уже использовал эти массивы. То есть я пока не увидел преимуществ ООП?  

 P S.  Я не совсем точно написал. Надо столько забить кусков кода, сколько символов одновременно я собираюсь тестировать. Может есть возможность как то динамически подключать данные (хандлы и значения индикаторов) в ходе настройки на количество работающих одновременно символов. Проблема в том, что это всё надо подключать в Init, а использовать в OnTic/OnTimer. 

 

 

 

Всё так. Кстати, спасибо за подсказку по п.2. Добавлю контроль и изменение кол-ва знаков.
 
uncleVic:
Всё так. Кстати, спасибо за подсказку по п.2. Добавлю контроль и изменение кол-ва знаков.

 Во чёрт! Только всё наладил и как обновился до 485 билда опять вылезла ошибка:

 

2011.08.08 17:13:04 Core 1 tester stopped because OnInit critical error
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00   OnInit: error initializing indicators
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00   CExpert::InitIndicators: error initialization indicators of money object
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00   CExpertBase::InitIndicators: parameters of setting are not checked
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00   CExpertBase::SetOtherSeries: changing of timeseries is forbidden
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00   CExpertBase::SetPriceSeries: changing of timeseries is forbidden
2011.08.08 17:13:04 Core 1 EURUSD,H4: history begins from 2009.01.02 04:00
2011.08.08 17:13:04 Core 1 EURUSD,H4: history cache reserved for estimated 4692 bars

Файлы:
Master02_ML.mq5  20 kb
 
Erm955:

 Во чёрт! Только всё наладил и как обновился до 485 билда опять вылезла ошибка:

Агенты обновились? Советник перекомпилирован в новой версии?
 
Rosh:
Агенты обновились? Советник перекомпилирован в новой версии?

В том-то и дело, что перекомпилировал! 

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