Помогите разобратся в коде трейлинг стопа

 

Здравствуйте! Помогите понять, мне нужно для отложеных ордеров, которые выставит советник, передвижение трейлинга...
Я взял готовый блок кода, отвечающий за передвижение трейлинга, он был под немедленное исполнение а не для отложеных ордеров...
При тестировании, отложеные ордера не передвигаются а ордера с немедленным исполнением передвигают трейлинг.
Не могу понять, что не так? Отложеные ордера перед передвижением естественно срабатывали но дальнейших действий не было.
Вот блок кода отвечающий за трейлинг:

extern int _MNum=5555;
extern int _TrailingStop=45;
extern bool _PolLots=true;

for(int i = 0; i <= OrdersTotal(); i++){
if(_TrailingStop > 0){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if(OrderMagicNumber() == _MNum){ TrailingStairs(OrderTicket(),_TrailingStop); }
}
}
}

// Функция трейлинга стопа.
void TrailingStairs(int ticket, int trldistance){
int Spred=Ask - Bid;
if(OrderType() == OP_BUYSTOP){
if((Bid-OrderOpenPrice()) > (Point*trldistance)){ ///ПОСЛЕ ЭТОГО УСЛОВИЯ НЕ ПРОХОДИТ!!!
if(OrderStopLoss() < Bid-Point*trldistance || (OrderStopLoss()==0)){
OrderModify(ticket,OrderOpenPrice(),Bid-Point*trldistance,OrderTakeProfit(),0,Green);
if(_PolLots)
if(NormalizeDouble(OrderLots()/2,2) > MarketInfo(Symbol(), MODE_MINLOT)){
if(!OrderClose(ticket,NormalizeDouble(OrderLots()/2,2),Ask,3,Green)){ OrderDelete(OrderTicket()); }
} else {
if(!OrderClose(ticket,OrderLots(),Ask,3,Green)){ OrderDelete(OrderTicket()); }
}
}
}
}
if(OrderType() == OP_SELLSTOP){
if((OrderOpenPrice()-Ask) > (Point*trldistance)){ ///ПОСЛЕ ЭТОГО УСЛОВИЯ НЕ ПРОХОДИТ!!!
if((OrderStopLoss() > (Ask+Point*trldistance)) || (OrderStopLoss()==0)){
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*trldistance,OrderTakeProfit(),0,Red);
if(_PolLots)
if(NormalizeDouble(OrderLots()/2,2) > MarketInfo(Symbol(), MODE_MINLOT)){
if(!OrderClose(ticket,NormalizeDouble(OrderLots()/2,2),Bid,3,Green)){ OrderDelete(OrderTicket()); }
} else {
if(!OrderClose(ticket,OrderLots(),Bid,3,Green)){ OrderDelete(OrderTicket()); }
}
}
}
}
}

 
Че-то я не понимаю... Если Bid > OrderOpenPrice(), что предполагается в условии, то этот OrderType() уже никак не может быть OP_BUYSTOP, он уже давно должен стать OP_BUY... Ну и с Sell все аналогично... Поправьте меня, если я ошибаюсь...
 
bvn писал(а) >>
Че-то я не понимаю... Если Bid > OrderOpenPrice(), что предполагается в условии, то этот OrderType() уже никак не может быть OP_BUYSTOP, он уже давно должен стать OP_BUY... Ну и с Sell все аналогично... Поправьте меня, если я ошибаюсь...

Нет, OP_BUYSTOP после срабатывания не становится OP_BUY... это факт.

 
Точна? Щас проверю...
 

Неправда ваша... Возьмите вот этот советник, я на калякал за пару минут и проверьте на демо счете

Файлы:
bvninfo.mq4  2 kb
 
bvn писал(а) >>

Неправда ваша... Возьмите вот этот советник, я на калякал за пару минут и проверьте на демо счете

Спасибо большое!!! Разобрался...

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