краткая версия которую я использую, индикатор
#property description "iSpy" #property indicator_chart_window #property indicator_plots 0 #define RESET 0 //--- input long chartID=0;; // идентификатор графика-получателя события input ushort eventID=0; // идентификатор события //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, // размер массива price[] const int prev_calculated, // обработано баров на предыдущем вызове const int begin, // откуда начинаются значимые данные const double& price[] // массив для расчета ) { //--- проверка на новый бар //if(prev_calculated==rates_total) // return(rates_total); //---первый запуск инициализация if(prev_calculated==0) EventChartCustom(chartID,eventID,0,0.0,NULL); // чтобы робот не ждал новый бар, в release return(rates_total); else EventChartCustom(chartID,eventID,0,0.0,NULL); // посылает событие new tick //--- return(rates_total); }
Предлагаю делиться опытами и наблюдениями в этой ветке
Константин Груздев первый предложил на форуме идею Event spy
Это к ручной торговле? Сегодня более важна автоматическая торговля с использованием роботов или советников
получение с индикаторов
//+------------------------------------------------------------------+ //| Обработчик событий на графиках | //+------------------------------------------------------------------+ void OnChartEvent(const int id, // Идентификатор события const long &lparam, // Параметр события типа long const double &dparam, // Параметр события типа double const string &sparam) // Параметр события типа string { //Print("id: ",id," lparam: ",lparam," dparam: ",dparam," sparam: ",sparam +" (str.",__LINE__,")"); //--- Если это пользовательское событие if(id>=CHARTEVENT_CUSTOM) // Цикл событий по символам { //static CNewBar M1; const int number=id-CHARTEVENT_CUSTOM; //приведем в нормальный вид номер символа 0-7 //--- проверим новый ли бар //if(M1.NewBar(number,PERIOD_M1)) { //--- //Print(TimeToString(TimeCurrent(),TIME_SECONDS)," -> id=",id-CHARTEVENT_CUSTOM," "+Symbols[number]+" (str.",__LINE__,")"); //--- проверка времени для Open Position if(time_mode.GetTimeMode(TimeCurrent())==TRADE_ON) { //--- Проверяет сигналы и торгует по ним CheckSignalsAndTrade(number); //передается имя символа return; } } } }
видно что передается только идентификатор, именно это дало большой прирост
здесь заложен код Vasiliy Sokolov
if(time_mode.GetTimeMode(TimeCurrent())==TRADE_ON)
краткая версия которую я использую, индикатор
Очень навороченная версия, что сам использую в бою.
Отправляется не просто сообщение о том, что тик пришел, а еще и сам тик - MqlTick.

сразу скажу, комменты многолетние не убираю, там может что угодно написано)
Василий Соколов почему то не отобразился, скопировал-вставил из его профиля,
прошу поправить модераторов
Очень навороченная версия, что сам использую в бою.
Отправляется не просто сообщение о том, что тик пришел, а еще и сам тик - MqlTick.
пока не рассматривал это, Константин еще говорил что можно передавать сразу цену и не запрашивать ее далее
MQL5 only без проставок)за основу было взято из статьи ANATOLI KAZHARSKI
https://www.mql5.com/ru/articles/648
но там багов тьма. новичкам не рекомендую в этот лес

- www.mql5.com
MqlBookInfo
вроде не подходит
саб у тебя есть вариант OnTick
---
есть опыт из сервиса получать, в отличие от событийного?
-
недавно обвинял MQ, что у меня сделки не открываются некоторые, ошибка была в коде <>, одно из условий, стыдно очень.
еслиб был давний метод профилирования, я бы не убил месяц на этот поиск, профилирование показало бы что работает 3 из четырех условий

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Предлагаю делиться опытами и наблюдениями в этой ветке
Konstantin Gruzdev первый предложил на форуме идею Event spy