Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Давайте код, к вечеру разберемся.
Можно в личку :)
Давайте код, к вечеру разберемся.
//+------------------------------------------------------------------+
НЕ судите строго, в последний раз порграммы писал еще на Синклере, на бейсике в школьные годы ....
Возможно ли силами MQL4 задать систему приоритетов чтобы сначала выполнялся код управляющего советника, а потом всех остальных ?
Конечно можно.
Организуйте работу советников по схеме "master-slave"
Конечно можно.
Организуйте работу советников по схеме "master-slave"
Пожалуйста поподробнее как это организовать, на торгующие советники можно воздействовать только посредством изменения значения глобальной переменной и они эту переменную GlobalVariableSet ("Freeze1",200) слушаются когда мой " управляющий" соизволит, дождавшись своей очереди, записать туда 200
Пожалуйста поподробнее как это организовать, на торгующие советники можно воздействовать только посредством изменения значения глобальной переменной и они эту переменную GlobalVariableSet ("Freeze1",200) слушаются когда мой " управляющий" соизволит, дождавшись своей очереди, записать туда 200
Почему ваш управляющий, если он - управляющий, дожидается какой-то очереди?
Это ведомые должны ожидать своей: управляющий вписал в GV запрет на торговлю - сидят, молчат (ведомый первым тиком проверил глобальный флаг, если "сидеть не бздеть" - сказал ЯвольГерГенераль, и return(0))...
Почему у вас управляющий ждёт свою очередь на доступ к GV флагу?
Это все делается одним советником ))) Хоть 100 пар в него запихай )))
ну не об этом же речь...
master
slave
Надеюсь, ясно изложил.
master
slave
Надеюсь, ясно изложил.
Все ясно, спасибо.
Я так пробовал делать (т.е. сходу запрещать, а разрешать по ситуации), но у меня это работает следующим образом:
после такой инициализации мастера: int deinit().... // запрещение работы ведомым ведомые молчат послушно, НО стоит только мастеру расслабиться ( if (количество одинаковых маджиков <=2) ) и записать в GlobalVariableSet(work,1); // разрешение работы ведомым ведомые, а их 8 на 8 различных парах, успевают открываться не по 2 парам как задано в условии мастера, а по 4 - 6, т.е открываются ПОКА мастер не "сообразит" что "количество одинаковых маджиков " уже значительно больше 2. После этого конечно остальные ведомые молчат, но открыто то уже не 2 копии как хотелось, а 4- 6.
Я так понимаю происходит это из-за того что выполнив мой код int start() управление передается int start() ведомым советникам и от того сколько успеет выполниться int start() ведомых советников и зависит сколько копий по скольким парам откроется пока не выполнится старт мастера и глобальная не станет запрещающей. Поправите если я неверно понимаю алгоритм работы терминала и суть проблемы. Грубо говоря так: если один мастер и один ведомый то все скорее всего заработает правильно, но ведомых то 8-10 !
Я почему и писал, что пробовал зациклить старт мастера и обречь его на вечное выполнение, но у меня просто подвис терминал.
artmedia70 : " Почему ваш управляющий, если он - управляющий, дожидается какой-то очереди? " - вот и я хотел бы знать.
А почему и зачем делаются два одинаковых магика?
Через глобальные переменные можно организовать назначение непересекающихся областей магиков для включаемых советников. В init() делаются соответствующие проверки и назначения.
Кроме того, можно ограничить количество открываемых ордеров по каждому инструменту, указав это явно, либо назначая мастером, в зависимости от текущей общей ситуации, которую именно мастер и должен контролировать.
т.е. если ведомый сделал какое-то действо, то он должен отчитаться за это перед мастером. Мастер, в свою очередь, должен выдать своё резюме, от которого зависят дальнейшие действия ведомого (или его бездействие).