[Решено] [MQL5] События терминала и свой журнал

 
Здравствуйте все!

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

Прошу подсказать, через что разумнее реализовывать:
OnTrade, OnTradeTransaction, OnTimer или OnTick?

Сейчас вставил в OnTick, но понимаю, что не самый лучший вариант: терминал с дюжиной роботов бывает подвешивается :( Видимо, из-за частых обращений к диску.
 
kofesutra:
Здравствуйте все!

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

Прошу подсказать, через что разумнее реализовывать:
OnTrade, OnTradeTransaction, OnTimer или OnTick?

Сейчас вставил в OnTick, но понимаю, что не самый лучший вариант: терминал с дюжиной роботов бывает подвешивается :( Видимо, из-за частых обращений к диску.

Мой выбор: OnTradeTransaction. Вы сможете отлавливать:

DEAL_ENTRY_OUT

Выход из рынка

DEAL_ENTRY_INOUT

Разворот

DEAL_ENTRY_OUT_BY

Закрытие встречной позицией


и кроме этого: получать для закрытых сделок (не для всех, конечно) комиссию, своп, прибыль, тип (BUY или SELL). Кроме того теперь можно (с билда 1625) определять было ли это закрытие по Take profit или по Stop loss.

 
Vladimir Karputov:

Мой выбор: OnTradeTransaction. 



Владимир, спасибо Вам за рекомендацию! Пойду перетачивать :)

 
kofesutra:

Владимир, спасибо Вам за рекомендацию! Пойду перетачивать :)

Только не забудьте о том что событие OnTradeTransaction не гарантированно.

 
Alexey Oreshkin:
Только не забудьте о том что событие OnTradeTransaction не гарантированно.


Этот миф давно развенчан. Нужно чаще форум читать :)

 
Vladimir Karputov:

Мой выбор: OnTradeTransaction. 


Владимир, в очередной раз благодарю Вас! Переделал, вроде работает как надо ;)

 
Vladimir Karputov:

Этот миф давно развенчан. Нужно чаще форум читать :)


Что именно развенчано?
Как это событие сможет прийти если в момент его "прихода" оборвался инет, а потом вновь появился. Событие всё равно придёт?

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

 
Alexey Oreshkin:

Что именно развенчано?
Как это событие сможет прийти если в момент его "прихода" оборвался инет, а потом вновь появился. Событие всё равно придёт?

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

Не проверял на разрыв связи, но основываясь на этом (из документации)

  • обработка торгового запроса;
  • изменение открытых ордеров;
  • изменение истории ордеров;
  • изменение истории сделок;
  • изменение позиций.


мне кажется что даже после обрыва связи эти изменения будут обработаны.

 
Alexey Viktorov:

Не проверял на разрыв связи, но основываясь на этом (из документации)

мне кажется что даже после обрыва связи эти изменения будут обработаны.


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

 
Alexey Oreshkin:

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


Я же говорил выше: чаще нужно читать форум :) . Миф о якобы не гарантированном onTradeTRansaction давно развенчан. И если внимательно почитаете справку, то уже и в справке по OnTradeTransaction НЕТ слов о негарантированной доставке.

 
Alexey Oreshkin:

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

Вот об этом и говорил барабашка что это уже давно развенчано. И из документации эта оговорка удалена.

Плюс ко всему, вопрос поставлен так

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

[Решено] [MQL5] События терминала и свой журнал

kofesutra, 2017.07.10 11:57

Здравствуйте все!

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

Прошу подсказать, через что разумнее реализовывать:
OnTrade, OnTradeTransaction, OnTimer или OnTick?

Сейчас вставил в OnTick, но понимаю, что не самый лучший вариант: терминал с дюжиной роботов бывает подвешивается :( Видимо, из-за частых обращений к диску.

соответственно для этих целей смело можно использовать OnTradeTransaction()

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

Причины очень весомые

1. Нет необходимости следить за позициями проверяя их состояние, закрылась-ли.

2. Из структур доступны проверка причины срабатывания события и большинство свойств необходимых для записи в журнал.