Уважаемые программисты! Помогите описать выставление ордера на пересечении ценой МА
Делаю так:
double MaUp0=NormalizeDouble(iMA(NULL,0,MA1,0,MODE_LWMA,PRICE_CLOSE,0),Digits);
double MaUp1=NormalizeDouble(iMA(NULL,0,MA1,0,MODE_LWMA,PRICE_CLOSE,1),Digits);
double MaDown0=NormalizeDouble(iMA(NULL,0,MA2,0,MODE_LWMA,PRICE_CLOSE,0),Digits);
double MaDown1=NormalizeDouble(iMA(NULL,0,MA2,0,MODE_LWMA,PRICE_CLOSE,1),Digits);
if ((Open[1]<MaUp1)&&(Bid>MaUp0))
{
BuyOp=true;
}
if ((Open[1]>MaDown1)&&(Bid<MaDown0))
{
SellOp=true;
}
А получается что ордер выставляется на следующем баре после пересечения, а нужно на нулевом
double MaUp0=NormalizeDouble(iMA(NULL,0,MA1,0,MODE_LWMA,PRICE_CLOSE,0),Digits);
double MaUp1=NormalizeDouble(iMA(NULL,0,MA1,0,MODE_LWMA,PRICE_CLOSE,1),Digits);
double MaDown0=NormalizeDouble(iMA(NULL,0,MA2,0,MODE_LWMA,PRICE_CLOSE,0),Digits);
double MaDown1=NormalizeDouble(iMA(NULL,0,MA2,0,MODE_LWMA,PRICE_CLOSE,1),Digits);
if ((Open[1]<MaUp1)&&(Bid>MaUp0)) - если цена открытия предыдущей свечи ниже (меньше) значения МА на предыдущей свече и текущая цена выше (больше) значения МА на текущей свече...
{
BuyOp=true; ... то разрешаем покупку на текущей свече...
}
if ((Open[1]>MaDown1)&&(Bid<MaDown0)) - если цена открытия предыдущей свечи выше (больше) значения МА на предыдущей свече и текущая цена ниже (меньше) значения МА на текущей свече...
{
SellOp=true; ... то разрешаем продажу на текущей свече..
}
вобщем как запрограммировал так и выполняет...