ESM68_13: Здравствуйте, есть вопрос по поводу работы нескольких советников в одном терминале. Пусть имеется несколько роботов, работающих на разных графиках в потоке одного и того же терминала. Открытые и отложенные ордеры для каждого советника идентифицированы, в остальном же мы имеем почти идентичный код и следовательно много переменных с одинаковыми именами. Не будет ли конфликта при одновременном приходе и обработке тиков, и как вообще решается такая задача; поможет ли в этом вопросе объектно-ориентированное программирование? Чем отличается решение в Metatrader4 и Metatrader5? За ранее спасибо.
Вообще-то каждый советник работает в своем потоке, но к делу это не относится, у каждого своя область памяти, т.е. они друг друга не видят никак. Главное, что бы не было глобальных переменных терминала с одинаковыми именами, если они используются. Похожая проблема работы с файлами, если у них будут одинаковые имена - будут конфликты.
На сервере (железном, выделенном) под Win10 запущено 8 терминалов, на каждом по 25 графиков с весьма тяжелым советником и не менее тяжелым
индикатором. Загрузка процессора в пределах 30-40%, памяти свободной тоже много.
Но советники пропускают тики и события таймера (подозреваю, что и другие события тоже, но не проверял). То есть, даже если запустить
советника с одним принтом в OnTick, видно, что цена в обзоре рынка меняется, а принтов нет.
В какое ограничение упираются терминалы? Чего не хватает? В какую сторону копать?
На сервере (железном, выделенном) под Win10 запущено 8 терминалов, на каждом по 25 графиков с весьма тяжелым советником и не менее тяжелым
индикатором. Загрузка процессора в пределах 30-40%, памяти свободной тоже много.
Но советники пропускают тики и события таймера (подозреваю, что и другие события тоже, но не проверял). То есть, даже если запустить
советника с одним принтом в OnTick, видно, что цена в обзоре рынка меняется, а принтов нет.
В какое ограничение упираются терминалы? Чего не хватает? В какую сторону копать?
Пропуск тиков как ещё проверялся, кроме принтов? Возможно ли, что не тики пропускаются, а принты?
Edgar Akhmadeev: Пропуск тиков как ещё проверялся,
кроме принтов? Возможно ли, что не тики пропускаются, а принты?
Еще коментом на графике.
Проблема была замечена в другом — советник с секундным таймером начал запускаться очень редко (иногда с паузами в несколько минут). Советник
взаимодействует со моим собственным сервером через ВебРеквест. Такой же советник на другом компьютере в этот же момент работает исправно
(запускается каждую секунду).
Проблема не в пропадании принтов, а в отсутствии реакции на события.
Edgar Akhmadeev: У меня на очень слабом
VPS запущено 4 MT5 по 7 лёгких эксперта, CPU тоже 30%, а RAM 80%. Проверю-ка я на пропуски. А то сомнения появились.
Сам по себе пропуск ОнТик - явление нормальное. Но не по нескольку минут.
Помню древнее обсуждение похожей темы, там что-то фиксили в регистре винды, чтобы она разрешала то ли больше потоков, то ли событий, то ли еще
чего-то. Но дело было так давно, что найти шансов нет.
OnTick не предназначен для получения тиков без пропусков. Напротив, он специально пропускает все тики, которые приходят во время его
выполнения.
Гарантируется доставка всех тиков в OnBookEvent и в индикаторном OnCalculate.
кстати, почему разработчики в OnChartEvent включили очередь событий? не так много там событий Рабочих чтобы компьютер запинался, а вот в
мультивалютнике засада с этим и нет альтернативы, кроме таймера, но там надо городить проверку дня
недели, сколько еще лет должно пройти когда OnCalculateдобавят в советники....
вот вопрос давно уже, чье это уперство и торможение прогресса в программе
Здравствуйте, есть вопрос по поводу работы нескольких советников в одном терминале. Пусть имеется несколько роботов, работающих на разных графиках в потоке одного и того же терминала. Открытые и отложенные ордеры для каждого советника идентифицированы, в остальном же мы имеем почти идентичный код и следовательно много переменных с одинаковыми именами. Не будет ли конфликта при одновременном приходе и обработке тиков, и как вообще решается такая задача; поможет ли в этом вопросе объектно-ориентированное программирование? Чем отличается решение в Metatrader4 и Metatrader5? За ранее спасибо.
Вообще-то каждый советник работает в своем потоке, но к делу это не относится, у каждого своя область памяти, т.е. они друг друга не видят никак. Главное, что бы не было глобальных переменных терминала с одинаковыми именами, если они используются. Похожая проблема работы с файлами, если у них будут одинаковые имена - будут конфликты.
Если пишете сами, легко меня поймете.
Думал, что разбираюсь в теме. Оказалось, что нет.
На сервере (железном, выделенном) под Win10 запущено 8 терминалов, на каждом по 25 графиков с весьма тяжелым советником и не менее тяжелым индикатором. Загрузка процессора в пределах 30-40%, памяти свободной тоже много.
Но советники пропускают тики и события таймера (подозреваю, что и другие события тоже, но не проверял). То есть, даже если запустить советника с одним принтом в OnTick, видно, что цена в обзоре рынка меняется, а принтов нет.
В какое ограничение упираются терминалы? Чего не хватает?
В какую сторону копать?
Думал, что разбираюсь в теме. Оказалось, что нет.
На сервере (железном, выделенном) под Win10 запущено 8 терминалов, на каждом по 25 графиков с весьма тяжелым советником и не менее тяжелым индикатором. Загрузка процессора в пределах 30-40%, памяти свободной тоже много.
Но советники пропускают тики и события таймера (подозреваю, что и другие события тоже, но не проверял). То есть, даже если запустить советника с одним принтом в OnTick, видно, что цена в обзоре рынка меняется, а принтов нет.
В какое ограничение упираются терминалы? Чего не хватает?
В какую сторону копать?
Пропуск тиков как ещё проверялся, кроме принтов? Возможно ли, что не тики пропускаются, а принты?
Еще коментом на графике.
Проблема была замечена в другом — советник с секундным таймером начал запускаться очень редко (иногда с паузами в несколько минут).
Советник взаимодействует со моим собственным сервером через ВебРеквест. Такой же советник на другом компьютере в этот же момент работает исправно (запускается каждую секунду).
Проблема не в пропадании принтов, а в отсутствии реакции на события.
У меня на очень слабом VPS запущено 4 MT5 по 7 лёгких эксперта, CPU тоже 30%, а RAM 80%. Проверю-ка я на пропуски. А то сомнения появились.
Сам по себе пропуск ОнТик - явление нормальное. Но не по нескольку минут.
Помню древнее обсуждение похожей темы, там что-то фиксили в регистре винды, чтобы она разрешала то ли больше потоков, то ли событий, то ли еще чего-то. Но дело было так давно, что найти шансов нет.
Был бы очень кстати комментарий @Renat Fatkhullin или @Slava
Сам по себе пропуск ОнТик - явление нормальное. Но не по нескольку минут.
Считается вроде, что тики пропускаются только в МТ4, но не в МТ5.
Не путайте теплое с мягким.
OnTick не предназначен для получения тиков без пропусков. Напротив, он специально пропускает все тики, которые приходят во время его выполнения.
Гарантируется доставка всех тиков в OnBookEvent и в индикаторном OnCalculate.
Не путайте теплое с мягким.
OnTick не предназначен для получения тиков без пропусков. Напротив, он специально пропускает все тики, которые приходят во время его выполнения.
Гарантируется доставка всех тиков в OnBookEvent и в индикаторном OnCalculate.
кстати, почему разработчики в OnChartEvent включили очередь событий? не так много там событий Рабочих чтобы компьютер запинался, а вот в мультивалютнике засада с этим и нет альтернативы, кроме таймера, но там надо городить проверку дня недели, сколько еще лет должно пройти когда OnCalculateдобавят в советники....
вот вопрос давно уже, чье это уперство и торможение прогресса в программе
Андрей!
Почему Вас так часто банят?