Уважаемые форумчане, помогите, пожалуйста, разобраться!
Имеется скрипт и вот такой простой кусок кода:
Скрипт запускается 1 раз в сутки.
При ПЕРВОМ запуске скрипта котировка в open_real всегда приходит неправильная, близкая к реальной, но неправильная. Откуда она берется - загадка...
При ВТОРОМ и всех последующих запусках котировка правильная.
Такое ощущение, что терминал просто "не успевает" за скриптом.
Может кто сталкивался с подобным? Подскажите, плиз, а то я уже всю голову сломал...
Значит, код неправильный, но он не виноват! Обращайтесь к автору скрипта, если сами не можете!
Значит, код неправильный, но он не виноват! Обращайтесь к автору скрипта, если сами не можете!
Значит, Вы просто не сталкивались с подобным. Код неправильный? ))) Ну-ну...
Значит, Вы просто не сталкивались с подобным. Код неправильный? ))) Ну-ну...
Вероятно, долго инициализируется,- не успевает до поступления нового тика. Не смертельно:)
А можно как-то это вылечить?
Я пробовал делать небольшой цикл с паузами по 1 секунде. Не помогает...
Ощущение такое, что терминал не успевает "отдать" запрашиваемую котировку.
Есть какое-нибудь готовое решение, чтобы терминал отдавал котировку только когда они полностью загрузились?
Уважаемые форумчане, помогите, пожалуйста, разобраться!
Имеется скрипт и вот такой простой кусок кода:
Скрипт запускается 1 раз в сутки.
При ПЕРВОМ запуске скрипта котировка в open_real всегда приходит неправильная, близкая к реальной, но неправильная. Откуда она берется - загадка...
При ВТОРОМ и всех последующих запусках котировка правильная.
Такое ощущение, что терминал просто "не успевает" за скриптом.
Может кто сталкивался с подобным? Подскажите, плиз, а то я уже всю голову сломал...
Определить причину по одной строчке кода не представляется возможным (для нетелепатов). Поиск ВСЕГДА начинается с распринтовки передаваемых значений - этим и займитесь для начала.
Спасибо за ответ.
Если я напишу 10 строчек, например так:
int start() { string MAIN[zz] = ... string str_data = ... int broker_sdvig = ... double open_real = iOpen( MAIN[zz], PERIOD_H1, iBarShift(MAIN[zz], PERIOD_H1, (StrToTime(str_data) + broker_sdvig))); print (open_real); return(0); }
то сразу станет легче?
Была у меня такая история с моим авто лет 15 назад. Разные "мастера" что-то тестировали, долго вели ПОИСК, небесплатно кстати... А потом появился чел, который с проблемой сталкивался. Через 5 минут проблемы не стало.
Я знаю как вести поиск и проблему в принципе смогу решить сам, только:
1) зачем изобретать велосипед?
2) зачем нужен форум?
А у вас график на H1 открыт? или как должны подгрузиться котировки.
Нет, не открыт. Так ведь я не для текущего графика котировку запрашиваю (для этого есть массив Open[]), а для указанного параметром MAIN[zz].
Хотя какая-то логика в этом есть. Фактически, если предположить, что есть некое место (типа буфера), куда подгружаются котировки, то первый проход скрипта их туда подгружает (но не считывает), а второй - считывает.
Тогда вопросы: в какое конкретное место подгружаются котировки, как понять, что они окончательно подгрузились (звучит правда бредово), и как их из этого места забрать?
Котировки начинают подгружаться только в момент первого обращения... Так что первое возвращаемое значение может быть не совсем корректным.
Из простых подручных вариантов держать на графике мультитаймфреймный/валютный индикатор, за счет его работы котировки будут в актуальном состоянии и полной готовности.
либо ловить и обрабатывать ошибку
4066 | ERR_HISTORY_WILL_UPDATED | Запрошенные исторические данные в состоянии обновления |
Котировки начинают подгружаться только в момент первого обращения... Так что первое возвращаемое значение может быть не совсем корректным.
Из простых подручных вариантов держать на графике мультитаймфреймный/валютный индикатор, за счет его работы котировки будут в актуальном состоянии и полной готовности.
либо ловить и обрабатывать ошибку
4066 | ERR_HISTORY_WILL_UPDATED | Запрошенные исторические данные в состоянии обновления |
Разумно. Первый вариант не мой случай, т.к. графиков много, а скрипт может обратиться к любому. Держать все графики открытыми с запущенным индикатором нмв не совсем красивое решение.
А второй вариант обязательно попробую и напишу что из этого вышло.
Спасибо.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Уважаемые форумчане, помогите, пожалуйста, разобраться!
Имеется скрипт и вот такой простой кусок кода:
Скрипт запускается 1 раз в сутки.
При ПЕРВОМ запуске скрипта котировка в open_real всегда приходит неправильная, близкая к реальной, но неправильная. Откуда она берется - загадка...
При ВТОРОМ и всех последующих запусках котировка правильная.
Такое ощущение, что терминал просто "не успевает" за скриптом.
Может кто сталкивался с подобным? Подскажите, плиз, а то я уже всю голову сломал...