2 робота в неттинговом режиме - страница 2

 
Ihor Herasko:
На неттинге вместо SL и TP необходимо использовать отложенные ордера. Для каждого советника - свой MN ордера. В случае если советники открыли противоположные позиции с одинаковым объемом, то реальной позиции не будет, но будут отложенные ордера, по которым можно определить, какой объем позиции и с каким направлением сейчас использует тот или иной советник.

При доливке или частичном закрытии потребуется смотреть, сколько мы закрываем/доливаем и искать ордера с начальным входом в рынок. Жесть получится.

Интересная идея Владимира по поводу виртуального отслеживания, в частности записи в глобальные переменные. Только я так понимаю, речь о глобальных переменных терминала, а не о mql программы.

Ренат, вы правы, придется переписывать код робота, но торговать одним ордером не укладывается в ту концепцию, которую пытаюсь реализовать.

 
Илья Ребенок:

При доливке или частичном закрытии потребуется смотреть, сколько мы закрываем/доливаем и искать ордера с начальным входом в рынок. Жесть получится.

Не понимаю, в чем жесть? Та же работа с ордерами, что и в МТ4. Подчеркну: работа только с отложенными ордерами и их историей. Эксперт даже не запрашивает данные о позиции.

 
Ihor Herasko:

Не понимаю, в чем жесть? Та же работа с ордерами, что и в МТ4. Подчеркну: работа только с отложенными ордерами и их историей. Эксперт даже не запрашивает данные о позиции.

Возможно я неверно трактовал вашу идею. В МТ4 не довелось работать, начал с МТ5.

Как я понял: мы утром ставим 2 роботов на торговлю. При необходимости понять объем позиции мы запрашиваем все отложенные ордера из истории (с мэджиком нужного робота) с начала торговли и по их типу (продажа/покупка) и кол-ву лотов. После этого плюсуем, минусуем и получаем требуемый текущий объем. Я верно понял?

 
Илья Ребенок:

Как я понял: мы утром ставим 2 роботов на торговлю. При необходимости понять объем позиции мы запрашиваем все отложенные ордера из истории (с мэджиком нужного робота) с начала торговли и по их типу (продажа/покупка) и кол-ву лотов. После этого плюсуем, минусуем и получаем требуемый текущий объем. Я верно понял?

Все точно также, как в МТ4 при частичных закрытиях (там тоже если нужно узнавать изначальный объем частично закрываемой позиции, нужно лезть в историю).

Просто вместо выбора позиций (PositionSelect) мы выбираем стоповые ордера OrderSelect с магиком нужного советника. Это будут ордера SL. Его объем - это объем открытой советником позиции. Её может и не быть в рынке, если она перекрыта другим советником. При совершении операций с позицией, изменяем соответственно этот ордер СЛ. В его собственный SL можно записывать цену открытия самой позиции. Очень изящное решение на самом деле. Я долго думал, что отсутствие "хеджа" является большим недостатком МТ5, пока не додумался до этого простого решения. А теперь не понимаю, зачем вообще сделали отдельный режим "хедж" =))

Общие принципы - Торговые операции - MetaTrader 5
Общие принципы - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит...
 

для себя решал этот вопрос как уже писалось выше через виртуальные ордера. только я не виртуальные ордера сделал , а сделал структуру в которую писал данные при открытии сделки. к примеру у вас 2 робота на 1-ой валютной паре. один открывает ( в структуру пишутся данные, цена открытия сделки объём и направление), потом второй открывает сделку и тоже пишет эти данные в свою структуру. По итогу получается что каждый робот работает потом только со своими сделками. Просто запрос теперь не в историю торговли делаете и не в онлайн график а как раз в структуру куда писались данные. после закрытия сделки по одному роботу обнуляете структуру и снова пошла работа. Обычно такое нужно бывает при доливках, по крайней мере мне именно так получилось решить вопрос.

 
Anatolii Zainchkovskii:

для себя решал этот вопрос как уже писалось выше через виртуальные ордера. только я не виртуальные ордера сделал , а сделал структуру в которую писал данные при открытии сделки. к примеру у вас 2 робота на 1-ой валютной паре. один открывает ( в структуру пишутся данные, цена открытия сделки объём и направление), потом второй открывает сделку и тоже пишет эти данные в свою структуру. По итогу получается что каждый робот работает потом только со своими сделками. Просто запрос теперь не в историю торговли делаете и не в онлайн график а как раз в структуру куда писались данные. после закрытия сделки по одному роботу обнуляете структуру и снова пошла работа. Обычно такое нужно бывает при доливках, по крайней мере мне именно так получилось решить вопрос.

Минус любых решений виртуализации в том, что они зависят от состояния переменных. А если определять позиции по их СЛ, выполненному отдельным стоповым ордером, то ни сбои в работе электроники, ни запуск торговой системы "с нуля" на другом компьютере без переноса данных не повлияют на работу советников. Если, конечно, по ордерам не нужно хранить другую важную для ТС информацию, но это будет так же, как и в МТ4 и в хеджевом режиме МТ5.

 
Ilya Malev:

Минус любых решений виртуализации в том, что они зависят от состояния переменных. А если определять позиции по их СЛ, выполненному отдельным стоповым ордером, то ни сбои в работе электроники, ни запуск торговой системы "с нуля" на другом компьютере без переноса данных не повлияют на работу советников. Если, конечно, по ордерам не нужно хранить другую важную для ТС информацию, но это будет так же, как и в МТ4 и в хеджевом режиме МТ5.

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

 
Anatolii Zainchkovskii:

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

Не обязательно далеко, но они обязательно существуют всегда, когда есть открытая позиция. Если хочется зафигачить сделку без СЛ, то можно поставить этот СЛ на 0.0001 или на 999 и т.п.

 
Илья Ребенок:

Всем привет.

Есть 2 робота, которые будут торговать на одном и том же инструменте, но на разных графиках. Режим неттинговый.

Вопрос собственно вот в чем. Как определить объем позиции для каждого робота?

Например, первый робот купил 4 лота, второй - 1 лот. При неттинговом режиме это все схлопнулось в одну общую позицию с объемом 5. Мне потребовалось закрыть позиции, купленные вторым роботом (1 лот). Как понять, что в общем объеме есть позиции, купленные вторым роботом? Мэджик позиции здесь, как я понимаю роли уже не играет, так как он будет перетираться в зависимости от того, какой робот совершил сделку последним.

Или такое получится понять, перебирая все закрытые ордера, сравнивая их мэджики, кол-ва и прочее? Космолет получится

Или хранить кол-во в некой переменной внутри робота, либо в файле... Но как-то это все некрасиво.

Единственный вариант - использовать Глобальные переменные терминала

https://www.mql5.com/ru/docs/globals

Документация по MQL5: Глобальные переменные терминала
Документация по MQL5: Глобальные переменные терминала
  • www.mql5.com
Глобальные переменные существуют в клиентском терминале 4 недели с момента последнего обращения, после этого автоматически уничтожаются. Обращением к глобальной переменной считается не только установка нового значения, но и чтение значения глобальной переменной.
 
Всем спасибо за идеи.
Причина обращения: