Спасибо, Виктор, завтра утром попробую.
Забыл ко всему вышеизложенному добавить: краш-тест проводился на машине с ОС XP SP2. На выходных буду мучить железо с W7x64. Посмотрим, а вдруг...
Попробуйте добавить переменную на глобальном уровне и проинициализируйте ее в инит. Изменение значение позволит точно определить что и как
интересовался такой проблемой. При отсутствии тиков, эксперт, в отличии от индикатора, инициализируется только ручками.
Тогда почему при первоначальной загрузке эксперта на график отключенного от брокера терминала никаких тиков не требуется? Я так понимаю, что для тиков есть обработчик OnTick(), а OnInit() предназначен для инициализации, которой тики не должны быть нужны. Я такого в документации не встречал
Такой факт. Недокументированное поведение. Не в первый раз это было.
У меня есть эксперт, в котором есть OnTick() и OnTimer(), а без тиков эксперт не инициализируется. А, вот, инициализация индикатора, происходит.
Вот не представляется возможным воспроизвести описанное вами поведение.
Инит и деинит отрабатывают четко.
Возможно есть какие то особенности?
2015.01.22 12:37:55.413 Expert Empty EURUSD,M1: loaded successfully 2015.01.22 12:37:55.520 Empty EURUSD,M1: OnInit 2015.01.22 12:37:55.520 Empty EURUSD,M1: initialized 2015.01.22 12:38:04.703 Empty EURUSD,M1: uninit reason 3 2015.01.22 12:38:04.703 Empty EURUSD,M1: OnDeinit 2015.01.22 12:38:04.932 Empty EURUSD,M5: OnInit 2015.01.22 12:38:04.932 Empty EURUSD,M5: initialized 2015.01.22 12:38:09.792 Empty EURUSD,M5: uninit reason 4 2015.01.22 12:38:09.792 Empty EURUSD,M5: OnDeinit 2015.01.22 12:38:09.819 Expert Empty EURUSD,M5: removed 2015.01.22 12:38:17.277 Expert Empty EURUSD,M1: loaded successfully 2015.01.22 12:38:21.411 Empty EURUSD,M1: OnInit 2015.01.22 12:38:21.411 Empty EURUSD,M1: initialized 2015.01.22 12:38:29.232 Empty EURUSD,M1: uninit reason 3 2015.01.22 12:38:29.232 Empty EURUSD,M1: OnDeinit 2015.01.22 12:38:29.430 Empty EURUSD,M5: OnInit 2015.01.22 12:38:29.430 Empty EURUSD,M5: initialized 2015.01.22 12:38:37.390 Empty EURUSD,M5: uninit reason 1 2015.01.22 12:38:37.390 Empty EURUSD,M5: OnDeinit 2015.01.22 12:38:37.419 Expert Empty EURUSD,M5: removed
Вот не представляется возможным воспроизвести описанное вами поведение.
Инит и деинит отрабатывают четко.
Возможно есть какие то особенности?
OC WinXP SP2. На момент теста терминал не был подключен к брокеру. Почему вскочил вопрос - отвечу: советник (естественно, не тот что в 1 посте) в связке с индикатором. При выключении терминала и последующем его включении (индюк и сов не удалялись с графика) отметил, что индюк не сигнализирует о присутствии сова на графике. Вот отсюда весь сыр-бор. Ну и последующее тестирование примитивного сова с прилагающимися объективными скриншотами (там видно время выполнения и результаты - жмите на картинки: они будут на весь экран) подтвердило это грустное явление.
Вчера вечером на ОС Win7x64 кидал связку индюка и сова на терминал, подключенный к брокеру - т.е. тики шли регулярно. При перезагрузке терминала таких косяков не наблюдалось. Вероятно, к этому господину
Такой факт. Недокументированное поведение. Не в первый раз это было.
У меня есть эксперт, в котором есть OnTick() и OnTimer(), а без тиков эксперт не инициализируется. А, вот, инициализация индикатора, происходит.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Уважаемые господа разработчики, попытаюсь снова привлечь Ваше внимание к очередному косячку (ибо вопросы 1 и 2 так и остались висеть... зато как висят!).
Итак, документация MQL4. Проходим по ссылке и внимательно читаем подраздел Загрузка и выгрузка экспертов.
Терминал
Тестовый эксперт. Простейший код:
1. Кидаем эксперт на график:
пока не нажали ОК - OnInit() не сработал. Полет нормальный.
2. Жмем ОК:
все отлично. Функция OnInit() выполнена.
3. Удаляем эксперт с графика:
ну просто душа радуется! (оказалось, радоваться рано, как ни странно...)
4. Снова устанавливаем эксперт на этот же график и, не удаляя эксперт, переключаем таймфрейм графика с М1 на H1
УПС! Душа болит и сердце плачет:
как видно на скриншоте, при смене таймфрейма в соответствием с документацией был вызван обработчик OnDeinit(), который, как мне думается, выполнил свою функцию (ибо напечатано <OnDeinit>)
а вот обработчик OnInit() после этого вызван не был, чему скриншот - объективное доказательство.
5. Удаляем эксперт с графика:
Как видим, эксперт, так и не инициализировавшись на Н1, под стук колес моментом испарился
6. Снова устанавливаем эксперт на график (см. пп 1 и 2), закрываем терминал, не открепляя эксперт с графика, снова открываем терминал и:
печалька... не инициализировался. А в документации все не так...
Подняв руку вверх и произнеся волшебное заклинание "Хусим", удаляем эксперт с графика:
И никаких обработчиков событий не было.
Может подскажете - что не так делал?