Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Вся активность MQL5.community у тебя на ладони. Заходи в раздел Стена!
Максим
13
Максим 2010.12.07 17:40 

Добрый День. 

 Решил начать программировать на mql. Написал советник, проверяя как открываются и закрываются ордера. Открывается ордер при соответствующих условиях нормально, а при закррытии появляется Error 4051 - Invalid ticket to OrderClose Function. Помогите пожалуйста разобраться, что я делаю не так. Код советника ниже.

 

 


double MA;
MA=iMA(NULL,0,MA_Period,0,MODE_SMA,0,0);
int T;
T=OrdersTotal();
int ticket;
bool a;

if(Ask>MA+2*Point && T==0)
{ticket=OrderSend(Symbol(),0,0.01,Ask,3,0,0);
}

if (Bid<MA && T>0)
{OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
RefreshRates();
a=OrderClose(ticket,0.01,Bid,5);
}

Alexander
4033
Alexander 2010.12.07 18:53  

После открытия позиции тикет у Вас не сохраняется. И при следующем запуске start переменная ticket инициализируется нулём. Нужно объявить ею как статическую или глобальную чтобы её значение сохранялось. Также полезно контролировать выполнение функции OrderSelect, например:

if {OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) {
      RefreshRates();
      a=OrderClose(ticket,0.01,Bid,5);
   }
else Print("Ticket=", ticket);
} 
Alex-xx
5
Alex-xx 2012.10.01 20:19  

Что я не так зделал, подскажите плиз

выбираю ордер, узнаю тип, узнаю тиккет, пытаюсь удалить отложенный ордер - выдаёт ошибка 4051

Недопустимое значение параметра функции


OrderSelect(1,SELECT_BY_POS);

a2=OrderType();
ticket2=OrderTicket() ;

if (a2>1)
OrderDelete(ticket2);
Alert (GetLastError()); // Сообщение об ошибке 4051

Alex-xx
5
Alex-xx 2012.10.01 20:21  
P.S. это второй ордер по счёту, параметр: OrderSelect(1,SELECT_BY_POS); верный
Alex-xx
5
Alex-xx 2012.10.01 20:26  
приведите пример как правильно удалить отложенный ордер )))
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий