Новая версия платформы MetaTrader 5 build 5660: улучшения и исправления - страница 14

 
bool    SymbolExist ( 
   const string   name, 
   bool &   is_custom      
);

Почему переменная обязательно должна передаваться в функцию is_custom? Я даже не могу напрямую передать SymbolExist(sym, false). Пожалуйста, исправьте это поведение.

Эта переменная используется только в функции  SymbolExist , и в других местах нет необходимости её использовать. Создавать переменную только ради этой функции — явно излишне.
 
hini #:

Создавать переменную только ради этой функции — явно излишне.

Попробуйте свойство SYMBOL_EXIST.
 
hini #:
Почему переменная обязательно должна передаваться в функцию is_custom? Я даже не могу напрямую передать SymbolExist(sym, false). Пожалуйста, исправьте это поведение.
Дело в том, что через эту переменную, вы не передаёте значение, а получаете.
 
fxsaber # :
Попробуйте свойство SYMBOL_EXIST.
Спасибо, теперь я знаю, как использовать функцию SymbolInfoInteger().
 
Sergey Gridnev # :
Дело в том, что через эту переменную, вы не передаёте значение, а получаете.
Теперь я понимаю. Я использовал это в неправильном контексте. Мне следовало использовать SymbolInfoInteger( sym, SYMBOL_EXIST ).
 

Баг.

void OnStart()
{
   matrix prev;
   ResetLastError();
   // run on a symbol with a history, unavailable for the requested date, for example US500
   // D'2000.01.01' - no history, result is empty but returns true, prints lasterror 5701
   // D'2026.01.01' - history is available, result is filled, returns true as expected
   if(prev.CopyRates(_Symbol, _Period, COPY_RATES_CLOSE, D'2000.01.01', 1))
   {
      Print(prev);
   }
   if(prev.Row(0).Size() == 0)
   {
      Print(_LastError);
   }
}

Вызов CopyRates для матрицы всегда возвращает true, даже если получить данные не удалось.

 
Stanislav Korotky # :

Баг.

Вызов CopyRates для матрицы всегда возвращает true, даже если получить данные не удалось.

Не воспроизводится.

2026.03.28 12:01:36.883    Script (USDCOP,H1)    Build: 5715 USDCOP 2026.01.01 00:00:00 [[3834.24]]
2026.03.28 12:01:54.744    Script (USDCOP,H1)    Build: 5715 USDCOP 2000.01.01 00:00:00 Error: 5701
Файлы:
Script.mq5  3 kb
 

Как такое возможно? Билд 5715


 
Ivan Titov #:

Как такое возможно? Билд 5715

На клиринге такое часто видел.

У вас на скрине котировки премаркета (вероятнее всего). 

Финам ставит торговые сессии не корректно.

Котировочные с 6:45, торговые с 00:00, а реальная торговля идёт с 10:00. Получается, что всё что  6:45 до 10:00 это премаркет, а там могут быть любые цены.

Я в таких случаях чётко прописывал в советнике торговые периоды, чтоб он не отвлекался на премаркет и клиринг.

 

b5699, не знаю, ошибка это или нет.

void OnStart()
{
#ifdef _DEBUG
  Print("Debug");
#else // #ifdef _DEBUG
  Print("Release");
#endif // #ifdef _DEBUG #else

  const double Zero = 0;

  Print(1 / Zero);
}


F7.

Release
inf


F5.

Debug
zero divide, check divider to avoid this error in 'Test6.mq5' (158,11)