Мониторинг открытия новых ордеров и выставление для них локирующие ордера..

 

Добрый день.

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

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

 
ALex2008:

Добрый день.

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

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

Выставляйте отложку сразу при открытии ордера. Типа:

if  (условие)

{

 OrederSend (Buy или Sell);

 OrderSend (Stop  или Лимит);

 } 

Связать пары можно отдельным магиком.  

 
ALex2008:

Добрый день.

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

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


Можно попробовать MAGICом, т. е. при открытии ордера задаете ему уникальный MAGIC, и потом устанавливаете отложку с таким же магиком. Либо использовать при открытии ордеров параметр comment, но в этом случае учтите, что ДЦ может добавлять свои комменты к вашему.
 
Не подходит...
У меня всегда стоят стоп ордера. Так вот при их открытии, именно при срабатывании, нужно вместо стоплос поставить локирующий ордер. И так для каждой новой открытой позиции.. Даже если руками открою ордер, чтобы сразу ставился отложенник вместо стопа.
 
ALex2008:
Не подходит...
У меня всегда стоят стоп ордера. Так вот при их открытии, именно при срабатывании, нужно вместо стоплос поставить локирующий ордер. И так для каждой новой открытой позиции.. Даже если руками открою ордер, чтобы сразу ставился отложенник вместо стопа.
Предложеный мной вариант годен и для такого случая, кроме случая открытия руками. Только выставляете сразу две отложки, "боевую" и локирующую. А вообще завязывайте вы с этим локирование, ничего оно не дает. Пустые хлопоты.
 
Figar0:
Предложеный мной вариант годен и для такого случая, кроме случая открытия руками. Только выставляете сразу две отложки, "боевую" и локирующую. А вообще завязывайте вы с этим локирование, ничего оно не дает. Пустые хлопоты.

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

Пример: ставлю байстоп на 1,30 по евре, цена щас 1,2950.. допустим цена дошла до 1,30, сработал ордер и в этот момент ставится локирующий ордер вместо стоплос на 1,2990 - селстоп...

 
по тикету вяжите... жёстко и однозначно... никаких разночтений!
 
ALex2008:

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

Точно, я забыл, у меня "боевыми" отложками лимитники были.....
 
KimIV:
по тикету вяжите... жёстко и однозначно... никаких разночтений!

Игорь приветствую, подскажите как? Ну или направьте... Не могу понять, как это реализовать, когда ордеров открытых уже несколько, ОрдерСелект их все снова находит, что естественно, но мне нужно искать только новые открытые ордера, у которых еще нет лока..
 
ALex2008:
Не подходит...
У меня всегда стоят стоп ордера. Так вот при их открытии, именно при срабатывании, нужно вместо стоплос поставить локирующий ордер. И так для каждой новой открытой позиции.. Даже если руками открою ордер, чтобы сразу ставился отложенник вместо стопа.

Если Вы торгуете только вручную, то нужен советник, который считает общий объем открытых ордеров в одном определённом направлении и объём соответствующих локирующих отложенников. Аналогично и для другого направления ( я имею ввиду Buy/Sell).  Если  объём локирующих отложенников меньше объёма открытых ордеров, то дополнительно выставляются отложенники в размере кол-ва лотов=LotsОткрытых-LotsОтложенных  на уровне Вашего стоплосса , чтобы скомпенсировать объём уже открытых ордеров . При этом конечно стоплосс у открытых ордеров должен быть нулевой.  Если Вы используете какой-нибудь советник, то в связи с тем что на одно окно низя навесить два и более одного советника, это должен быть скрипт, который Вы время от времени будете запускать вручную.

P.S. Но с этим делом можно так залететь, никаких средств не хватит.... 

 
ALex2008:
...подскажите как? Ну или направьте...

Всё делается в три прохода:

  1. Селект по позициям. Заполняем массивы тикетами и магиками, ну и плюс чего Вам самим надо для нужд функционала.
  2. Цикл по массивам для установки ордеров. Для каждой позиции массива проверяем, если нет ордеров и позиций с магиком равным тикету текущей позиции, то ставим ордер с магиком, равным тикету текущей позиции.
  3. Селект по ордерам с целью их удаления/модификации. Для каждого ордера по его магику ищем в массивах тикет позиции. Если находим, то проверяем параметры (цена, стоп, тейк, лот и прочее). Если что-то изменилось, то по возможности модифицируем, иначе удаляем и ставим заново. Если не находим, то удаляем текущий ордер (видимо позицию закрыли руками, а ордер остался болтаться).
Причина обращения: