помогите подкорректировать код!!!

 

Всем привет!

Алгоритм кода следующий: советник ищет самый волотильный бар за определенный период (пусть будет 60 минут), и спустя 10 баров (в данном случае 10 минут) выставляет ордера на пробой цены High найденного бара вверх или на пробой цены Low вниз, если текущая цена соответственно ниже или выше найденного High или Low.

Я это опредставляю вот так:

extern int Quant_Bars=60; // размерность массива

int start() {
//----
int i;
double Max_volume=0; // максимальный обьем
double Price_O; //цена открытия
double Price_H; //макс
double Price_L; //мин
double Price_C; //цена закрытия
//+------------------------------------------------------------------+

int total=OrdersTotal();
double bid =MarketInfo(Symbol(),MODE_BID); // Запрос значения Bid
double ask =MarketInfo(Symbol(),MODE_ASK); // Запрос значения Ask
double point =MarketInfo(Symbol(),MODE_POINT);//Запрос Point

for(i=9;i<Quant_Bars;i++) { // цикл перебора баров
if(Volume[i]>Max_volume) // если больше предыдущего
{
Max_volume=Volume[i]; //значит оно и есть
Price_O=Open[i];
Price_H=High[i];
Price_L=Low[i];
Price_C=Close[i];


}
for(int j=0;i<OrdersTotal();i++){
if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)){
}}
if ((Price_H>bid)&&(total<1)) // Цикл перебора ордер
{
OrderSend(Symbol(),OP_BUYSTOP,0.01,Price_H,3,Price_H-100*Point,Price_H+200*Point);
{
Alert (GetLastError()); // Сообщение об ошибке
return;
}
}
if ((Price_L<bid)&&(total<1)) // Цикл перебора ордер
{
OrderSend(Symbol(),OP_SELLSTOP,0.01,Price_L,3,Price_L+100*Point,Price_L-200*Point);

{
Alert (GetLastError()); // Сообщение об ошибке
return;
}}}
return;
}

но что то советник выставляет ордера не по нужным ценам

помогите разобраться, плиз?!

 
int start()
 {
//----
int i,ret=0; 
double Max_volume=0; // максимальный обьем 
double Price_O; //цена открытия
double Price_H; //макс
double Price_L; //мин
for(i=9;i<Quant_Bars;i++) { // цикл перебора баров
if(Volume[i]>Max_volume) // если больше предыдущего
{
Max_volume=Volume[i]; //значит оно и есть
Price_O=Open[i]; 
Price_H=High[i];
Price_L=Low[i];
}}

if (Price_H>Ask+10*Point && OrdersTotal()==0)
{
ret=OrderSend(Symbol(),OP_BUYSTOP,0.01,Price_H,3,Price_H-100*Point,Price_H+200*Point,0,0,0,CLR_NONE);
if (ret>1) Alert (GetLastError()); // Сообщение об ошибке
return;
}

if (Price_L<Bid-10*Point && OrdersTotal()==0) // Цикл перебора ордер
{
ret=OrderSend(Symbol(),OP_SELLSTOP,0.01,Price_L,3,Price_L+100*Point,Price_L-200*Point,0,0,0,CLR_NONE);
if (ret>1) Alert (GetLastError());
return;
}

return;
}
 
благодарю!))