Запоздание при открытии/закрытии ордеров

 
У меня такая проблема: советник открывает и закрывает ордера с определенным запозданием, то есть не четко на пересечении нужных индикаторов, а позже на 1-2 бара. В чем может быть причина?Ниже кусок кода,в котором прописаны сигналы к открытию. Заранее спасибо.
//--------------------------------------------------------------------------------------------
Stoch_1=iStochastic(NULL, 0, KStoch, DStoch, Slow, MODE_SMA, 0, MODE_MAIN, 1);
Stoch_2=iStochastic(NULL, 0, KStoch, DStoch, Slow, MODE_SMA, 0, MODE_MAIN, 0); 
//--------------------------------------------------------------------------------------------
if (Peresechenie()==1) Open_Buy();
if (Peresechenie()==2) Open_Sell();
//============================================================================================
if (Zakrytie()==1) Close_Buy();
if (Zakrytie()==2) Close_Sell();
//============================================================================================
return;
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int Peresechenie()
{
//============================================================================================
if (Stoch_1<50 && Stoch_2>50) per=1;
if (Stoch_1>50&& Stoch_2<50) per=2;
//============================================================================================
return(per);
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int Zakrytie()
{
//============================================================================================
if (Stoch_1>50 && Stoch_2<50) zak=1;
if (Stoch_1<50 && Stoch_2>50) zak=2;
//============================================================================================
return(zak);
}
 
Eugene1305:
У меня такая проблема: советник открывает и закрывает ордера с определенным запозданием, то есть не четко на пересечении нужных индикаторов, а позже на 1-2 бара. В чем может быть причина?Ниже кусок кода,в котором прописаны сигналы к открытию. Заранее спасибо.

У вас стохастик использует текущий бар (тот который перерисовывается), то есть строго говоря нет гарантии, что сигнал по этому индикатору будут такими же как и на уже отрисованном.

Правельнее будет так

Stoch_1=iStochastic(NULL, 0, KStoch, DStoch, Slow, MODE_SMA, 0, MODE_MAIN, 2);
Stoch_2=iStochastic(NULL, 0, KStoch, DStoch, Slow, MODE_SMA, 0, MODE_MAIN, 1); 
 

vasya_vasya:


У вас стохастик использует текущий бар (тот который перерисовывается), то есть строго говоря нет гарантии, что сигнал по этому индикатору будут такими же как и на уже отрисованном.

Правельнее будет так

Stoch_1=iStochastic(NULL, 0, KStoch, DStoch, Slow, MODE_SMA, 0, MODE_MAIN, 2);
Stoch_2=iStochastic(NULL, 0, KStoch, DStoch, Slow, MODE_SMA, 0, MODE_MAIN, 1);
Не помогает,ордера открываются на ровном месте,а не на пересечении Стохастика с уровнем 50...
Причина обращения: