Может в этом
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); }
Не могу найти ошибку! Помогите, пожалуйста, новичку! Советник не заключает сделки...
Вот код:
Советник работает на основе Ишимоку. Если тенкан пересекает киджун снизу вверх он открывает лонг. Для подтверждения сигнала советник проверяет, что Чинкоу спан выше цены.
Советник может только покупать. Я только учусь програмироватть и знаю что торгуя по таким правилам прибыли не будет. Я просто хочу научится писать советники.
Советник не выдает никаких ошибок, просто не заключает сделок.
А еще непонятка в том, что если "(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() !!!!
Спасибо большое Rlx и Vinin !!!
А я думал, что ArrayMaximum возвращает максимальное значение а не индекс элемента!
Спасибо, теперь буду знать! и пользоваться iHighest(), iLowest() !!!!
Только не стоит забывать что они тоже возвращают индекс
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Не могу найти ошибку! Помогите, пожалуйста, новичку! Советник не заключает сделки...
Вот код:
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;", то советник начинает торговать, причем торги его близки к правильным!!!
Помогите, пожалуйста, господа спецы! Неделю уже бьюсь, не могу понять в чем дело...