Blend2D vs GDI version MT5

 

The Blend2D updates render candlesticks much worse than the GDI version, and they also do not appear to be fully synchronized in rendering when there is activity from an Indicator or EA.

Below are two illustrative images showing when I use the DRAW_COLOR_CANDLES function for an indicator.

I use a 4K display, and the Blend2D version renders the candlesticks very blurry.

5495


5430

 
Please post the code needed to reproduce this issue.
 

Alain Verleyen #:
Please post the code needed to reproduce this issue.

#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots   1
#property indicator_type1   DRAW_COLOR_CANDLES

input color    UpColor = clrLimeGreen;
input color    DownColor = C'239,83,80';
input color    NeutralColorUp = clrGray;
input color    NeutralColorDown = clrGray;

double OpenBuffer[];
double HighBuffer[];
double LowBuffer[];
double CloseBuffer[];
double ColorBuffer[];

int OnInit()
{
   SetIndexBuffer(0, OpenBuffer, INDICATOR_DATA);
   SetIndexBuffer(1, HighBuffer, INDICATOR_DATA);
   SetIndexBuffer(2, LowBuffer, INDICATOR_DATA);
   SetIndexBuffer(3, CloseBuffer, INDICATOR_DATA);
   SetIndexBuffer(4, ColorBuffer, INDICATOR_COLOR_INDEX);
   
   ArraySetAsSeries(OpenBuffer, true);
   ArraySetAsSeries(HighBuffer, true);
   ArraySetAsSeries(LowBuffer, true);
   ArraySetAsSeries(CloseBuffer, true);
   ArraySetAsSeries(ColorBuffer, true);
   
   PlotIndexSetInteger(0, PLOT_COLOR_INDEXES, 4);
   PlotIndexSetInteger(0, PLOT_LINE_COLOR, 0, UpColor);
   PlotIndexSetInteger(0, PLOT_LINE_COLOR, 1, DownColor);
   PlotIndexSetInteger(0, PLOT_LINE_COLOR, 2, NeutralColorUp);
   PlotIndexSetInteger(0, PLOT_LINE_COLOR, 3, NeutralColorDown);
 
Luu Tuan Trung #:
Something is missing for sure.
 
Alain Verleyen #:
Something is missing for sure.
Just report the issue clearly to the technician. Once they look at my code, they’ll understand immediately—any indicator using DRAW_COLOR_CANDLES is rendering candles very poorly.
 
Luu Tuan Trung #:
Just report the issue clearly to the technician. Once they look at my code, they’ll understand immediately—any indicator using DRAW_COLOR_CANDLES is rendering candles very poorly.
@MetaQuotes, there is a visual blurry bars bug in MT5 Build 5495. Details appear above in this thread.
 
Luu Tuan Trung #:
Just report the issue clearly to the technician. Once they look at my code, they’ll understand immediately—any indicator using DRAW_COLOR_CANDLES is rendering candles very poorly.
Your code is incomplete and can't be used to reproduce the issue.
 

See the same as already reported.

Forum on trading, automated trading systems, and trading strategy testing

New MetaTrader 5 platform version 5430: Improved charts on the Blend2D engine

Ilya Filatov , 2026.01.08 17:06

It remains as it was (chart on top, indicator below). The playback code is below.

 #property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots 1

#property indicator_type1 DRAW_COLOR_CANDLES
#property indicator_color1 clrBlue , clrGreen , clrRed

double Buffer_BO[];
double Buffer_BH[];
double Buffer_BL[];
double Buffer_BC[];
double Buffer_Bclr[];

int OnInit ()
{
   SetIndexBuffer ( 0 , Buffer_BO);
   SetIndexBuffer ( 1 , Buffer_BH);
   SetIndexBuffer ( 2 , Buffer_BL);
   SetIndexBuffer ( 3 , Buffer_BC);
   SetIndexBuffer ( 4 , Buffer_Bclr);

   IndicatorSetDouble ( INDICATOR_MINIMUM , ChartGetDouble ( 0 , CHART_FIXED_MIN ));
   IndicatorSetDouble ( INDICATOR_MAXIMUM , ChartGetDouble ( 0 , CHART_FIXED_MAX ));

   return INIT_SUCCEEDED ;
}

int OnCalculate
(
   const int total,
   const int prev,
   const datetime &time[],
   const double &open[],
   const double &high[],
   const double &low[],
   const double &close[],
   const long &ticks[],
   const long &volume[],
   const int &spread[])
{
   int limit = total - prev - 1 ;
   if (limit < 0 ) limit = 1 ;

   for ( int i = limit; i >= 0 && ! _StopFlag ; i--)
   {
      Buffer_BO[i] = open[i];
      Buffer_BH[i] = high[i];
      Buffer_BL[i] = low[i];
      Buffer_BC[i] = close[i];
      Buffer_Bclr[i] = 0 ;

       if (open[i] < close[i]) Buffer_Bclr[i] = 1 ;
       if (open[i] > close[i]) Buffer_Bclr[i] = 2 ;
   }

   return total;
}

MetaTrader 5 x64 build 5495 started for MetaQuotes Software Corp.
Windows 11 build 22000 on Wine 10.20 Linux 6.12 .63 - 1 -MANJARO, 4 x Intel N150, AVX2, 11 / 15 Gb memory, 251 / 343 Gb disk, GMT+ 3