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

 

b 5327

При оптимизации по всем символам, не приходят фреймы и OnTesterPass() не вызываются.

OnTesterDeinit() вызывается, но перебор фреймов ничего не находит.

Если добавить к советнику с фреймами

void OnTesterPass(){Print("OnTesterPass");}

И запустить в режиме по всем символам, то ни одной распечатки нет. Т.е. фреймы не приходят, хотя и были отправлены.

При тесте того же советника  по одному символу с разными параметрами - их много и = количеству отправленных фреймов.

2025.12.27 19:07:17.916    OnTesterPass
2025.12.27 19:07:21.828    OnTesterPass
2025.12.27 19:07:24.462    OnTesterPass
2025.12.27 19:07:27.233    OnTesterPass
.....

Не реализовано? Или сломалось?
 
Aleksei Kuznetsov #:

При оптимизации по всем символам, не приходят фреймы и OnTesterPass() не вызываются.

Лучше в виде воспроизводимого баг-репорта.
 
fxsaber #:
Лучше в виде воспроизводимого баг-репорта.
input int v;
int  OnInit(void){return(INIT_SUCCEEDED);}
void OnDeinit(const int reason){}
void OnTick(void){}
int STATS_FRAME=123456;
double OnTester(){
   double out[1]; out[0]=rand();
   ResetLastError();
   if(!FrameAdd("", STATS_FRAME, 0.0, out)){Print("Frame add error: ", GetLastError());} else{ Print("Frame added, Ok");}
   return out[0];
}

void OnTesterDeinit(){
   Print("OnTesterDeinit()");
   ulong pass; string name; long id; double d, a[]; 
   FrameFirst();
   FrameFilter("", STATS_FRAME); // выбираем для работы свои фреймы 
   while(FrameNext(pass, name, id, d, a)){
      Print("Pass=",pass," a[0]=",a[0]);
   }
}
void OnTesterPass(){Print("OnTesterPass");}

Печать для обычной оптимизации по параметру v

2025.12.27 20:31:47.904    OnTesterPass
2025.12.27 20:31:47.909    OnTesterPass
2025.12.27 20:31:48.307    OnTesterPass
2025.12.27 20:31:48.337    OnTesterPass
2025.12.27 20:31:48.845    OnTesterPass
2025.12.27 20:31:48.856    OnTesterPass
2025.12.27 20:31:49.314    OnTesterPass
2025.12.27 20:31:49.322    OnTesterPass
2025.12.27 20:31:49.702    OnTesterPass
2025.12.27 20:31:49.749    OnTesterPass
2025.12.27 20:31:50.114    OnTesterPass
2025.12.27 20:31:50.129    OnTesterDeinit()
2025.12.27 20:31:50.129    Pass=2 a[0]=439.0
2025.12.27 20:31:50.129    Pass=0 a[0]=22091.0
2025.12.27 20:31:50.129    Pass=6 a[0]=31483.0
2025.12.27 20:31:50.129    Pass=4 a[0]=25187.0
2025.12.27 20:31:50.129    Pass=3 a[0]=439.0
2025.12.27 20:31:50.129    Pass=1 a[0]=22091.0
2025.12.27 20:31:50.129    Pass=5 a[0]=25187.0
2025.12.27 20:31:50.129    Pass=7 a[0]=31483.0
2025.12.27 20:31:50.129    Pass=8 a[0]=439.0
2025.12.27 20:31:50.129    Pass=9 a[0]=22091.0
2025.12.27 20:31:50.129    Pass=10 a[0]=25187.0


Печать при оптимизации по всем символам

2025.12.27 20:29:22.048    OnTesterDeinit()



Удаление фильтра не решает проблему

   //FrameFilter("", STATS_FRAME); // выбираем для работы свои фреймы 

Не приходит ни одного фрейма.

Вызывается только OnTesterDeinit()
 
Форвард тест в режиме по всем символам тоже не работает. Возвращает результаты полного бектеста. Без форварда.
 

b5488, сломали подсказки в ME.

class A
{
  void CopyTicksRange( MqlTick &Ticks[] ) {}
};

void OnStart()
{
  A a;
  MqlTick Ticks[];
  
  a.CopyTicksRange(Ticks);
}

В b5430 работает правильно. Просьба вернуть прежнее поведение, спасибо.

