Помогите прикрутить удаление отложного ордера!

 
extern int TP=350;
extern int SL=400;
extern int H=15;
extern int M=45;
extern double Lot=3;
extern int n=100;
int magic=1234;
int slippage=30;
int init(){return(0);}
int deinit(){return(0);}
int start(){

int ticket=-1,NoS=0,NoL=0,NoBS=0,NoSS=0;
double price;
for (int i=OrdersTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
switch(OrderType()){
case OP_BUY: NoL++;break;
case OP_SELL: NoS++;break;
case OP_BUYSTOP: NoBS++;break;
case OP_SELLSTOP: NoSS++;break;
default: break;
}
}
}
}
if((Hour()==H)&& (Minute()==M) || (Hour()==H && Minute()==M)){// Открываем ордер только после достижения заданного времени.
datetime expiration=0;// отложенный ордер будет существовать до тех пор пока не сработает или сам хозяин не удалит его
double spread=Ask-Bid; // Текущий спрэд
double sl=SL*Point;// стоплосс,
double tp=TP*Point;// тейкпрофит
price=Ask+n*Point;// Цена открытия отложенного ордера
if(NoL+NoBS==0)ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,price,slippage,price-sl-spread,price+tp+spread,"My order ",magic,expiration,Blue);// Ордер BUY только один, других не открываем
price=Bid-n*Point;// Цена открытия отложенного ордера
if(NoS+NoSS==0)ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,price,slippage,price+sl+spread,price-tp-spread,"My order ",magic,expiration,Red);// Ордер SELL только один, других не открываем
}
return(0);
}



Вот код в котором открываются отложные ордера по времени!

сейчас хочу сделать так что бы противоположный ордер удалялся после открытия одного из отложенных ордеров.

Скажите что делаю не правильно!


if (OrderType()==OP_BUY)
bool(OrderDelete()OP_SELLSTOP)
}
{
if (OrderType()==OP_SELL)
bool(OrderDelete()OP_BUYSTOP)
}

 
Rebornnn:
extern int TP=350;
extern int SL=400;
extern int H=15;
extern int M=45;
extern double Lot=3;
extern int n=100;
int magic=1234;
int slippage=30;
int init(){return(0);}
int deinit(){return(0);}
int start(){

int ticket=-1,NoS=0,NoL=0,NoBS=0,NoSS=0;
double price;
for (int i=OrdersTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
switch(OrderType()){
case OP_BUY: NoL++;break;
case OP_SELL: NoS++;break;
case OP_BUYSTOP: NoBS++;break;
case OP_SELLSTOP: NoSS++;break;
default: break;
}
}
}
}
if((Hour()==H)&& (Minute()==M) || (Hour()==H && Minute()==M)){// Открываем ордер только после достижения заданного времени.
datetime expiration=0;// отложенный ордер будет существовать до тех пор пока не сработает или сам хозяин не удалит его
double spread=Ask-Bid; // Текущий спрэд
double sl=SL*Point;// стоплосс,
double tp=TP*Point;// тейкпрофит
price=Ask+n*Point;// Цена открытия отложенного ордера
if(NoL+NoBS==0)ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,price,slippage,price-sl-spread,price+tp+spread,"My order ",magic,expiration,Blue);// Ордер BUY только один, других не открываем
price=Bid-n*Point;// Цена открытия отложенного ордера
if(NoS+NoSS==0)ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,price,slippage,price+sl+spread,price-tp-spread,"My order ",magic,expiration,Red);// Ордер SELL только один, других не открываем
}
return(0);
}



Вот код в котором открываются отложные ордера по времени!

сейчас хочу сделать так что бы противоположный ордер удалялся после открытия одного из отложенных ордеров.

Скажите что делаю не правильно!


if (OrderType()==OP_BUY)
bool(OrderDelete()OP_SELLSTOP)
}
{
if (OrderType()==OP_SELL)
bool(OrderDelete()OP_BUYSTOP)
}




Вы выбрали бай ордер а пытаетесь удалить не выбранный ордер ...

В Вашем случае при существующем ордере бай

if (NoL>0) // есть бай

if (OrderTyp()==OP_SELLSTOP) // есть селл стоп

OrderDelete(Orderticket()) // удаляем селл стоп

 
VOLDEMAR:


Вы выбрали бай ордер а пытаетесь удалить не выбранный ордер ...

В Вашем случае при существующем ордере бай

if (NoL>0) // есть бай

if (OrderTyp()==OP_SELLSTOP) // есть селл стоп

OrderDelete(Orderticket()) // удаляем селл стоп

Спасибо протестирую!
Причина обращения: