Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Зарабатывай на сервисах MQL5. Это просто!
Dima DD
211
Dima DD 2015.04.16 13:18 

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

Такая замарочка началась с 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);//теперь приходится вот так писать
Victor Nikolaev
Модератор
14529
Victor Nikolaev 2015.04.16 17:05  
D4135:

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

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

Ордер для работы всегда нужно выбирать. Проблем не будет
Andrey F. Zelinsky
31388
Andrey F. Zelinsky 2015.04.16 17:43  
При выставлении ордера назначал ему тикет, для модификации
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);
Dima DD
211
Dima DD 2015.04.17 04:34  

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

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

 

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