Строка для поискаOshibka 156.

 
fxsaber #:
В b5430 работает правильно. Просьба вернуть прежнее поведение, спасибо.

Почему? Если


Можете обосновать, пожалуйста?

UPD. Всё, пригляделся, понял - собственный метод класса.

Да, странно...

 
Пользовательские символы. Ошибки, баги, вопросы, предложения.
Пользовательские символы. Ошибки, баги, вопросы, предложения.
  • 2025.11.01
  • www.mql5.com
Так как тема достаточна обширна, решил, что стоит выделить её в отдельное обсуждение...
 

Здравствуйте коллеги, подскажите куда обратиться по проблеме связанной с алертами устанавливаемыми через контекстное меню, по нажатию правой клавиши мыши ? По какой-то неведомой причине встроенные алерты в MT5 не показывают всплывающее окно. Есть только звук. И если ты не за ПК или у тебя выключен звук, ты обречен пропустить алерт. Или должен каждый раз заглядывать в раздел алертов на панели инструментов. Хотелось бы иметь функционал включения появления окна при срабатывании алерта. Не пойму, почему столь простую функцию не добавили в терминал ???

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

 
Sergei Rashchubkin #:

Здравствуйте коллеги, подскажите куда обратиться по проблеме связанной с алертами устанавливаемыми через контекстное меню, по нажатию правой клавиши мыши ? По какой-то неведомой причине встроенные алерты в MT5 не показывают всплывающее окно. Есть только звук. И если ты не за ПК или у тебя выключен звук, ты обречен пропустить алерт. Или должен каждый раз заглядывать в раздел алертов на панели инструментов. Хотелось бы иметь функционал включения появления окна при срабатывании алерта. Не пойму, почему столь простую функцию не добавили в терминал ???

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

К сожалению, никуда не обратиться. Так задумано и в МТ4, и в МТ5. Никакое окно в данном случае не должно открываться. Косвенно это подтверждается значением "Звук" в параметре "Действие". То есть событие вызывает звук и ничего более.

Чтобы получить полноценный Алерт, придется самому писать нужный индикатор (или заказать его на сервисе Фриланс). К примеру, простой индикатор может выглядеть так:

#property version   "1.00"
#property indicator_chart_window
#property indicator_plots 0

enum ENUM_LESS_OR_MORE
{
   LESS,                                                       // <
   MORE                                                        // >
};

enum ENUM_BID_OR_ASK
{
   BID,                                                       // Bid
   ASK                                                        // Ask
};

input double            i_fPrice          = 1.25643;           // Alert price
input ENUM_LESS_OR_MORE i_eLessOrMore     = LESS;              // Price less or more
input ENUM_BID_OR_ASK   i_ePriceType      = BID;               // Price type

nt OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }

int OnCalculate(const int32_t rates_total,
                const int32_t 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 int32_t &spread[])
{
   double fPrice = SymbolInfoDouble(NULL, (i_ePriceType == BID)? SYMBOL_BID : SYMBOL_ASK);
   if ((fPrice > i_fPrice && i_eLessOrMore == MORE) || (fPrice < i_fPrice && i_eLessOrMore == LESS))
      Alert("Price reached!");

   return(rates_total);
}

Только сигналить будет такой индикатор на каждом тике после достижения цены, пока не снимете его с графика. Нужно будет еще дорабатывать на количество оповещений.

 
Sergei Rashchubkin #:

Здравствуйте коллеги, подскажите куда обратиться по проблеме связанной с алертами устанавливаемыми через контекстное меню, по нажатию правой клавиши мыши ? По какой-то неведомой причине встроенные алерты в MT5 не показывают всплывающее окно. Есть только звук. И если ты не за ПК или у тебя выключен звук, ты обречен пропустить алерт. Или должен каждый раз заглядывать в раздел алертов на панели инструментов. Хотелось бы иметь функционал включения появления окна при срабатывании алерта. Не пойму, почему столь простую функцию не добавили в терминал ???

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

Видимо, MQ считает, что всю подобную кастомизацию можно реализовать через MQL5 (наверняка, в кодобазе уже есть такие вещи).

Если хочется именно через этого диалог, то там есть пункт Файл для выполнения сторонней программы - там тоже можно какое-нибудь окно с уведомлением открыть, но по сути это не будет отличаться от программирования на MQL5.