Не могу найти ошибку. Нужно закрыть ордер когда МА меняет направление.
В тестере-ошибка 4051.
Помогите решить проблему.
Всем заранее спасибо.
P.S. подразумевается что ордер уже открыт.
????? Закрыть открытый ордер или удалить отложенный ? Вы б хелп и учебник прочли, что ли ... И потом, а Вы уверены, что этот единствнный ордер будет имеенно под номером 1 ? Посмотрите примеры с трейлинг стопами - там есть куски кода, показывающие как правильно выделять ордера
Успехов.
Не, здесь Вы ошиблись. TheExpert как раз прав, при единственном открытом ордере обращаться к нему именно через 0 при ...SELECT_BY_POS,MODE_TRADES)
Вы же уже вполне опытный программер, соберитесь)
Не, здесь Вы ошиблись. TheExpert как раз прав, при единственном открытом ордере обращаться к нему именно через 0 при ...SELECT_BY_POS,MODE_TRADES)
Может быть (лень сейчас проверять, насколько я помню, на реале номер для первого открытого ордера таки будет 1, ордер с номером 0 - это внесение депозита на счет, для демки - да, первый открытый будет с номером ноль) - только я бы все равно так не обращался: к ордеру с непосредственным указанием номера - просто выбрал бы нужный циклом. А обращение такое - это от топикстартера.
Успехов.
ЗЫ - Все, понял о чем речь - согласен - выбор по моде трейдз будет от нуля. Это как-то автоматом прописыватся - уже даже внимания не обращаю...
Да пусть через 0............вот так тогда
............................
if(OrdersTotal()==1)
{
if(MA4>MA3&&MA2<MA1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderCloseTime()==0)
{
if(OrderType()==OP_SELL)
{
ticketSELL=OrderTicket();
OrderDelete(ticketSELL);
}
}
}
}
................................
Ошибка 4108......не правильный номер тикета. вот так.
Может быть (лень сейчас проверять, насколько я помню, на реале номер для первого открытого ордера таки будет 1, ордер с номером 0 - это внесение депозита на счет, для демки - да, первый открытый будет с номером ноль) - только я бы все равно так не обращался: к ордеру с непосредственным указанием номера - просто выбрал бы нужный циклом. А обращение такое - это от топикстартера.
Успехов.
ЗЫ - Все, понял о чем речь - согласен - выбор по моде трейдз будет от нуля. Это как-то автоматом прописыватся - уже даже внимания не обращаю...
Зачем запускать цикл когда ордер всего один?
я еще пробовал при открытии сразу присваивал переменной его тикет и потом подставлял его при
Мужики, разобрался........................
if(OrderType()==OP_SELL)
{
ticketSELL=OrderTicket();
OrderDelete(ticketSELL);
ордер выберается ведь открытый...........а я его пытаюсь удалить OrderDelete(ticketSELL); )))))))))
OrderClose здесь требуется........
всем спасибо.
Да пусть через 0............вот так тогда
............................
if(OrdersTotal()==1)
{
if(MA4>MA3&&MA2<MA1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderCloseTime()==0)
{
if(OrderType()==OP_SELL)
{
ticketSELL=OrderTicket();
OrderDelete(ticketSELL);
}
}
}
}
................................
Ошибка 4108......не правильный номер тикета. вот так.
Мозг, ОРЕХИ) Что такое удаление ордера на продажу? Ордер не считается, факир был пьян, удалить и забыть?:) Рыночные ордера закрывать нужно вроде как. Да и проверять надо выбор ордера, типа:
if (!OrderSelect(0,SELECT_BY_POS,MODE_TRADES)){ Print ("Ошибка выбора ордера"); return; }А цикл нужен за тем, что ордер может быть как один, так и не одного, а могут например быть ордера открытые руками или другим советником, надо перебрать все и выбрать "только свои".
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Не могу найти ошибку. Нужно закрыть ордер когда МА меняет направление.
В тестере-ошибка 4051.
Помогите решить проблему.
Всем заранее спасибо.
P.S. подразумевается что ордер уже открыт.