синхронизация кнопок на разных TФ

 

вот есть один советник. ОН запущен на 2 ТФ на одном символе. 
В советнике прописана кнопка "Button" 

мы ее нажимаем . 
Как эти кнопки синхронизировать ? 

Ну допустим я сохранил состояние кнопки в глобальную переменную, и на другом ТФ ее считал. 
Как вызвать OnChartEvent из OnTimer? 
Прям вот вызвать типа 

OnChartEvent (параметры) не получилось 

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные - Переменные - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Dmitiry Ananiev:

вот есть один советник. ОН запущен на 2 ТФ на одном символе. 

покажите хоть скрин как это выглядит

насколько я помню - один эксперт на один чарт, а у Вас что?

 
Dmitiry Ananiev:

вот есть один советник. ОН запущен на 2 ТФ на одном символе. 
В советнике прописана кнопка "Button" 

мы ее нажимаем . 
Как эти кнопки синхронизировать ? 

Ну допустим я сохранил состояние кнопки в глобальную переменную, и на другом ТФ ее считал. 
Как вызвать OnChartEvent из OnTimer? 
Прям вот вызвать типа 

OnChartEvent (параметры) не получилось 

OnChartEvent + EventChartCustom 

Документация по MQL5: Работа с событиями / EventChartCustom
Документация по MQL5: Работа с событиями / EventChartCustom
  • www.mql5.com
EventChartCustom - Работа с событиями - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaly Muzichenko:

OnChartEvent + EventChartCustom 

тогда библиотека @fxsaber , он делал передачу сообщений через  EventChartCustom

https://www.mql5.com/ru/code/28835
Event_Message
Event_Message
  • www.mql5.com
Отправка/получение информации через ChartEvent-события
 
Dmitiry Ananiev:

вот есть один советник. ОН запущен на 2 ТФ на одном символе. 
В советнике прописана кнопка "Button" 

мы ее нажимаем . 
Как эти кнопки синхронизировать ? 

Ну допустим я сохранил состояние кнопки в глобальную переменную, и на другом ТФ ее считал. 
Как вызвать OnChartEvent из OnTimer? 
Прям вот вызвать типа 

OnChartEvent (параметры) не получилось 

Попробуйте:

void OnInit(void)
{
   string nm="myButt"+Symbol();
   ObjectCreate(0,nm,OBJ_BUTTON,0,0,0);
   ObjectSetInteger(0,nm,OBJPROP_XSIZE,50);
   ObjectSetInteger(0,nm,OBJPROP_YSIZE,20);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{

//---
   return(rates_total);
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
//--- проверим событие на нажатие кнопки мышки
   if(id==CHARTEVENT_OBJECT_CLICK && ObjectType(sparam)==OBJ_BUTTON) {
      long currChart=ChartFirst();
      int i=0;
      while(i<CHARTS_MAX) { // у нас наверняка не больше CHARTS_MAX открытых графиков
         if(ObjectGetInteger(0,sparam,OBJPROP_STATE)) {
            ObjectSetInteger(currChart,sparam,OBJPROP_STATE,true);
            ObjectSetString(currChart,sparam,OBJPROP_TEXT,"ON");
            ChartRedraw(currChart);
         } else {
            ObjectSetInteger(currChart,sparam,OBJPROP_STATE,false);
            ObjectSetString(currChart,sparam,OBJPROP_TEXT,"OFF");
            ChartRedraw(currChart);
         }
         currChart=ChartNext(currChart); // на основании предыдущего получим новый график
         if(currChart==-1) break;        // достигли конца списка графиков
         i++;                            // не забудем увеличить счетчик
      }
   }
}
P.S. Обновил код
Причина обращения: