Подскажите пожалуйста!

 

Не могу понять почему эта функция выставляет отложенные ордера через 3 дня после открытия ордера по рынку.


void pol(int l, int t)
{
int actTotal = OrdersTotal(), b = 0, s = 0, bs = 0, ss = 0, bl = 0, sl = 0;

for(int i=0; i<actTotal;i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if( OrderSymbol()==Symbol() && OrderMagicNumber() == t)
{
if(OrderType() == OP_BUY) b++;
if(OrderType() == OP_SELL) s++;
if(OrderType() == OP_BUYSTOP) bs++;
if(OrderType() == OP_SELLSTOP) ss++;
}}}

if(b > 0 && s < 1 && b < 2)
{
if(ss < 1)
OrderSend(Symbol(),OP_SELLSTOP,Lots,Ask - l*Point,Slippage, NULL,lpo(t),"",t,0,Pink);
}

else if(s > 0 && b < 1 && s < 2)
{
if(bs < 1)
OrderSend(Symbol(),OP_BUYSTOP,Lots,Bid + l*Point,Slippage,NULL,lpo(t),"",t,0,Gray);
}

}

 
liza:

Не могу понять почему эта функция выставляет отложенные ордера через 3 дня после открытия ордера по рынку.

Удивительно что она вообще что-то открывает

 

Надо просто логику менять.

Вариант 1. 2. - рыночных ордеров нет открытых, отложенников тоже нет (такое возможно, первый запуск или после выходных)

Вариант 3. 4. - Рыночные ордера есть (но он уже есть)

 
Ордер по рынку уже есть, а отложенные открываются через 3 дня.
 
liza:
Ордер по рынку уже есть, а отложенные открываются через 3 дня.

думаю, что эту функцию запускают через 3 дня после открытия рыночного ордера
 
она у меня должна запускаться сразу после открытия ордера по рынку -- это локирующая позиция.
 
liza:
она у меня должна запускаться сразу после открытия ордера по рынку -- это локирующая позиция.

Вы показали функцию. Функция где-то вызывается. Надо показать полностью код советника
 
Прикрепляю
Файлы:
Причина обращения: