Arnold:
...Пожалуйста помогите мне разобраться. Если не сложно, объясните мне (желательно на примере), как правильно открывать
ордера и закрывать их, чтобы не возникало проблем с порядковыми
номерами, чтобы они нормально закрывались.
...
https://book.mql4.com/ru . Здесь все написано, Ваш случай в разделе "Торговые операции"
Arnold:
номерами, чтобы они нормально закрывались
...
Если советник всегда открывает только один ордер, то можно сделать
так...
Пожалуйста помогите мне разобраться. Если не сложно, объясните
мне (желательно на примере), как правильно открывать
номерами, чтобы они нормально закрывались
...
if(ticket>0) //открыта позиция { OrderSelect(ticket,SELECT_BY_TICKET); //выбираем ордер по тикету if(OrderCloseTime()>0) ticket = 0; //проверяем не закрыта ли позиция, н-р, по S/L else { if(OrderType()==OP_BUY) //открыт ордер на BUY { if(lSumRule<Zona_Buy) //проверяем условие закрытия позиции (здесь должно быть ваше условие) { OrderClose(ticket,lots,Bid,3,CLR_NONE); //закрываем ордер ticket = 0; //обнуляем тикет } } if(OrderType()==OP_SELL) //открыт ордер на SELL { if(lSumRule>Zona_Sell) { OrderClose(ticket,lots,Ask,3,CLR_NONE); ticket = 0; } } } }Для работы с несколькими ордерами этот код не подойдет. Тогда необходимо организовывать работу с ордерами
через функции OrdersTotal(), OrderSelect(...) и т.д.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здраствуйте.
Пишу советник, чтобы исключить психологические факторы.
Сам в MQL (как и в Си) новичок. Освоил прочитав справочный материал сайта и пару советников. Но у меня проблема с
закрытием ордеров (какой то тик-порядковый номер ордера0. Сообщение выдается следующее:
OrderClose error 4108
unknown ticket 13 for OrderClose function.
В принципе понятно. Но дело в том, что иногда все таки ордера закрывает, но в основном по S/L или T/P, всвязи с чем
сливает лаве.
Ордер открываю так:
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Bid-StopLoss*Point,Bid+TakeProfit*Point, "MyOrder",12345,Green,0);
Для чего "MyOrder" вроде понял (комментарий), а вот 12345 вставил сам особо не знаю для чего - какой-то MagicNumber.
Закрываю ордер так: OrderClose(ticket,0.1,Ask,10,Red).
Так вот проблема в том, что он их не закрывает, ссылаясь на ошибки, которые выше. Закрывает только по T/P и S/L.
Пожалуйста помогите мне разобраться. Если не сложно, объясните мне (желательно на примере), как правильно открывать
ордера и закрывать их, чтобы не возникало проблем с порядковыми номерами, чтобы они нормально закрывались.
Может понадобится: по сценарию моего советника максимум может быть открыт только один ордер.------->
int Ordera=OrdersTotal();
if (Ordera>=1) return;
else ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Bid-StopLoss*Point,Bid+TakeProfit*Point, "MyOrder",12345,Green,0);
Заранее большое спасибо всем откликнувшимся на мой зов о помощи.