Всем привет, сломал весь мозг но не понял что за бред.
Смотрите, внешний иф никогда не срабатывает, так и должно быть. НО при этом код вообще не работает, ни один алерт не вылетает, и ошибок компиляции тоже нет.
Теперь внимание - стоит во внутреннем ифе вместо if (1) написать if (0) алерты срабатывают. ЧТО вообще происходит?
Уточню - Alert("333"); никогда не срабатывает, в тот иф вообще никак попасть нельзя, так и должно быть. Но при этом после запуска ничего вообще не работает и ошибок нет.
Однако если сделать как я сказал - все работает, что это?
Укажите данные терминала и операционной системы:
Forum on trading, automated trading systems and testing trading strategies
Vladimir Karputov, 2021.03.16 04:20
If you have a question, first of all you should show the first three lines from the 'Journal' tab
(select these lines, copy to the clipboard and paste into the message using the button ). It should look like this:
2021.03.16 05:13:07.133 Terminal MetaTrader 5 x64 build 2832 started for MetaQuotes Software Corp. 2021.03.16 05:13:07.134 Terminal Windows 10 build 19042, Intel Core i7-9750H @ 2.60GHz, 26 / 31 Gb memory, 842 / 947 Gb disk, IE 11, UAC, GMT+2 2021.03.16 05:13:07.134 Terminal C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
Попробуйте перезапустить терминал.
Укажите данные терминала и операционной системы:
Version 4.00 build 1340
23 jul 2021
Брокер Forex4You
Конешно же я много раз это сделал) Стабильно неадекватный результат! Если что речь о метатрейдере 4 и mql 4.
Тогда, может быть, есть какие-то ошибки перед выполнением этого кода. Может быть, выход за пределы массива, деление на 0. Может быть, в каком-то другом индикаторе или эксперте, работающем в терминале.
Тогда, может быть, есть какие-то ошибки перед выполнением этого кода. Может быть, выход за пределы массива, деление на 0. Может быть, в каком-то другом индикаторе или эксперте, работающем в терминале.
К сожалению ничего нет, всего 3 пары со стандартным мовинг-авераге)
Чтобы я на форуме людей доставал причина должна быть серьезной, вот как раз сейчас такой случай)
Переустановил терминал - не помогло.
Переустановил терминал - не помогло.
А переустанавливать ОС не пробовали?))))
Говорят помогает иногда.
Всем привет, сломал весь мозг но не понял что за бред.
Смотрите, внешний иф никогда не срабатывает, так и должно быть. НО при этом код вообще не работает, ни один алерт не вылетает, и ошибок компиляции тоже нет.
Теперь внимание - стоит во внутреннем ифе вместо if (1) написать if (0) алерты срабатывают. ЧТО вообще происходит?
Уточню - Alert("333"); никогда не срабатывает, в тот иф вообще никак попасть нельзя, так и должно быть. Но при этом после запуска ничего вообще не работает и ошибок нет.
Однако если сделать как я сказал - все работает, что это?
Вы не предоставили всей информации. Если дополнить код, чтобы компилировался, то всё работает.
//+------------------------------------------------------------------+ //| trash.mq4 | //| Copyright 2019, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict string symbol="EURUSD"; int type=1; bool flag_1_1_b_need_first,flag_1_1_b_need_next,flag_1_1_s_need_first,flag_1_1_s_need_next; int info[2]; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- Alert("222"); if(symbol == "EURCHF" && ((type == OP_BUY) || (type == OP_SELL))) { Alert("333"); if(1) { if(type == OP_BUY) { flag_1_1_b_need_first = false; flag_1_1_b_need_next = fmax(flag_1_1_b_need_next, info[1]); } else { flag_1_1_s_need_first = false; flag_1_1_s_need_next = fmax(flag_1_1_s_need_next, info[1]); } } } else { Alert("444"); } } //+------------------------------------------------------------------+
Да, не стал весь кидать, ну ок, вот представлю весь. На самом деле непоняток еще больше, я просто решил на одной из них здесь сфокусироваться.
В данный момент все работает как я сказал, если if (0) то работает, если if (1) то нет.
#property copyright "Жан Батист Эмануэль Зорг" #property link "https://www.mql5.com" #property version "1.00" #property strict string symbols[3]; string state[3]; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- create timer EventSetTimer(60); symbols[0] = "EURUSD"; symbols[1] = "EURCHF"; symbols[2] = "EURCAD"; state[1] = "Необходимо открыть стартовые ордера"; Alert("111"); string buf = ""; string symbol; int type; int i, total = OrdersHistoryTotal(); bool flag_1_1_b_need_first = true; bool flag_1_1_s_need_first = true; int flag_1_1_b_need_next = 0; int flag_1_1_s_need_next = 0; string info[3]; for (i = 0; i < total; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) { Alert("Ошибка при доступе к исторической базе (", GetLastError(), ")"); break; } symbol = OrderSymbol(); type = OrderType(); Alert("222"); if (symbol == "EURCHF" && ((type == OP_BUY) || (type == OP_SELL))) { Alert("333"); if (0) { if (type == OP_BUY) { flag_1_1_b_need_first = false; flag_1_1_b_need_next = fmax(flag_1_1_b_need_next, info[1]); } else { flag_1_1_s_need_first = false; flag_1_1_s_need_next = fmax(flag_1_1_s_need_next, info[1]); } } } else { Alert("444"); } break; } if (flag_1_1_b_need_first) { buf += "Необходимо открыть первый ордер на покупку.\n"; } if (flag_1_1_b_need_next) { buf += "Необходимо открыть " + (flag_1_1_b_need_next + 1) + " ордер на покупку.\n"; } if (flag_1_1_s_need_first) { buf += "Необходимо открыть первый ордер на продажу.\n"; } if (flag_1_1_s_need_next) { buf += "Необходимо открыть " + (flag_1_1_s_need_next + 1) + " ордер на продажу.\n"; } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- destroy timer EventKillTimer(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { } //+------------------------------------------------------------------+
ЗЫ: Там где эти if (0) у меня на самом деле был вызов функции самодельной, но я вот специально ее убрал ради чистоты эксперимента, думал в ней дело, но теперь ее нет.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет, сломал весь мозг но не понял что за бред.
Смотрите, внешний иф никогда не срабатывает, так и должно быть. НО при этом код вообще не работает, ни один алерт не вылетает, и ошибок компиляции тоже нет.
Теперь внимание - стоит во внутреннем ифе вместо if (1) написать if (0) алерты срабатывают. ЧТО вообще происходит?
Уточню - Alert("333"); никогда не срабатывает, в тот иф вообще никак попасть нельзя, так и должно быть. Но при этом после запуска ничего вообще не работает и ошибок нет.
Однако если сделать как я сказал - все работает, что это?