Новая версия платформы MetaTrader 5 build 2980: Push-уведомления о торговых операциях - страница 47

 
fxsaber #:

b3036, думал, починят. Останется?

А обойти это как-то можно ?

там внутри MT4Orders - может какое "заклинание" сказать надо ?

 
Maxim Kuznetsov #:

А обойти это как-то можно ?

там внутри MT4Orders - может какое "заклинание" сказать надо ?

Не думаю, что MT4Orders к этому имеет отношение. Компилируйте в b3007-.

 
fxsaber #:

Не думаю, что MT4Orders к этому имеет отношение. Компилируйте в b3007-.

видимо действительно не имеет...

перекомпилил в том-же самом 3036 - тестирование прошло успешно. 

единственное что поправил, добавил принудительную конвертацию (IntegerToString) в строке типа такой: Alert("тра-ля "+IntegerToString(lastError));

чудеса :-)

 
TesterStatistics(STAT_LOSS_TRADES) выскакивает предупреждение на int ставишь double не ругается.
 
freelancerAntonyan #:
TesterStatistics(STAT_LOSS_TRADES) выскакивает предупреждение на int ставишь double не ругается.

Цитата из справки по ENUM_STATISTICS и функции TesterStatistics() :

"Хотя при вычислении статистики используются показатели двух типов - int и double - функция возвращает все значения в виде double."

TesterStatistics() всегда возвращает значения в double поэтому и ругается на integer.

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Статистика тестирования
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Статистика тестирования
  • www.mql5.com
Статистика тестирования - Состояние окружения - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Загрузил мобильный  MT5, в нем зарегистрировался и почему не дает mqid, пишет "null"?
 

А вот такие ошибки невероятно трудно обнаружить. Никак не мог понять, почему один и тот же код на MQL4 и MQL5 работает по-разному. А все оказалось из-за разных сигнатур у одноименной функции.

В MQL4:

int  ArrayMinimum(
   const void&   array[],             // массив для поиска
   int           count=WHOLE_ARRAY  // количество проверяемых
   int           start=0              // с какого индекса начинаем поиск

   );

В MQL5:

int  ArrayMinimum(
   const void&   array[],             // массив для поиска
   int           start=0,             // с какого индекса начинаем поиск
   int           count=WHOLE_ARRAY    // количество проверяемых

   );

То же самое с ArrayMaximum

Это специально сделано или банальная невнимательность?

 
Ihor Herasko #:

А вот такие ошибки невероятно трудно обнаружить. Никак не мог понять, почему один и тот же код на MQL4 и MQL5 работает по-разному. А все оказалось из-за разных сигнатур у одноименной функции.

Это специально сделано или банальная невнимательность?

Почитайте

Вопрос к разработчикам. ArrayMinimum ArrayMaximum MQL4 MQL5
Вопрос к разработчикам. ArrayMinimum ArrayMaximum MQL4 MQL5
  • 2021.09.06
  • www.mql5.com
Суть темы проста, можно ли в обоих языках сделать одинаково - пример на скриншоте...
 
Ihor Herasko #:

А вот такие ошибки невероятно трудно обнаружить. Никак не мог понять, почему один и тот же код на MQL4 и MQL5 работает по-разному. А все оказалось из-за разных сигнатур у одноименной функции.

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

Может стоит причесать?

fxsaber, 2017.02.06 20:13

Можно делать и тогда не тратить время на объяснения
// MQL4&5-code

#ifdef __MQL5__

template <typename T>
int MT4ArrayMaximum(
   const T&   array[],             // массив для поиска
   int        count=WHOLE_ARRAY,   // количество проверяемых
   int        start=0              // с какого индекса начинаем поиск
)
{
  return(ArrayMaximum(array, start, count));
}

#define ArrayMaximum MT4ArrayMaximum

#endif

void OnStart()
{
  int Array[] = {5, 4, 3, 2, 7};
  
  Print(ArrayMaximum(Array, 3));
  
  return;  
}
 

Обновился на 3037, в журнале постоянно вот такое:

2021.09.10 00:16:36.045 MQL5    trying to free invalid memory in large allocator 0x000000445099E0B0, extra=0x000000444E710000
2021.09.10 00:16:36.045 MQL5    freeing failed in large allocator 0x000000445099E0C0
2021.09.10 00:16:36.045 MQL5    freeing invalid allocator index (out of range) 0x000000444E9F4080
2021.09.10 00:16:36.045 MQL5    freeing invalid allocator index (out of range) 0x000000444E9F8080