int ticketBuyStop;
ticketBuyStop = GetOrderTicket("0", OP_BUYSTOP, MagicNumber);
if(OrderSelect(ticketBuyStop, SELECT_BY_TICKET, MODE_TRADES))
{
Print("ticketBuyStop = ",ticketBuyStop);
Print("OrderTicket() = ",OrderTicket());
Print("OrderType() = ",OrderType());
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.11.2006 |//| Описание : Возвращает тикет последнего ордера или 0. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+double GetOrderTicket(string sy="", int op=-1, int mn=-1) {
datetime t;
int r=0;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()>1 && OrderType()<6) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) {
t=OrderOpenTime();
r=OrderTicket();
}
}
}
}
}
}
}
return(r);
}
Установлено 2 ордера:
1 2011.09.01 00:00 buy stop 1 0.01 1.44031 0.00000 0.00000 0.00 1000.00
2 2011.09.01 00:00 sell stop 2 0.01 1.43419 0.00000 0.00000 0.00 1000.00
При выполнении ниже приведённого кода получаю такой результат:
2011.12.09 19:42:42 2011.09.01 00:30 e-Aver_2 EURUSD,M30: OrderType() = 5
2011.12.09 19:42:42 2011.09.01 00:30 e-Aver_2 EURUSD,M30: OrderTicket() = 1
2011.12.09 19:42:42 2011.09.01 00:30 e-Aver_2 EURUSD,M30: ticketBuyStop = 1
Тикет = 1, а код операции OP_SELLSTOP.
Где ошибка?