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

 

Пусть ведущий в качестве разрешения общее максимально допустимое кол-во ордеров в GV, которое может быть открыто. А каждый ведомый сначала уменьшает это GV на единичку если GV>0, а потом уж открывает ордер. Смысл в том, чтобы каждый ведомой сначала забил за собой право на открытие ордера, а потом уж его открывал.

 

счас сообразил, в чём загвоздка: у вас вместо 8-ми ведомых присутствует толпа из 8-ми анархистов ;))

Получив разрешение от мастера, эта неорганизованная толпа вырывается на поле и творит кто во что горазд.

 
avtomat:

А почему и зачем делаются два одинаковых магика?

Через глобальные переменные можно организовать назначение непересекающихся областей магиков для включаемых советников. В init() делаются соответствующие проверки и назначения.

Кроме того, можно ограничить количество открываемых ордеров по каждому инструменту, указав это явно, либо назначая мастером, в зависимости от текущей общей ситуации, которую именно мастер и должен контролировать.


"А почему и зачем делаются два одинаковых магика?"

Это я ошибся. Не одинаковых, а разных конечно.

Дело в том что ведомые советники - сеточники и открывать каждый может по 8 колен и они конечно будут с одинаковыми магиками.

Мой код по идее должен как раз ограничивать активность советников и не строить одновременно сетки более чем по 2,например, парам.

Я и написал цикл с массивом, который сравнивает уже открытые магики и если уже открыто 2 различных, т.е. уже по 2 парам стали строиться сетки, то глобальная переменная запрещает строить новые сетеки по остальным парам. Можно ограничивать и по инструменту, не принципиально как, главное - ограничить, а вот это и не получается, точнее получается, но не успевает мастер сообразить что пора глобальную перезаписать.

 
avtomat:

счас сообразил, в чём загвоздка: у вас вместо 8-ми ведомых присутствует толпа из 8-ми анархистов ;))

Получив разрешение от мастера, эта неорганизованная толпа вырывается на поле и творит кто во что горазд.


вот вот именно так, глобальной то они подчиняются железобенно, но пока мастеру дают возможность высказаться толпа уже разбегается по 4-6 парам вместо 2
 
Sepulca:

Пусть ведущий в качестве разрешения общее максимально допустимое кол-во ордеров в GV, которое может быть открыто. А каждый ведомый сначала уменьшает это GV на единичку если GV>0, а потом уж открывает ордер. Смысл в том, чтобы каждый ведомой сначала забил за собой право на открытие ордера, а потом уж его открывал.


Влезать в код торгующих советников - не вариант, единственное чего они слушаются - это глобальная
 
Если ведомый сделал какое-то действо, то он должен отчитаться за это перед мастером. Мастер, в свою очередь, должен выдать своё резюме, от которого зависят дальнейшие действия ведомого (или его бездействие).
 
Я почему и спросил решаема ли задача с принципе силами mql4, может какое-то свежее решение или какое зацикливание старта мастера хитрое, не подвешивая весь терминал, но чтобы мастер всегда работал, а не когда ему право голоса предоставят.
 

Каждому ведомому slave1, slave2, ..., slave8 можно назначить собственный семафор work1, work2, ..., work8.

Надо чтобы ведомые посылали запрос на разрешение совершения действия -- quest1, quest2, ..., quest8.

Мастер, получив запрос, управляет семафорами.

 
avtomat:

Каждому ведомому slave1, slave2, ..., slave8 можно назначить собственный семафор work1, work2, ..., work8.

Надо чтобы ведомые посылали запрос на разрешение совершения действия -- quest1, quest2, ..., quest8.

Мастер, получив запрос, управляет семафорами.

Круг замкнулся ?
Другими словами: не влезая в код ведомых решить задачу нельзя ?

Я надеялся на какое-нибудь хитрое зацикливание мастера...

 

Zakyza:
Круг замкнулся ?
Другими словами: не влезая в код ведомых решить задачу нельзя ?

А что означает "не влезая в код ведомых"? Он недоступен?

Причина обращения: