Не могу найти ошибку! Помогите, пожалуйста, новичку!

 

Не могу найти ошибку! Помогите, пожалуйста, новичку! Советник не заключает сделки...

Вот код:

extern int interval_1 = 9;
extern int interval_2 = 26;
extern int interval_3 = 52;

//------------------------------------------------------------------------------------------------//

int start()
{

double Tenkan = Func(interval_1, 1);
double Tenkan1 = Func(interval_1, 2);
double Kijun = Func(interval_2, 1);
double Kijun1 = Func(interval_2, 2);
double Senkou_Span_A;
double Chinkou_Span = Close[interval_2];
int ticket;

if (Tenkan > Kijun)
{
if (Tenkan1 <= Kijun1)
{
if (Close[1] > Close[interval_2]) // проверка условия, что Чинкоу спан выше цены
{
if (OrdersTotal() < 1)
{
ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-100*Point,Ask+100*Point,"My order #",16384,0,Green);
if(ticket < 0)
{
Print("Ордер не установлен. Ошибка - #",GetLastError());
return(0);
}
}
}
}
}
return(0);
}

//------------------------------------------------------------------------------------------------//

int Func(int count, int start)
{
double Max = ArrayMaximum(High, count, start);
double Min = ArrayMinimum(Low, count, start);
double Result = (Max + Min) / 2;
return(Result);
}

//------------------------------------------------------------------------------------------------//


Советник работает на основе Ишимоку. Если тенкан пересекает киджун снизу вверх он открывает лонг. Для подтверждения сигнала советник проверяет, что Чинкоу спан выше цены.

Советник может только покупать. Я только учусь програмироватть и знаю что торгуя по таким правилам прибыли не будет. Я просто хочу научится писать советники.

Советник не выдает никаких ошибок, просто не заключает сделок.

А еще непонятка в том, что если "(high + low) / 2;" заменить на "(high - low) / 2;", то советник начинает торговать, причем торги его близки к правильным!!!

Помогите, пожалуйста, господа спецы! Неделю уже бьюсь, не могу понять в чем дело...

 

Может в этом

int Func(int count, int start)
 {
 double Max = ArrayMaximum(High, count, start);
 double Min = ArrayMinimum(Low, count, start);
 double Result = (Max + Min) / 2;
 return(Result);
 }

Нужно

double Func(int count, int start)
 {
 double Max = ArrayMaximum(High, count, start);
 double Min = ArrayMinimum(Low, count, start);
 double Result = (Max + Min) / 2;
 return(Result);
 }
 
Xaoss1990:

Не могу найти ошибку! Помогите, пожалуйста, новичку! Советник не заключает сделки...

Вот код:


Советник работает на основе Ишимоку. Если тенкан пересекает киджун снизу вверх он открывает лонг. Для подтверждения сигнала советник проверяет, что Чинкоу спан выше цены.

Советник может только покупать. Я только учусь програмироватть и знаю что торгуя по таким правилам прибыли не будет. Я просто хочу научится писать советники.

Советник не выдает никаких ошибок, просто не заключает сделок.

А еще непонятка в том, что если "(high + low) / 2;" заменить на "(high - low) / 2;", то советник начинает торговать, причем торги его близки к правильным!!!

Помогите, пожалуйста, господа спецы! Неделю уже бьюсь, не могу понять в чем дело...



int Func(int count, int start)
{
double Max = High[ArrayMaximum(High, count, start)];
double Min = Low[ArrayMinimum(Low, count, start)];
double Result = (Max + Min) / 2;
return(Result);
}

Хотя есть специальные функции iHighest(), iLowest()
 

Спасибо большое Rlx и Vinin !!!

А я думал, что ArrayMaximum возвращает максимальное значение а не индекс элемента!

Спасибо, теперь буду знать! и пользоваться iHighest(), iLowest() !!!!

 
Xaoss1990:

Спасибо большое Rlx и Vinin !!!

А я думал, что ArrayMaximum возвращает максимальное значение а не индекс элемента!

Спасибо, теперь буду знать! и пользоваться iHighest(), iLowest() !!!!


Только не стоит забывать что они тоже возвращают индекс
Причина обращения: