CustomRatesUpdate and CustomRatesReplace causes flickering on chart screen

 

I developed a non trading expert that generates Renko bars in 1 minute time frame.

Renko 2.0 Offline at https://www.mql5.com/en/code/20254

The custom symbol depends on the events generated by the original symbol to update its rates. Depending on how much the symbol is updated, on-screen flickering increases.

Normal

Renko 2.0 Normal

Flickering

Renko 2.0 Flickering

Renko 2.0 Offline
Renko 2.0 Offline
  • votes: 8
  • 2018.03.28
  • Guilherme Santos
  • www.mql5.com
Renko 2.0 Offline non-trading expert generates custom symbol information on 1M chart. A complete Renko chart with wicks. Now Offline! References the Symbol library for MetaTrader 5 by fxsaber. Configure...
 
It looks like interference due to constant repainting.
 
Marco vd Heijden:
It looks like interference due to constant repainting.
Yes, it does. But when i set the refresh to 1 second only, it still flickers. Less, but still.
 
resolved?
 
Try this code

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

Библиотеки: Symbol

fxsaber, 2019.03.02 13:23

Библиотека расширила функционал из-за определенных событий. Пример его использования
// Пример создания "живого" символа.

#include <Symbol.mqh> // https://www.mql5.com/ru/code/18855

const bool Init = EventSetMillisecondTimer(20); // С такой частотой будем пробрасывать тики

void OnTimer()
{
  static bool FirstRun = true;

  static const SYMBOL Symb("CUSTOM_" + _Symbol); // Создали символ
  
  static MqlTick Ticks[];
  static int Pos = 0;
    
  if (FirstRun)
  {
    Symb.DeleteHistory();       // Мало ли что-то было в истории - грохнули
    Symb.Delete(true);          // Символ тоже прибьем, чтобы исключить наличие тика в Обзоре рынка
    Symb.Create(NULL, _Symbol); // Воскресили девственно чистым.
    
    if (Symb.IsExist() && Symb.On())   // Если все отлично
    {     
      ChartOpen(Symb.Name, PERIOD_M1); // Открыли чарт
      CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, (ulong)D'2019.02.01' * 1000); // Взяли тики для проброса
    }
      
    FirstRun = false;
  }
  else if (Pos < ArraySize(Ticks))
    Symb += Ticks[Pos++]; // Пробрасываем по тику
}


На таком символе Вы можете вести отладку индикаторов даже в выходные дни, когда котиры стоят.