ChartBackColorSet Не обновляется по таймеру

 

Добрый день.


Цвет фона графика.

Код такой не работает корректно.

Функция Печать корректно выводится по таймеру.

А график меняет цвет только по тику.

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

Можете подсказать?

Код представлен ниже ..

//+------------------------------------------------------------------+

//|                                              TimerColorGraph.mq4 |

//|                        Copyright 2018, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2018, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property strict

#property indicator_chart_window

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int OnInit()

  {

//--- indicator buffers mapping

   

   EventSetMillisecondTimer(1000);

   return(INIT_SUCCEEDED);

  }

  int OnDeinit()

  {

////--- indicator buffers mapping

   

    EventKillTimer();

    return 0;

  }

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

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 value of prev_calculated for next call

   return(rates_total);

  }

//+------------------------------------------------------------------+

//| Timer function                                                   |

//+------------------------------------------------------------------+

void OnTimer()

  {

  color currentColor;

  

  currentColor = ChartBackColorGet(0);

  Print("Я тик с таймера до" + currentColor);

   if(currentColor == clrRed){

      ChartBackColorSet(clrBlack,0);

      //Sleep(200);

      return;

   }    

   

   if(currentColor == clrBlack){

      ChartBackColorSet(clrRed,0);

      //Sleep(200);

      return;

   }


   Print("Я тик с таймера после" + currentColor);

  }

void OnTick () { 


}   

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| Функция получает цвет фона графика.                              |

//+------------------------------------------------------------------+

color ChartBackColorGet(const long chart_ID=0)

  {

//--- подготовим переменную для получения цвета

   long result=clrNONE;

//--- сбросим значение ошибки

   ResetLastError();

//--- получим цвет фона графика

   if(!ChartGetInteger(chart_ID,CHART_COLOR_BACKGROUND,0,result))

     {

      //--- выведем сообщение об ошибке в журнал "Эксперты"

      Print(__FUNCTION__+", Error Code = ",GetLastError());

     }

//--- вернем значение свойства графика

   return((color)result);

  }

//+------------------------------------------------------------------+

//| Функция устанавливает цвет фона графика.                         |

//+------------------------------------------------------------------+

bool ChartBackColorSet(const color clr,const long chart_ID=0)

  {

//--- сбросим значение ошибки

   ResetLastError();

//--- установим цвет фона графика

   if(!ChartSetInteger(chart_ID,CHART_COLOR_BACKGROUND,clr))

     {

      //--- выведем сообщение об ошибке в журнал "Эксперты"

      Print(__FUNCTION__+", Error Code = ",GetLastError());

      return(false);

     }

//--- успешное выполнение

   return(true);

  }


Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Помощь по телеграм боту - создание кнопок...
 

поможет это. Разобрался.

void newTick() {

   int message = RegisterWindowMessageW("MetaTrader4_Internal_Message");

   int hwd = WindowHandle(Symbol(), Period());

   PostMessageW(hwd, message, 2, 1);


}

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