Особенности языка mql4, тонкости и приёмы работы - страница 32

 
Andrey Khatimlianskii:

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

Что у вас так долго считается, что заметны редкие случаи сброса prev_calculated?

Эксперт каждую минуту обращается к индикатору и проверяет что нового, ели замечен prev_calculated=0, то идет полный пересчет, может и не долго считается но всё равно. А например пара USDCNH не так уж редка у моего брокера сбрасывается.
Время сброса (prev_calculated=0):


П.С. Мне даже самому интересна какая свеча меняется если в терминале Max bar in history/chart поставлено 2000/2000.
 
Nauris Zukas:

П.С. Мне даже самому интересна какая свеча меняется если в терминале Max bar in history/chart поставлено 2000/2000.

напишите индикатор у которого будет 4 индикаторных буфера хранящих OHLC - заполните при первом запуске индикатора

и при срабатывании prev_calculated=0 пишете в лог свечи где появилось несоответствие  OHLC  и буферов  и затем синхронизируйте индикаторные буфера с новыми  OHLC

ЗЫ: в принципе и заполнять при первом запуске индикатора буфера нет смысла - это можно и при  prev_calculated=0 выполнить

 
Nauris Zukas:

Эксперт каждую минуту обращается к индикатору и проверяет что нового, ели замечен prev_calculated=0, то идет полный пересчет, может и не долго считается но всё равно. А например пара USDCNH не так уж редка у моего брокера сбрасывается.
Время сброса (prev_calculated=0):


П.С. Мне даже самому интересна какая свеча меняется если в терминале Max bar in history/chart поставлено 2000/2000.

Вряд ли это изменение баров. Скорее, что-то служебное.

Вообще не вижу смысла заморачиваться.

 
Andrey Khatimlianskii:

Скорее, что-то служебное.

О таком не подозревал. Ну тогда точно нету смысла заморачиваться. Просто читал в справочнике "Если с момента последнего вызова функции OnCalculate() ценовые данные были изменены (подкачана более глубокая история или были заполнены пропуски истории), то значение входного параметра prev_calculated будет установлено в нулевое значение самим терминалом."

 
Igor Makanu:

напишите индикатор у которого будет 4 индикаторных буфера хранящих OHLC - заполните при первом запуске индикатора

и при срабатывании prev_calculated=0 пишете в лог свечи где появилось несоответствие  OHLC  и буферов  и затем синхронизируйте индикаторные буфера с новыми  OHLC

ЗЫ: в принципе и заполнять при первом запуске индикатора буфера нет смысла - это можно и при  prev_calculated=0 выполнить

Да спасибо, ради интереса сделаю отдельные индикатор, проверю меняется свечи или там что-то служебное.

 
OrderModify TP и SL не проходит у ДЦ по одной паре (HSI50), с остальными парами всё в порядке у ДЦ. Мануально всё изменяется, но как только пытаться OrderModify - никак, даже убрать TP и SL не можно с OrderModify. Ошибку выдаёт invalid price (129). Очевидно там запрет на OrderModify стоит (не понятно зачем).
Вопрос, кто-то делал проверку на OrderModify? Как такое проверять?
П.С. В спецификации контракта HSI50 (Full acces).
 
Добрый день!
У одного брокера постоянна (раз или два в сутки) слетает MarketInfo(), получает значение 0 ( конкретно MODE_MARGINREQUIRED). Это как бы всё нормально, защиту сделал но в это же время пропадает всякая попытка достучатся до iCustom() индикатора (подключен через ресурс). Даже после того как MarketInfo() опять получает данные  iCustom() молчит, стучу по нему но индикатор не подключается. Помогает только перезапуск терминала. Как достучатся до индикатора не перезапуская терминал, какие идей? Индикатор может куда-то пропасть из ресурса?
 
Nauris Zukas:
Добрый день!
У одного брокера постоянна (раз или два в сутки) слетает MarketInfo(), получает значение 0 ( конкретно MODE_MARGINREQUIRED). Это как бы всё нормально, защиту сделал но в это же время пропадает всякая попытка достучатся до iCustom() индикатора (подключен через ресурс). Даже после того как MarketInfo() опять получает данные  iCustom() молчит, стучу по нему но индикатор не подключается. Помогает только перезапуск терминала. Как достучатся до индикатора не перезапуская терминал, какие идей? Индикатор может куда-то пропасть из ресурса?

Вот это вопрос, на который хотелось-бы получить ответ.

 
Подскажите пожалуйста есть ли техническая возможность узнать брокер работает в обычном режиме или по FIFO, не открывая трейдов? Прошерстил всю доку и не нашел такого параметра. В МТ5 в принципе по типу аккаунта можно определить, если неттинговый, то хеджирование отключено.
 
Здравствуйте!

Не помню что встречался с "array out of range" для Time[1], но вот такой факт случился в эксперте. Вы делайте какую-то проверку на "array out of range" для предопределенных переменных массива-таймсерий?