Новая версия платформы MetaTrader 5 build 5430: Улучшенные графики на движке Blend2D - страница 40

 

Если запустить советник через отладчик MetaEditor 5 в тестере, то при закрытии MetaEditor 5 - окно тестера не удаляется автоматически.

Версию новее не дает LiveUpdate.


 

что за чудеса

на все графики один символ установился, скинул робота, оформление

второй раз уже


 

В локальной документации на русском пропущен ONNX_DATA_TYPE_UINT8.

UPD: А также ONNX_DATA_TYPE_FLOAT8E4M3FN, ONNX_DATA_TYPE_FLOAT8E4M3FNUZ, ONNX_DATA_TYPE_FLOAT8E5M2, ONNX_DATA_TYPE_FLOAT8E5M2FNUZ.

 

Мелкий недочёт.

Когда создаёшь новый Пользовательский индикатор, то копирайт 2021 по дефолту.


 

БАГ со шрифтом Windings!

b5509

//Просьба решить баг в терминале или дать рабочее решение для использования wingdings для объектов


Как интерпретировать результат:

  1. Если красные значки (буфер) видны, а синие (объекты) — квадраты:

    • Проблема в том, как терминал обращается к шрифтам при рендеринге объектов. Это подтверждает баг в билде или конфликт с системным реестром Windows.

  2. Если и те, и другие — квадраты:

    • Шрифт Wingdings поврежден в самой системе Windows или подменяется "пустышкой" в ресурсах терминала.

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

//|                                              FontTest_MT5.mq5    |

//|                                  Copyright 2026, Gemini 3 PRO    |

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

#property copyright "Copyright 2026"

#property version   "1.00"

#property indicator_chart_window


#property indicator_buffers 1

#property indicator_plots   1


// Настройки буфера (Верхний ряд)

#property indicator_label1  "Buffer Icons"

#property indicator_type1   DRAW_ARROW

#property indicator_color1  clrRed

#property indicator_width1  5


double Buffer[];

int codes[] = {108, 110, 158, 159, 252, 254}; // Набор кодов Wingdings


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

//| Custom indicator initialization function                         |

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

int OnInit()

{

   SetIndexBuffer(0, Buffer, INDICATOR_DATA);

   // Устанавливаем код значка для буфера (по умолчанию первый из списка)

   PlotIndexSetInteger(0, PLOT_ARROW, codes[0]);

   

   return(INIT_SUCCEEDED);

}


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

//| 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 &spread[],

                const int &real_volume[])

{

   if(rates_total < 10) return(0);


   // 1. Отрисовка через БУФЕР (Красные значки сверху)

   // Мы просто ставим разные значки на последние бары

   int start = rates_total - 1;

   

   for(int i=0; i<ArraySize(codes); i++)

   {

      int barIndex = start - (i * 2); // Ставим через один бар

      Buffer[barIndex] = high[barIndex] + 50 * _Point;

      

      // Для демонстрации разных значков в одном буфере в МТ5 

      // лучше использовать разные буферы, но для теста сменим код стрелки глобально:

      // (В реальном индикаторе будет виден последний установленный код)

      PlotIndexSetInteger(0, PLOT_ARROW, 159); 

   }


   // 2. Отрисовка через ОБЪЕКТЫ (Синие значки снизу)

   for(int i=0; i<ArraySize(codes); i++)

   {

      string name = "TestObj_" + (string)i;

      datetime objTime = time[start - (i * 2)];

      double objPrice = low[start - (i * 2)] - 50 * _Point;

      

      if(ObjectFind(0, name) < 0)

         ObjectCreate(0, name, OBJ_TEXT, 0, objTime, objPrice);

      

      ObjectMove(0, name, 0, objTime, objPrice);

      ObjectSetString(0, name, OBJPROP_TEXT, ShortToString((ushort)codes[i]));

      ObjectSetString(0, name, OBJPROP_FONT, "Wingdings");

      ObjectSetInteger(0, name, OBJPROP_FONTSIZE, 20);

      ObjectSetInteger(0, name, OBJPROP_COLOR, clrBlue);

      ObjectSetInteger(0, name, OBJPROP_ANCHOR, ANCHOR_TOP);

   }


   return(rates_total);

}


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

//| Deinit                                                           |

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

void OnDeinit(const int reason)

{

   ObjectsDeleteAll(0, "TestObj_");

}

 
Vitaliy Kuznetsov #:

Мелкий недочёт.

Когда создаёшь новый Пользовательский индикатор, то копирайт 2021 по дефолту.


И MetaQuotes Ltd.
:))
 
Vitaliy Kuznetsov #:

Мелкий недочёт.

Когда создаёшь новый Пользовательский индикатор, то копирайт 2021 по дефолту.


Там тот стоит, который был введён последний раз
 
Artyom Trishkin #:
Там тот стоит, который был введён последний раз

Видимо 5 лет назад как-от нажимал создать Пользовательский индикатор, но уж точно не вводил туда ничего.

Получается он запомнил прошлую дефолтную заглушку и с тех пор держит её в памяти.

 

как правило - да, в новые поля подставляются прежние введённые данные.

просто есть такое ощущение, что эти поля ещё и сбрасываются при некоторых обновлениях. 

 
Maxim Kuznetsov #:

просто есть такое ощущение, что эти поля ещё и сбрасываются при некоторых обновлениях. 

Я ни разу не последние пару лет не открывал диалог создания именно индикатора. Сейчас попробовал - стоит (с)2026, что я вводил при создании скрипта. И ни разу не сбрасывалось за мою жизнь. Кроме, наверное, при чистой установке или переходе на/с портативной.