попробуйте проделать те же шаги в функции start, а не в init. при инициализации не гарантируется наличия всей истории. она может быть в процессе подкачки.
вообще, сделайте пожалуйста тестового эксперта, пришлите его мне на stringoATmetaquotesDOTru. я запущу у себя и сравним результаты. будет гораздо проще проблему найти
вообще, сделайте пожалуйста тестового эксперта, пришлите его мне на stringoATmetaquotesDOTru. я запущу у себя и сравним результаты. будет гораздо проще проблему найти
попробуйте проделать те же шаги в функции start, а не в init. при инициализации не гарантируется наличия всей истории. она может быть в процессе подкачки.
Я специально привел кусок кода, чтобы было понятно, что я проверял оба варианта.
Для себя я эту провлему решил с ухищрениями, а подробный отчет об экперименте привел для вас потому что мне не безразлична чистота вашего кода.
Если у вас найдется время перечитайте внимательней первое послание.
Если нет я это тоже пойму, просто скажите что сейчас не до того.
вообще, сделайте пожалуйста тестового эксперта, пришлите его мне на stringoATmetaquotesDOTru. я запущу у себя и сравним результаты. будет гораздо проще проблему найти
Запускайте...
#property indicator_separate_window int init() { Print( "init(): iBarShift( Symbol(), 60, StrToTime(\"2005.09.02 00:00\"))= "+iBarShift( Symbol(), 60, StrToTime("2005.09.02 00:00"))); return(0); } int start() { Print( "start(): iBarShif( Symbol(), 60, StrToTime(\"2005.09.02 00:00\"))t= "+iBarShift( Symbol(), 60, StrToTime("2005.09.02 00:00"))); }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А теперь обнаружил еще одну накладку с функцией "iBarShif" и тоже после компиляции. Причем ошибка возникает только при вызове функции на томже периоде что и установлен на грфике.
Ниже привожу результат эксперимента (период на графике=60 не менялся)
20051007.log
//========= После компиляции вызов с совпадающим периодом =========
09:31:26 Compiling 'MACD_TEST'
09:31:26 MACD_TEST EURUSD,H1: loaded successfully
09:31:26 MACD_TEST EURUSD,H1: init(): iBarShift( Symbol(), 60, StrToTime("2005.09.02 00:00"))= -1 // Неправильная работа функции после компиляции на совпадающем периоде
09:31:26 MACD_TEST EURUSD,H1: initialized
09:31:26 MACD_TEST EURUSD,H1: start(): iBarShif( Symbol(), 60, StrToTime("2005.09.02 00:00"))t= 603
09:31:26 MACD_TEST EURUSD,H1: start(): iBarShif( Symbol(), 60, StrToTime("2005.09.02 00:00"))t= 603 // Старая проблема двойного вызова после перекомпиляции
//========= После компиляции вызов с другим периодом =========
09:31:55 Compiling 'MACD_TEST'
09:31:55 MACD_TEST EURUSD,H1: loaded successfully
09:31:55 MACD_TEST EURUSD,H1: init(): iBarShift( Symbol(), 30, StrToTime("2005.09.02 00:00"))= 1207 // На графике период=60 вызов с другим периодом и проблема исчезла
09:31:55 MACD_TEST EURUSD,H1: initialized
09:31:55 MACD_TEST EURUSD,H1: start(): iBarShif( Symbol(), 30, StrToTime("2005.09.02 00:00"))t= 1207
09:31:55 MACD_TEST EURUSD,H1: start(): iBarShif( Symbol(), 30, StrToTime("2005.09.02 00:00"))t= 1207 // Эта проблема осталась
09:32:18 MACD_TEST EURUSD,H1: removed
//========= Перекомиляция при отсоединенном индикаторе=========
09:32:29 Compiling 'MACD_TEST'
//========= После отсоединения и повторного подключения вызов с совпадающим периодом =========
09:32:32 MACD_TEST EURUSD,H1: loaded successfully
09:32:33 MACD_TEST EURUSD,H1: init(): iBarShift( Symbol(), 60, StrToTime("2005.09.02 00:00"))= 603 // При любом другом варианте старта кроме компиляции проблемы нет
09:32:33 MACD_TEST EURUSD,H1: initialized
09:32:33 MACD_TEST EURUSD,H1: start(): iBarShif( Symbol(), 60, StrToTime("2005.09.02 00:00"))t= 603 // При любом другом варианте старта кроме компиляции этой проблемы тоже нет