Частичное закрытие позиции, нужен тикет

 

Как узнать что при частичном закрытии позиции сменился тикет

тикет #1 лот 0.04
закрылся 50% и теперь эта позиция стала
тикет #2 лот 0.02

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

 
forex2030:

Как узнать что при частичном закрытии позиции сменился тикет

тикет #1 лот 0.04
закрылся 50% и теперь эта позиция стала
тикет #2 лот 0.02

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

Сразу после выполнения операции закрытия ищите рабочий ордер, содержащий в комментарии подстроку "from #". В ней будет тикет родительского ордера. Далее задача - сохранить тикет найденного ордера (в смысле предусмотреть выгрузку программы и повторную ее загрузку, чтобы не потерять новый тикет). Надеяться на то, что комментарий останется неизменным не стоит.

 
Ihor Herasko:

Сразу после выполнения операции закрытия ищите рабочий ордер, содержащий в комментарии подстроку "from #". В ней будет тикет родительского ордера. Далее задача - сохранить тикет найденного ордера (в смысле предусмотреть выгрузку программы и повторную ее загрузку, чтобы не потерять новый тикет). Надеяться на то, что комментарий останется неизменным не стоит.

А если в рынке несколько ордеров, как отфильтровать и найти нужный?

 
forex2030:

А если в рынке несколько ордеров, как отфильтровать и найти нужный?

после  from# идёт родительский тикет

 

Нахожу нужный тикет, но только последний, если есть новый то предыдущий уже теряется
Есть #3 тралим его, появился #4 тралим его, но #3 уже не тралится, потерялся.

Как видеть все тикеты пока они не попали в историю закрытых??

//+------------------------------------------------------------------+
//|  Возвращает тикет частично закрытой позиции                      |
//-------------------------------------------------------------------+
int NewTicket(){
    int tik=-1;
    for(int i=0; i<OrdersTotal(); i++) 
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
       if(OrderComment() == "" )                 continue;
       if(StringFind(OrderComment(),"from #")<0) continue;
       tik=OrderTicket();}
return(tik);}
 

Не работайте тикетами при частичном закрытии, используйте магики, т.к. магики не меняются

Если снова нужно закрыть частично, то сначала находим нужный магик, потом тикет, потом кроем

 
Файлы:
d8eyb.png  6 kb