Может проверку условий на удаление и само удаление вытащить из под for?
Сначала пройти по всем ордерам, собрать данные, потом принимать решение и действовать. Лучше не удалять и снова ставить, а модифицировать.
а отложенный получится модифицировать?
а вытащить проловала -- ен сдвигается вообще
liza:
а отложенный получится модифицировать?
а вытащить проловала -- ен сдвигается вообще
Вытащить по любому надо, иначе в этом коде нет разумной логики. Сначала вытащить, потом искать, почему не работает. В цикле еще надо запоминать тикет отложенныого ордера, чтобы удалять точно отложенный ордер, а не неизвестно что - OrderDelete(OrderTicket()).
Огроьное спасибо!!!
Все прекрасно работает!
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте!
Надо чтобы отложенный передвигался вместе
со стопом ордера который трейлится, для этого его
нужно удалить. Подскажите
что у меня не так.
int del()
{
int B=0, S=0, SS=0, BS=0;
double p31, p32, s31, s32;
for(int i=OrdersTotal()-1;i >= 0;i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if( OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
B++;
s31 = NormalizeDouble(OrderStopLoss(),4);
}
if(OrderType()==OP_SELL)
{
S++;
s32 = NormalizeDouble(OrderStopLoss(),4);
}
if(OrderType()==OP_BUYSTOP)
{
BS++;
p31 = NormalizeDouble(OrderOpenPrice(),4);
}
if(OrderType()==OP_SELLSTOP)
{
SS++;
p32 = NormalizeDouble(OrderOpenPrice(),4);
}
}
}
if(((s31 > p32 || s32 < p31) && ((S > 0 && BS > 0) || (B > 0 && SS > 0))) ||
((B < 1 && S < 1) && (SS > 0 || BS > 0)))
{
OrderDelete(OrderTicket());
}
}
return(0);
}