ticket и opposite - это не Magic Number'ы
OrderSelect(int index, int select, int pool=MODE_TRADES) - сначало нужно выбрать ордер,
и потом OrderTicket() - возвращает номер тикета для текущего выбранного ордера.
Не всегда всё бывает просто, поэтому в вашем коде я не рекомендую использовать OrderCloseBy(), так как для этого нужно иметь 2 противоположных ордера, а у вас это не гарантируется.
Не жадничайте уже этим спредом :)
OrderSelect(int index, int select, int pool=MODE_TRADES) - сначало нужно выбрать ордер,
и потом OrderTicket() - возвращает номер тикета для текущего выбранного ордера.
index | - | Позиция ордера или номер ордера в зависимости от второго параметра. |
Тогда вытекают вопросы:
1. Как узнать и получить index ордера?
2. Номер ордера в моем случае будет равен 0, значит запись OrderSelect(0, SELECT_BY_TICKET) будет корректной?
3. Почему нельзя в этой функции использовать например такую запись OrderSelect(OrderTicket(), SELECT_BY_TICKET) ?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте. Вот написал простенького советника. Принцип работы советника простой: открываем позицию в определенное время и закрываем также в указанное в настройках время. Не могу найти ошибку, почему не закрывается позиция в 11:05, может кто подскажет.
Все ресурсы перелопатил не смог найти решение...
//---- input parameters
extern int BuyHour = 11;
extern int BuyMinute = 30;
extern int CloseHour = 14;
extern int CloseMinute = 55;
extern int SellHour = 3;
extern int SellMinute = 30;
extern int Close2Hour = 11;
extern int Close2Minute = 05;
extern double Lots=0.1;
extern int StopLoss=1000;
extern int TakeProfit=1000;
int start()
{
if (TimeHour(TimeCurrent())==BuyHour && TimeMinute(TimeCurrent())==BuyMinute)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Открытие по времени",777,0,Gold);
}
if (TimeHour(TimeCurrent())==CloseHour && TimeMinute(TimeCurrent())==CloseMinute)
{
OrderCloseBy(777,778);
}
if (TimeHour(TimeCurrent())==SellHour && TimeMinute(TimeCurrent())==SellMinute)
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Открытие по времени",888,0,Red);
}
if (TimeHour(TimeCurrent())==Close2Hour && TimeMinute(TimeCurrent())==Close2Minute)
{
OrderCloseBy(888,889);
}
return(0); //выходим из start()
}