Скачать MetaTrader 5

Не могу сделать правильный delete!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
liza
1052
liza  

Здравствуйте!

Надо чтобы отложенный передвигался вместе

со стопом ордера который трейлится, для этого его

нужно удалить. Подскажите

что у меня не так.

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);
}

Dmitry Fedoseev
45400
Dmitry Fedoseev  

Может проверку условий на удаление и само удаление вытащить из под for?

Сначала пройти по всем ордерам, собрать данные, потом принимать решение и действовать. Лучше не удалять и снова ставить, а модифицировать.

liza
1052
liza  

а отложенный получится модифицировать?

а вытащить проловала -- ен сдвигается вообще

Dmitry Fedoseev
45400
Dmitry Fedoseev  
liza:

а отложенный получится модифицировать?

а вытащить проловала -- ен сдвигается вообще


Вытащить по любому надо, иначе в этом коде нет разумной логики. Сначала вытащить, потом искать, почему не работает. В цикле еще надо запоминать тикет отложенныого ордера, чтобы удалять точно отложенный ордер, а не неизвестно что - OrderDelete(OrderTicket()).

liza
1052
liza  

Огроьное спасибо!!!

Все прекрасно работает!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий