Решаема ли задача в принципе на MQL4 ?

 

Задача такая: В одном терминале открыто 9 разных пар и работают 8 советников каждый на своей паре и каждому разрешено торговать, на 9 паре работает мой "управляющий" советник, который следит за тем по скольким парам и соответственно копиям торгующих советников ОДНОВРЕМЕННО возможно отрывать ордера. Подчиняются все советники одной ГЛобальной переменной. Написал простой цикл который считает "магические номера" уже открытых ордеров и не дает открыться новым ордерам других советников, устанавливая значение управляющей глобальной переменной которое запрещает торговать.

Это так "по сценарию" должно быть. Реально все работает не так . Проблема в том что пока мой "управляющий" советник успеет установить значение глобальной переменной, запрещающей торговать, работающие советники успевают открыться по 6 парам вместо разрешенных 2. Алгоритм работает верно: если сначала запустить управляющий советник, а потом по очереди разрешать торгующим советникам торговать, то более 2 советников ( по 2 парам) не открывается (запрещает значение глобальной переменной установленное управляющим советником).

Возможно ли силами MQL4 задать систему приоритетов чтобы сначала выполнялся код управляющего советника, а потом всех остальных ?

Пробовал зациклить start(), может что не так делал, но кроме подвешивания терминала ничего не добился.

Помогите начинающему профессионалу.

 
Zakyza:

Возможно ли силами MQL4 задать систему приоритетов чтобы сначала выполнялся код управляющего советника, а потом всех остальных ?

Пробовал зациклить start(), может что не так делал, но кроме подвешивания терминала ничего не добился.

Помогите начинающему профессионалу.

Возможно. Например, добавив еще одну переменную терминала, управлять которой сможет только он, а для остальных она станет разрешением работать.

Понимаю, что предложил то, что Вы уже реализовали. Видимо, сделано это некорректно.

Если управляющий советник не успел изменить терминальную переменную, то ведомые не должны иметь разрешения торговать.

 
Посмотрите на эту функцию. Это единственная функция в MQL4, которая разруливает на уровне ядра (обеспечивает атомарный доступ). Должна помочь.
 
tara:
Возможно. Например, добавив еще одну переменную терминала, управлять которой сможет только он, а для остальных она станет разрешением работать.


Не успевает управляющий советник задать нужное значение глобальной переменной
 
Zakyza:

Не успевает управляющий советник задать нужное значение глобальной переменной

Ну, дык не надо давать ведомым права дышать, пока он не проснется.
 
Zhunko:
Посмотрите на эту функцию. Это единственная функция в MQL4, которая разруливает на уровне ядра (обеспечивает атомарный доступ). Должна помочь.

Спасибо, надеюсь поможет, как то я ее проглядел. "может быть использована для организации семафора при взаимодействии нескольких одновременно работающих экспертов в пределах одного клиентского терминала." -- это вселяет надежду. Хотя если GlobalVariableSetOnCondition будет вызвана из start() моего управляющего советника в последнюю очередь, уже после того как торгующие эксперты вошли в сделки не понимаю что это изменит.
 
tara:

Ну, дык не надо давать ведомым права дышать, пока он не проснется.

Каким образом это организовать ? Разрешать вручную торговлю ведомым - не вариант.
 
Если ведомые советники - ворованные, то Вы не по адресу обратились.
 
Почему ворованные ? Автор сам советника выложил в свободное пользование, я просто запустил несколько копий и хочу их организовать посредством глобальных переменных. Зачем такое говорите ?
 
Я ведь сказал: если.
 
tara:
Я ведь сказал: если.

Ок. Нет не ворованные.
Причина обращения: