Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Может кто знает, какое имеется штатное перечисление вместо ENUM_SERIESMODE ?
На это: extern ENUM_SERIESMODE Var1 = MODE_LOW; - компилятор выдает предупреждение:
implicit conversion from 'enum ENUM_MARKETINFO' to 'enum ENUM_SERIESMODE'
ENUM_SERIESMODE::MODE_LOW' will be used instead of 'ENUM_MARKETINFO::MODE_LOW'
F1 тоже ничего не знает по ENUM_SERIESMODE. И вообще не найдено никакого ENUM для перечисления MODE_OPEN/MODE_LOW/MODE_HIGH/MODE_CLOSE/MODE_VOLUME/MODE_TIME, хотя теоретически что-то должно быть. Ответов нигде не нашел, только постановку вопроса: Бета-версия платформы MetaTrader 4 build 1145 - MQL4 и MetaTrader 4 - Форум алго-трейдеров MQL4 - Страница 8 (mql5.com)
Выделил.
Может кто знает, какое имеется штатное перечисление вместо ENUM_SERIESMODE ?
На это: extern ENUM_SERIESMODE Var1 = MODE_LOW; - компилятор выдает предупреждение:
implicit conversion from 'enum ENUM_MARKETINFO' to 'enum ENUM_SERIESMODE'
ENUM_SERIESMODE::MODE_LOW' will be used instead of 'ENUM_MARKETINFO::MODE_LOW'
F1 тоже ничего не знает по ENUM_SERIESMODE. И вообще не найдено никакого ENUM для перечисления MODE_OPEN/MODE_LOW/MODE_HIGH/MODE_CLOSE/MODE_VOLUME/MODE_TIME, хотя теоретически что-то должно быть. Ответов нигде не нашел, только постановку вопроса: Бета-версия платформы MetaTrader 4 build 1145 - MQL4 и MetaTrader 4 - Форум алго-трейдеров MQL4 - Страница 8 (mql5.com)
Может кто знает, какое имеется штатное перечисление вместо ENUM_SERIESMODE ?
На это: extern ENUM_SERIESMODE Var1 = MODE_LOW; - компилятор выдает предупреждение:
implicit conversion from 'enum ENUM_MARKETINFO' to 'enum ENUM_SERIESMODE'
ENUM_SERIESMODE::MODE_LOW' will be used instead of 'ENUM_MARKETINFO::MODE_LOW'
F1 тоже ничего не знает по ENUM_SERIESMODE. И вообще не найдено никакого ENUM для перечисления MODE_OPEN/MODE_LOW/MODE_HIGH/MODE_CLOSE/MODE_VOLUME/MODE_TIME, хотя теоретически что-то должно быть. Ответов нигде не нашел, только постановку вопроса: Бета-версия платформы MetaTrader 4 build 1145 - MQL4 и MetaTrader 4 - Форум алго-трейдеров MQL4 - Страница 8 (mql5.com)
Предупреждение перестало появляться. Но - выбор значений предлагается из ENUM_APPLIED_PRICE (PRICE_CLOSE/PRICE_OPEN/PRICE_HIGH/...) вместо MODE_OPEN/MODE_LOW/MODE_HIGH/... <-- Наверное не туда глянул. ENUM_SERIESMODE::MODE_LOW - это помогло, Спасибо!
"Попробуйте вместо extern использовать input." - нет эффекта.
Интересно, как получить эти надписи иным образом?
На VPS на MT5-терминалах библиотека стала алертить. Полез в Windows TaskManager и обнаружил CPU 100%.
На всех MT4-терминалах b1330, где были запущены торговые роботы, получил зависание почти всех советников (некоторые остались работать. Индикаторы все работают).
Когда штатно делал Remove каждого зависшего, то сначала получал "Не отвечает", и спустя много секунд советник удалялся.
После снятия всех зависших советников в Experts-логе такие строки.
В Journal-логе:
Единственное упоминание выделенных строк нашел здесь. Что это?
Все случилось на реальном ПАММ-счете, поэтому стал рассматривать возможности поймать место зависания. Написал такой советник, где после захода в OnTick попробовал снять его.
Получил такое.
Выделил строку Abnormal termination, потому что она отсутствовала (см. выше логи) при удалении с графика зависших ПАММ-советников.
А в Journal-логе этого короткого тестового советника нет никакого упоминания Terminate execution thread #xxxx:
Прошу помочь разобраться в ситуации. Попутно выяснил, что удаление советника с бесконечным циклом по Abnormal termination ничего не выполняет (принт Hello) после цикла.
В боевых советниках нет бесконечных циклов. Но на случай будущих сбоев понял, что во всех циклах нужно прописывать IsStopped и распринтовку после. Например, так:
Казалось бы, что здесь нечему подвиснуть и IsStopped лишний. Но когда имеешь дело с непонятным зависанием, только такая возможность в теории может дать хоть какой-то шанс нащупать проблемное место.
И в конце каждой функции делать распринтовку в случае IsStopped, чтобы увидеть "матрешку" вызовов при снятии советника.
В общем, судя по логам, получил очень нестандартное зависание. При этом одновременно на нескольких MT4-терминалах. Очень надеюсь, что обсуждение поможет разобраться.
ЗЫ Когда снял все зависшие советники, то с оставшимися работающими советниками и всеми индикаторами загрузка CPU стала 0.1%. Помимо нескольких MT4-терминалов параллельно пашут MT5-терминалы, они все летают без каких-либо проблем.
ЗЗЫ Когда снимал советники с последнего из запущенных проблемного MT4-терминала, то только там не было Terminate execution thread #xxxx, а были Abnormal termination.ЗЫ Когда снял все зависшие советники, то с оставшимися работающими советниками и всеми индикаторами загрузка CPU стала 0.1%. Помимо нескольких MT4-терминалов параллельно пашут MT5-терминалы, они все летают без каких-либо проблем.
Оптимизация выделенных ресурсов на задачи в условиях голода.) Жаль нельзя делать настройки выделения ресурсов.
Частая проблема зависаний, безудержное потребление ресурсов, но это больше проблема ОСи.
в MQL4 в бесконечных циклах обязательно нужно вставлять Sleep() - иначе будет подвисать терминал или другие советники
ЗЫ: Sleep( 1 ) - может быть мало, экспериментально нужно подобрать время задержки
в MQL4 в бесконечных циклах обязательно нужно вставлять Sleep() - иначе будет подвисать терминал или другие советники
Это был просто пример. Sleep(100) все равно даст Abnormal.
Это был просто пример. Sleep(100) все равно даст Abnormal.
Abnormal - все логично, было принудительное закрытие, а без Sleep() - это принудительное закрытие может несколько секунд происходить
сделайте правильное условие для бесконечного цикла:
ЗЫ: MQL5 можно без Sleep() - но не во всех билдах, был какой то былд который как 4-ка работает только со Sleep()