помогите с кодом советника по индикатору

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Artur Yusupov
131
Artur Yusupov  
//+------------------------------------------------------------------+
//|                                                    BBflat_sw.mq4 |
//|                                                          by Raff |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Aqua
#property indicator_color2 Green
#property indicator_color3 Green
#property indicator_color4 Yellow
#property indicator_levelcolor  SlateGray
#property indicator_level1 0.0004
#property indicator_level2 -0.0004
//----

extern string  TimeFrame      = "current time frame";
extern int     period         =20;
extern int     shift          =0;
extern int     method         =0;
extern int     price          =0;
extern double  deviation      =2;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int limit, counted_bars=IndicatorCounted();
   double ima, std;
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0; i<limit; i++)
     {
      ima=iMA(NULL,TimeFrame,period,shift,method,price,i);
      std=deviation*iStdDev(NULL,TimeFrame,period,shift,method,price,i);
      
      ExtMapBuffer1[i]=0;
      ExtMapBuffer2[i]=std;
      ExtMapBuffer3[i]=-std;
      ExtMapBuffer4[i]=Close[i]-ima;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
вопрос в следующем

совсем "зеленый" в этой теме, но очень понравился данный индикатор, так как прочитал книгу про Боллинжеры.

как написать торгующий робот, чтобы он открывал сделки когда линия внутри индикатора ниже 0, открывать продажу и наоборот, выше 0 покупку

при этом там видны дивергенции очень хорошо и их использовать как сигнал на переворот сделки)))

буду очень признателен на любой ответ по делу))))
заранее спасибо
FXwin
755
FXwin  
Artur Yusupov:
как написать торгующий робот, чтобы он открывал сделки когда линия внутри индикатора ниже 0, открывать продажу и наоборот, выше 0 покупку

Если использовать выше-ниже нуля, то можно взять простой RSI, зачем вызывать пользовательский индикатор без дела.


Artur Yusupov
131
Artur Yusupov  
FXwin:

Если использовать выше-ниже нуля, то можно взять простой RSI, зачем вызывать пользовательский индикатор без дела.


Боже)))как идеально. Огромное спасибо за информативность)
буду пробовать прописать 

Могу в будущем обратиться с вопросом?)))

Artur Yusupov
131
Artur Yusupov  
Artur Yusupov:

Боже)))как идеально. Огромное спасибо за информативность)
буду пробовать прописать 

Могу в будущем обратиться с вопросом?)))

и еще вопрос....

можете объяснить, почему первому индикатору с периодом 20 соответствует RSI  с периодом 12 ???
я то думал что периоды и значения должны быть "синхронны" или максимально приближены

FXwin
755
FXwin  
Artur Yusupov:

почему первому индикатору с периодом 20 соответствует RSI  с периодом 12 ???
я то думал что периоды и значения должны быть "синхронны" или максимально приближены

RSI и МА разный метод сглаживания

Dmitry Fedoseev
57602
Dmitry Fedoseev  

Та желтая линия - это разница цены и скользящей средней. Здесь будет ближе MACD с периодом быстрой МА равным 1.

Но не будешь же так каждый индикатор расковыривать. Смысл вопроса, наверно, в том, как использовать имеющийся индикатор? Есть функция iCustom() через нее можно получить значения пользовательского индикатора...

Artur Yusupov
131
Artur Yusupov  
FXwin:

RSI и МА разный метод сглаживания

спасибо большое)))

Artur Yusupov
131
Artur Yusupov  
Dmitry Fedoseev:

Та желтая линия - это разница цены и скользящей средней. Здесь будет ближе MACD с периодом быстрой МА равным 1.

Но не будешь же так каждый индикатор расковыривать. Смысл вопроса, наверно, в том, как использовать имеющийся индикатор? Есть функция iCustom() через нее можно получить значения пользовательского индикатора...

точно))) я совсем этот вариант не рассмотрел)))
спасибо огромное

буду пробовать

Artur Yusupov
131
Artur Yusupov  
Dmitry Fedoseev:

Та желтая линия - это разница цены и скользящей средней. Здесь будет ближе MACD с периодом быстрой МА равным 1.

Но не будешь же так каждый индикатор расковыривать. Смысл вопроса, наверно, в том, как использовать имеющийся индикатор? Есть функция iCustom() через нее можно получить значения пользовательского индикатора...

подскажите пожалуйста как правильно будет прописать условие с циклом "for"  чтобы, к примеру, какой период тогда тоже значение свечей выше 0 по iCustom() той желтой линии что в Боллинжерах на индикаторе?
только чтобы железно 20 свечей были выше и ни одна из них не касалась нулевой отметки???

extern int   period = 20


for (int i=0; i<period; i++)
{ double trend_line = iCustom(........i) 

if (trend_line>0)  OPP_BUY

else(trend_line<0) OPP_SELL

}


примерно так я понимаю, подскажите, правильно ли???

Dmitry Fedoseev
57602
Dmitry Fedoseev  
bool ok=true;

for(int i=0;i<20;i++){
  if(iCustom(...,3,i)<=0){
    ok=false;
    break;
  }
}

if(ok)...

Только тут получается так, что каждый раз придется выполнять это цикл.

Можно сделать оптимальней. Сначала проверить на пересечение 20 баров тому назад. Если оно там есть, то проверить все бары в цикле

Artur Yusupov
131
Artur Yusupov  
Dmitry Fedoseev:

Только тут получается так, что каждый раз придется выполнять это цикл.

Можно сделать оптимальней. Сначала проверить на пересечение 20 баров тому назад. Если оно там есть, то проверить все бары в цикле

блин)))пока это выше моих пониманий, попытаюсь разобраться

я тут по самым простым методам пробую, взгляните стейт за сентябрь по тестеру (конечно я понимаю что история по тесту никакая, но есть мысли как сделать)
буду признателен за помощь в любом виде

https://yadi.sk/d/tUiZgPzS39d_6g

state
state
  • yadi.sk
Посмотреть и скачать с Яндекс.Диска
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий