Подскажите, как обработать индикатором события с другого графика.

 

Имеется индикатор, он должен реагировать на действия пользователя на других графиках, на которых он не установлен.

К примеру индикатор создает какой то графический объект на всех графиках, что открыты. После этого, когда пользователь тыкнет на этот объект на любом из графиков - главный график с индикатором должен выполнить задуманное действие, допустим выдать в принт номер этого графика.

Функция OnChartEvent обрабатывает события только с текущего графика и никак не реагирует на чужие.

Устанавливать этот вручную индикатор на десятки графиков не мой вариант.

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

Подскажите, кто знает. Спасибо.

 
Roman Starostin:

Имеется индикатор, он должен реагировать на действия пользователя на других графиках, на которых он не установлен.

К примеру индикатор создает какой то графический объект на всех графиках, что открыты. После этого, когда пользователь тыкнет на этот объект на любом из графиков - главный график с индикатором должен выполнить задуманное действие, допустим выдать в принт номер этого графика.

Функция OnChartEvent обрабатывает события только с текущего графика и никак не реагирует на чужие.

Устанавливать этот вручную индикатор на десятки графиков не мой вариант.

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

Подскажите, кто знает. Спасибо.

в связке с EventChartCustom

Документация по MQL5: Работа с событиями / EventChartCustom
Документация по MQL5: Работа с событиями / EventChartCustom
  • www.mql5.com
//|                                            ButtonClickExpert.mq5 | //|                        Copyright 2009, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 

Ну уж без всяких dll... Что-то не верится.

Можно попробовать через WinAPI поискать решение.


Vitaly Muzichenko:

в связке с EventChartCustom

хотя да, вроде можно получить событие с другого графика.

 
Aleksei Stepanenko:

Ну уж без всяких dll... Что-то не верится.

Можно попробовать через WinAPI поискать решение.

Всё работает без .dll , события передаются между графиками средствами mql

У меня есть в арсенале торговая панель в виде индикатора, так вот все действия с индикатора передаются в советник, который установлен на одном графике, а индикатор на 24 графиках, и прекрасно взаимодействует без всяких dll

 
Да, точно, почитал уже.
 
Aleksei Stepanenko:

Ну уж без всяких dll... Что-то не верится.

Можно попробовать через WinAPI поискать решение.


хотя да, вроде можно получить событие с другого графика.

Небольшая проблема с количеством передаваемых параметров, но это можно решить передачей строки через разделитель, к примеру "|", а на той стороне распарсить через StringSplit

Может есть ещё варианты, может и массивом можно передавать - не пробовал, вполне устроил вариант с разбитием строки.

Ну и конечно в помощь:

// Откроем Buy
void BroadcastEventPB(long lparam,double dparam,string sparam) {
 ushort eventID=9784-CHARTEVENT_CUSTOM;
 long currChart=ChartFirst(); 
 int i=0; 
  while(i<CHARTS_MAX)                // у нас наверняка не больше CHARTS_MAX открытых графиков 
   { 
    EventChartCustom(currChart,eventID,lparam,dparam,sparam); 
    currChart=ChartNext(currChart); // на основании предыдущего получим новый график 
    if(currChart==-1) break;        // достигли конца списка графиков 
    i++;                            // не забудем увеличить счетчик 
   } 
 }
// Откроем Sell
void BroadcastEventPS(long lparam,double dparam,string sparam) {
 ushort eventID=9348-CHARTEVENT_CUSTOM;
 long currChart=ChartFirst(); 
 int i=0; 
  while(i<CHARTS_MAX)                // у нас наверняка не больше CHARTS_MAX открытых графиков 
   { 
    EventChartCustom(currChart,eventID,lparam,dparam,sparam); 
    currChart=ChartNext(currChart); // на основании предыдущего получим новый график 
    if(currChart==-1) break;        // достигли конца списка графиков 
    i++;                            // не забудем увеличить счетчик 
   } 
 }
// Установим тейки и стопы на Buy
 
Vitaly Muzichenko:

Ну и конечно в помощь:

.

 

Еще есть именованные каналы, а также глобальные переменные терминала в крайнем случае.

Способов чуть больше, чем 1 ))

 
Ihor Herasko:

Еще есть именованные каналы, а также глобальные переменные терминала в крайнем случае.

Способов чуть больше, чем 1 ))

Именованные каналы это что имеется ввиду?

 
Valeriy Yastremskiy:

Именованные каналы это что имеется ввиду?

https://www.mql5.com/ru/articles/503

https://www.mql5.com/ru/articles/115

Связь с MetaTrader 5 через именованные каналы без применения DLL
Связь с MetaTrader 5 через именованные каналы без применения DLL
  • www.mql5.com
Перед многими разработчиками встает одинаковая проблема - как пробиться в песочницу торгового терминала без применения небезопасных DLL. Одним из простых и безопасных методов является использование стандартных именованных каналов (Named Pipes), которые работают как обычные файловые операции. Они позволяют организовать межпроцессорное...
Причина обращения: