Ну так так и пишите в программе, сначала проверка нового бара
if (TimeBar==Time[0]) return(0);
TimeBar=Time[0];
далее проверка индикатора и выставление ордера
if (A>Б)
{
if (OrderSend(Symbol(),OP_BUY, LOT(),NormalizeDouble(Ask,Digits),2,0,0,Comment.order,Magic,3)==-1)
Print("Ошибка ",GetLastError()," открытия ордера ");
else {CCI_OK=false;F_OK=false;}
}
else
{
if (OrderSend(Symbol(),OP_SELL,LOT(),NormalizeDouble(Bid,Digits),2,0,0,Comment.order,Magic,3)==-1)
Print("Ошибка ",GetLastError()," открытия ордера ");
else {CCI_OK=false;F_OK=false;}
}
Уважаемы cmillion !
спасибо за ответ проблема оказывается зарыта глубже я не правильно определил параметры для сравнения по видимому ! помогите разобраться как мне правильно взять данные с индикатора чтобы когда высвечивалась нижняя тройка открывался ордер каждый бар допустим на бай а когда верхняя тройка в противоположную сторону.
посмотрите пожалуйста в чем здесь у меня ошибка!?
extern double Period1=5;
extern double Period2=13;
extern double Period3=34;
extern string Dev_Step_1="1,3";
extern string Dev_Step_2="8,5";
extern string Dev_Step_3="21,12";
extern int Symbol_1_Kod=140;
extern int Symbol_2_Kod=141;
extern int Symbol_3_Kod=142;
int New_Bar;
int TimeBar;
int start()
{
int P1= Period1 ;
int P2= Period2 ;
int P3= Period3 ;
if (TimeBar==Time[0]) return(0);
TimeBar=Time[0];
double L_4=iCustom(NULL,PERIOD_H1,"volna",P1,P2,P3,4,0);
double L_5=iCustom(NULL,PERIOD_H1,"volna",P1,P2,P3,5,0);
if (L_4<L_5 ) {
Comment("Работаем на SELL");
OrderSend(Symbol(),OP_SELL,0.01,Bid,30,0,Bid-250*Point);
}
if (L_4>L_5 ){
Comment("Работаем на BUY");
OrderSend(Symbol(),OP_BUY,0.01,Ask,30,0,Ask+250*Point);
}
}