Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Размещай ссылки на платные сигналы. Получай партнерскую долю!
khorosh
8048
khorosh 2011.12.09 14:07 

Установлено 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.

Где ошибка?


 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);
}
Всеволод
648
Всеволод 2011.12.09 14:41  
 ticketBuyStop  = GetOrderTicket("0", OP_BUYSTOP, MagicNumber);
нуль и NULL это разные вещи.
khorosh
8048
khorosh 2011.12.09 14:57  
splxgf:
нуль и NULL это разные вещи.
Посмотрите в функции:
if (sy=="0") sy=Symbol();
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий