Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Сервис Фриланс: безопасный способ заказать робота. Попробуй сам!
liza
1051
liza 2014.03.06 10:27 

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

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

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

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

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

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
41185
Dmitry Fedoseev 2014.03.06 11:06  

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

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

liza
1051
liza 2014.03.06 11:17  

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

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

Dmitry Fedoseev
41185
Dmitry Fedoseev 2014.03.06 11:25  
liza:

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

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


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

liza
1051
liza 2014.03.06 11:48  

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

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

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