Почему советник стал путать выбор ордера по тикету и номеру???

 

Здравствуйте. 

Такая замарочка началась с 3-го ордера, на втором, всё хорошо работает. 

 

При выставлении ордера назначал ему тикет, для модификации
int ticket_s = OrderSend(Symbol(), OP_SELL, 0.3, Bid, Slippage, 0, 0, comment, 212, 0, Red);


и строчка ниже всегда правильно определяла его объём(для второго доп.ордера,а для 3-го нет)
 if(OrderSelect(ticket_s, SELECT_BY_TICKET,MODE_TRADES) == true && OrderSymbol() == Symbol() && OrderMagicNumber() == 212) double lotss2 = OrderLots(); 


сейчас определяет только по  SELECT_BY_POS для 3-го ордера,хотя это тикет
 if(OrderSelect(ticket_s, SELECT_BY_POS,MODE_TRADES) == true && OrderSymbol() == Symbol() && OrderMagicNumber() == 212) double lotss2 = OrderLots();//работает 


Получается  ticket_s советник определяет и как тикет,и как номер???Но и для функции
if(ticket_s>0) OrderClose(ticket1,OrderLots(),Ask,1, Black);// тоже для 3-го ордера не работает 
 if( OrderSelect(ticket_s, SELECT_BY_POS, MODE_TRADES) == true && ticket_s>0 && OrderMagicNumber() == 212) OrderClose( OrderTicket(),OrderLots(),Ask,1, Black);//теперь приходится вот так писать
 
D4135:

Здравствуйте. 

Такая замарочка началась с 3-го ордера, на втором, всё хорошо работает. 

Ордер для работы всегда нужно выбирать. Проблем не будет
 
При выставлении ордера назначал ему тикет, для модификации
int ticket_s = OrderSend(Symbol(), OP_SELL, 0.3, Bid, Slippage, 0, 0, comment, 212, 0, Red);


и строчка ниже всегда правильно определяла его объём(для второго доп.ордера,а для 3-го нет)
 if(OrderSelect(ticket_s, SELECT_BY_TICKET,MODE_TRADES) == true && OrderSymbol() == Symbol() && OrderMagicNumber() == 212) double lotss2 = OrderLots(); 


сейчас определяет только по  SELECT_BY_POS для 3-го ордера,хотя это тикет
 if(OrderSelect(ticket_s, SELECT_BY_POS,MODE_TRADES) == true && OrderSymbol() == Symbol() && OrderMagicNumber() == 212) double lotss2 = OrderLots();//работает 


Получается  ticket_s советник определяет и как тикет,и как номер???Но и для функции
if(ticket_s>0) OrderClose(ticket1,OrderLots(),Ask,1, Black);// тоже для 3-го ордера не работает 

-- где выбран тот ордер, что удаляется?

судя по контексту пояснений -- надо было записать:

if(ticket_s>0) OrderClose(ticket_s,OrderLots(),Ask,1, Black);
 

 Спасибо. Теперь ордер через номер буду определять.

Всегда назначал ордеру тикет, чтобы не использовать цикл.Меньше писанины.

 

if(ticket_s>0) OrderClose(ticket_s,OrderLots(),Ask,1, Black);//здесь другой ордер удаляется ticket_s
Причина обращения: