Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2265

 
Artyom Trishkin #:

Сами что пробовали написать? Что не получилось? Покажите

спасибо, получилось через ордертотал профит написать,ч то хотел
 

Здравствуйте! Хочу создать советник с использованием RSI. Вроде раньше и создавал, казалось бы и простая задача, но советник не работает на заданных параметрах.

Подскажите, пожалуйста, в чем ошибка.

extern int RSI_Period    = 14;

extern double RSI_level_1   = 60.0;

extern double RSI_level_2   = 40.0;

R_1=iRSI(NULL,0,RSI_Period,PRICE_CLOSE,0);

R_2=iRSI(NULL,0,RSI_Period,PRICE_CLOSE,1);

if (R_1 < RSI_level_1 && R_2 > RSI_level_1 ) Cls_B=true; 

if (R_1 > RSI_level_2 && R_2 < RSI_level_2 ) Cls_S=true;

 
Ratmirfat #:

Здравствуйте! Хочу создать советник с использованием RSI. Вроде раньше и создавал, казалось бы и простая задача, но советник не работает на заданных параметрах.

Подскажите, пожалуйста, в чем ошибка.

extern int RSI_Period    = 14;

extern double RSI_level_1   = 60.0;

extern double RSI_level_2   = 40.0;

R_1=iRSI(NULL,0,RSI_Period,PRICE_CLOSE,0);

R_2=iRSI(NULL,0,RSI_Period,PRICE_CLOSE,1);

if (R_1 < RSI_level_1 && R_2 > RSI_level_1 ) Cls_B=true; 

if (R_1 > RSI_level_2 && R_2 < RSI_level_2 ) Cls_S=true;

Здесь ошибок нет, можно добавить...

if (R_1 < RSI_level_1 && R_2 >= RSI_level_1 ) Cls_B=true; 

if (R_1 > RSI_level_2 && R_2 <= RSI_level_2 ) Cls_S=true;

почему не торгует - надо искать ошибки далее в коде

 

Спасибо! Дело в том, что если посмотреть на конкретном таймфреме, ну не закрываются сделки на этом уровне RSI, несколько раз проверял. 

 
Но, вроде разобрался. Еще один момент подскажите, если открывать сделку к примеру по МА, а закрывать по RSI, то получается, сделка открывается, и тут же закрывается, и так повторяется десятки раз. Подскажите, пожалуйста, как добавить к условиям временной промежуток, к примеру, закрытие сделки, если прошло 3 бара?
 
Ratmirfat #:

Спасибо! Дело в том, что если посмотреть на конкретном таймфреме, ну не закрываются сделки на этом уровне RSI, несколько раз проверял. 

Добавьте принт данных и тогда будет видно в чем ошибка.
if (R_1 < RSI_level_1 && R_2 >= RSI_level_1 )
  {
   Cls_B=true; Print("SignalBuy time: ",Time[0]," /RSI 0: ",R_1," /RSI 1: ",R_2);
  }

if (R_1 > RSI_level_2 && R_2 <= RSI_level_2 )
  {
   Cls_S=true; Print("SignalSell time: ",Time[0]," /RSI 0: ",R_1," /RSI 1: ",R_2);
  }
 
Tretyakov Rostyslav #:
Добавьте принт данных и тогда будет видно в чем ошибка.
Спасибо, так и сделаю
 
Подскажите пожалуйста как написать условия закрытия ордера через определенное количество баров? Или ветку в архиве форума. Спасибо!
 
Ratmirfat #:
Подскажите пожалуйста как написать условия закрытия ордера через определенное количество баров? Или ветку в архиве форума. Спасибо!
Перебираете открытые ордера и сравниваете время открытия с текущим временем, если разница >= пяти барам по тикету закрываете.
 
Tretyakov Rostyslav #:
Перебираете открытые ордера и сравниваете время открытия с текущим временем, если разница >= пяти барам по тикету закрываете.

Спасибо, попробую!

Причина обращения: