Новая версия платформы MetaTrader 5 build 2170: Области видимости в MQL5, глобальное обновление тестера стратегий и встроенного хостинга - страница 12

 
Насчет деления на ноль тоже повеселили. 
 
Vladimir Pastushak:

разве самому нельзя такое сделать ?

set файл это тот же txt

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

По теме деления на ноль, сегодня столкнулся с тем, что

SymbolInfoDouble(_Symbol, SYMBOL_POINT)

вернул при Оптимизации ноль (кто-нибудь в Тестере делает проверку на ноль этого значения и зачем?). Потом посыпались ошибки в журнале Тестера по другим проходам. Затем завис Терминал. А после перезагрузки Терминала исчез кастомный символ, на котором шла оптимизация. При этом бары и тики исчезнувшего символа сохранились в base-папках Терминала и Тестера.

 
fxsaber:

бары и тики исчезнувшего символа сохранились в base-папках Терминала и Тестера.

Обнаружил в base-папке Терминала данные нескольких символов, которых сейчас нет в Терминале. Т.е. в качестве мусора там лежит на сотни мегабайтов.

 
Igor Makanu:

ну да, ни разу в жизни ни открывал на сервере Метаквот EURPLN , EURRUB , M6EU19, а они есть.... видимо приторговывал кто то из команды пока новый билд правил )))

Имел в виду кастомные символы.

 
fxsaber:

Имел в виду кастомные символы.

у меня правда зоопарк из терминалов уже , пришлось стабильный билд установить, когда в нескольких бетах не сильно ладилось


посмотрел в билде 2170 - там ничего нет лишнего - папка Custom = 0 байт, в папке history только форекс мажоры которыми пользовался, да и терминал редко запускаю этот, но не вижу подозрительного ничего

в бете у меня хаос полный, поэтому сам не знаю что там творится уже

 
fxsaber:

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

видел под МТ4 и нашел, вот в КБ https://www.mql5.com/ru/code/9202


fxsaber:

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

По теме деления на ноль, сегодня столкнулся с тем, что

вернул при Оптимизации ноль (кто-нибудь в Тестере делает проверку на ноль этого значения и зачем?). Потом посыпались ошибки в журнале Тестера по другим проходам. Затем завис Терминал. А после перезагрузки Терминала исчез кастомный символ, на котором шла оптимизация. При этом бары и тики исчезнувшего символа сохранились в base-папках Терминала и Тестера.

я только в режиме произвольная задержка один раз ловил деление на ноль, по моему некоторые функции группы SymbolInfoXXXX()  могут имитировать, что то похожее на обрыв связи? и вернуть вместо ожидаемого результата просто ноль

sSaveSetFunctions
sSaveSetFunctions
  • www.mql5.com
Скрипт - генератор кода функции, сохраняющей файлы настроек советника от каждого прогона при оптимизации. Применение: Запускаем скрипт, вводим имя файла эсперта (рис. 1) В результате работы скрпта получаем файл с кодом и инструкциями по его вставке в код советника (рис 2), вставить не сложно. В процессе оптимизации, после каждого прохода, в...
 
Igor Makanu:

видел под МТ4 и нашел, вот в КБ https://www.mql5.com/ru/code/9202

Данная задача может решаться даже без DLL. Но все же логично предлагать штатную альтернативу костыльным решениям.

 
Renat Fatkhullin:
А вы понимаете, что создаете утечку хендлов на каждом тике?

Такое происходит только с кастомными индикаторами. Со стандартными все ок.

Будет ли поведение приведено к единому виду?

void OnTick()
  {
//---
   int handle = iRSI(_Symbol,_Period,14,PRICE_CLOSE);
   
   Print(handle);
   
   double values[1];
   
   CopyBuffer(handle,0,1,1,values);
  }

rsi

 
Алексей Тарабанов:

Учиться жить так. 

ЗЫ Не лучше в Oninit, а лучше один раз. 

Это возможно (один раз или в ОнИнит), только если все параметры статичны и известны заранее. Если же они меняются или вычесляются на лету, то и хендлы надо переполучать.

 
Andrey Barinov:

Такое происходит только с кастомными индикаторами. Со стандартными все ок.

Будет ли поведение приведено к единому виду?


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

Для кастомных индикаторов такая проверка не производится, и каждый раз создаётся новая копия и новый хэндл.

Так было изначально, и это поведение меняться не будет