Есть такой код:
При запуске, оказывается, что этот код делает не то что предполагалось:
Как видите, изначально level равно не 1, а какому-то рандомному числу, от него уже идет инкрементация.
Не понимаю в чем дело. Как исправить данную проблему?
int level = 1; void OnTick() { Print("!!!!! level: ",level); ExpertRemove(); }
Лучше так:
Print("!!!!! level: ",level); TerminalClose(0);
Пожалуйста указывайте терминал, билд и операционную систему - эти данные - первые три строчки из вкладки "Журнал" после запуска терминала:
2018.04.24 07:03:44.775 MetaTrader 5 x64 build 1795 started (MetaQuotes Software Corp.) 2018.04.24 07:03:44.777 Windows 10 (build 16299) x64, IE 11, UAC, Intel Core i3-3120M @ 2.50GHz, Memory: 4708 / 8077 Mb, Disk: 287 / 464 Gb, GMT+2 2018.04.24 07:03:44.777 C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
Не жалейте букв и чернил, сразу составляйте наиболее полный код:
//+------------------------------------------------------------------+ //| Test Global Program Variable.mq5 | //| Copyright © 2018, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "2009-2017, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" //--- int level=1; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- Print(__FUNCTION__,", ",Symbol()," ",EnumToString(Period())," !!!!! level: ",level); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- Print(__FUNCTION__,", ",Symbol()," ",EnumToString(Period())," !!!!! level: ",level); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { Print("!!!!! level: ",level); level++; Print("!!!!! level: ",level); level++; Print("!!!!! level: ",level); level++; } //+------------------------------------------------------------------+
И вывод во вкладку "Эксперты": изначально эксперт запущен на USDCAD,M15, затем был сменён таймфрейм графика на M5. После этого был заменён символ: с USDCAD на AUDJPY и в конце эксперт был удалён вручную с графика:
2018.04.24 07:11:01.968 OnInit, USDCAD PERIOD_M15 !!!!! level: 1 2018.04.24 07:11:08.710 !!!!! level: 1 2018.04.24 07:11:08.710 !!!!! level: 2 2018.04.24 07:11:08.710 !!!!! level: 3 2018.04.24 07:11:08.756 !!!!! level: 4 2018.04.24 07:11:08.756 !!!!! level: 5 2018.04.24 07:11:08.756 !!!!! level: 6 2018.04.24 07:11:09.507 OnDeinit, USDCAD PERIOD_M15 !!!!! level: 7 2018.04.24 07:11:09.645 OnInit, USDCAD PERIOD_M5 !!!!! level: 7 2018.04.24 07:11:14.111 !!!!! level: 7 2018.04.24 07:11:14.111 !!!!! level: 8 2018.04.24 07:11:14.111 !!!!! level: 9 2018.04.24 07:11:18.195 OnDeinit, USDCAD PERIOD_M5 !!!!! level: 10 2018.04.24 07:11:19.148 OnInit, AUDJPY PERIOD_M5 !!!!! level: 10 2018.04.24 07:11:19.713 !!!!! level: 10 2018.04.24 07:11:19.713 !!!!! level: 11 2018.04.24 07:11:19.713 !!!!! level: 12 2018.04.24 07:11:20.525 !!!!! level: 13 2018.04.24 07:11:20.525 !!!!! level: 14 2018.04.24 07:11:20.525 !!!!! level: 15 2018.04.24 07:11:20.697 !!!!! level: 16 2018.04.24 07:11:20.697 !!!!! level: 17 2018.04.24 07:11:20.697 !!!!! level: 18 2018.04.24 07:11:22.581 OnDeinit, AUDJPY PERIOD_M5 !!!!! level: 19
Переменная "level" объявленная на глобальном программном уровне работает правильно.
Есть такой код:
При запуске, оказывается, что этот код делает не то что предполагалось:
Как видите, изначально level равно не 1, а какому-то рандомному числу, от него уже идет инкрементация.
Не понимаю в чем дело. Как исправить данную проблему?
В журнал выводятся не все записи. Для ускорения. Чтобы видеть все записи, откройте журнал во встроенном просмотровщике из контекстного меню правой кнопки мыши.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть такой код:
При запуске, оказывается, что этот код делает не то что предполагалось:
Как видите, изначально level равно не 1, а какому-то рандомному числу, от него уже идет инкрементация.
Не понимаю в чем дело. Как исправить данную проблему?