Как работать с событиями класса CExpert ?

 

Всех приветствую.

Такой вопрос - где почитать, как работать с событиями класса CExpert  ?  В частности, меня интересует событие TradeEventOrderTriggered ?

Я сперва хотел использовать событие OnTradeTransaction(), но в этом случае мне надо анализировать события, разбираться, что произошло, а оказывается, уже все готовое есть в классе CExpert !

Как я понял, сперва надо вызвать метод WaitEvent(TRADE_EVENT_ORDER_TRIGGER) (его можно вызывать прямо в конструкторе эксперта ? ), и после этого - должна начать вызываться функция

чтобы эксперт знал, что сработал отложенный ордер ?  Какие еще действия надо выполнить ? Где об этом почитать ?

 
Laryx: меня интересует событие TradeEventOrderTriggered ?
 Поиском по сайту пользовались?
 

Yedelkin:
 Поиском по сайту пользовались?

Ну а как же ?

Поиск по ключевому слову  "TradeEventOrderTriggered" дает в данный момент четыре ссылки - две из них на эту тему.  В третьей - ссылка на описание класса CExpert, где эта функция описывается среди прочих, в четвертой - отдельное описание самой функции. Причем, в этом описании даже нет упоминания о функции WaitEvent(), которую, видимо, обязательно необходимо вызывать, чтобы события о срабатывании отложенных ордеров начали приходить в СExpert.

Лучше всего бы найти код работающего советника, в котором используется этот механизм событий, чтобы поглядеть, что я упустил. К сожалению, код всех советников, на которые я глядел - это простая "калька" с MQL4-кода, в лучшем случае, с использованием классов типа COrderInfo или СTrade - которые просто инкапсулируют интерфейс работы с ордерами или торговыми операциями, обработки событий в них нет.

 

 

 
Laryx:

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

 Сгенерируйте простой советник через Мастер MQL5, и изучайте.

Мастер MQL5: Создание эксперта без программирования
Мастер MQL5: Создание эксперта без программирования
  • 2010.12.15
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы хотите быстро проверить торговую идею, не тратя времени на программирование? Выберите в "Мастере MQL5" нужный тип торговых сигналов, подключите модули сопровождения позиций и управления капиталом - на этом вся работа закончена. Создайте свои реализации модулей или закажите их через сервис "Работа" - и комбинируйте новые модули с уже существующими.
 

Laryx:

Yedelkin:

Laryx: Такой вопрос - где почитать, как работать с событиями класса CExpert  ? 

  Поиском по сайту пользовались?

 Ну а как же? Поиск по ключевому слову  "TradeEventOrderTriggered" дает в данный момент четыре ссылки - две из них на эту тему.   

 Ну вот Вы сами и ответили на свой же вопрос. Если на специализированном сайте нет нужной информации по искомой теме - значит, "почитать негде".
 
Lizar:

 Сгенерируйте простой советник через Мастер MQL5, и изучайте.

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

Идея - на мой взгляд, очень правильная. События типа срабатывания отложенного ордера должны обрабатываться именно в классе CExpert.  Мне вобще классы Стандартной бибилотеки кажутся очень логичными и полезными. Причем, и документация классов - также на весьма высоком уровне. По крайней мере, все тривиальные вещи - очень хорошо расписаны, и проиллюстрированы.  Но, когда требуется использовать редкие и тонкие вещи - все-таки нехватка документации начинает ощущаться.

Еще хорошо бы, чтобы отладчик работал через Тестер Стратегий, на исторических данных...  

 

 

 

 

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

Исследуем код дальше. 

(И ждем ответа поддержки - может быть, еще какие-то действия надо выполнить).  

 

 

Вроде как событие TradeEventOrderTriggered() сейчас работает. А вот TradeEventOrderPlaced() никак не могу заставить работать. Ау, представители поддержки, растолкуйте, как работать с событиями в СExpert ?! 

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