Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да, все верно, я выставляю сетку из отложников с шагом(произвольным) от основного рыночного ордера, для закрытия используется один и тот же стоп лосс и обратные сигналы, все работает так как надо, но хотелось бы удалить все отложники при достижении стоп лосса (как вариант удаление можно производить при закрытии сделок)
P.S. смысл прикреплять весь код, если вопрос только про удаление не реализованных отложников, если схемы есть, то я думаю вряд ли они будут сильно отличаться, если я не прав, тогда поясните))
Поясняю во первых у вас в коде очень много логических и синтактических ошибок. Во вторых что бы правильно построить логику удаления нужно видеть полностью всю картину а не ее кусок. Первый код который я вам приводил должен был закрывать рыночные и удалять отложники по сигналу. Я вам сейчас написал функцию которая удаляет отложенные ордера при срабатывании стоплосса, для этого в эту функцию необходимо передать тикет ордера который нужно отследить на срабатывание по стоплоссу.
{
if(OrderSelect(ticket,SELECT_BY_TICKET))
{
if(StringFind(OrderComment(),"sl")>=0)
{
int total=OrdersTotal();
bool res;
for(int i=total-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS))continue;
if(OrderMagicNumber()!=MagicNumber2)continue;
if(OrderSymbol()!=Symbol())continue;
if(OrderType()==OP_BUYSTOP)
{
res=OrderDelete(OrderTicket(),Violet);
if(!res)Print("Ошибка удаления ордера ",OrderTicket()," № - ",GetLastError());
}
}
}
}
}
Поясняю во первых у вас в коде очень много логических и синтактических ошибок. Во вторых что бы правильно построить логику удаления нужно видеть полностью всю картину а не ее кусок. Первый код который я вам приводил должен был закрывать рыночные и удалять отложники по сигналу. Я вам сейчас написал функцию которая удаляет отложенные ордера при срабатывании стоплосса, для этого в эту функцию необходимо передать тикет ордера который нужно отследить на срабатывание по стоплоссу.
{
if(OrderSelect(ticket,SELECT_BY_TICKET))
{
if(StringFind(OrderComment(),"sl")>=0)
{
int total=OrdersTotal();
bool res;
for(int i=total-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS))continue;
if(OrderMagicNumber()!=MagicNumber2)continue;
if(OrderSymbol()!=Symbol())continue;
if(OrderType()==OP_BUYSTOP)
{
res=OrderDelete(OrderTicket(),Violet);
if(!res)Print("Ошибка удаления ордера ",OrderTicket()," № - ",GetLastError());
}
}
}
}
}