Скачать MetaTrader 5

Нужна помощь с индикатором

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MakarFX
555
MakarFX  

Всем привет.

Индикатор Donchian Channel

//+------------------------------------------------------------------+
//|                                                 Donchian Channel |
//+------------------------------------------------------------------+
#property  copyright "Donchian"
#property  link      "Donchian"
//---- indicator settings
#property  indicator_chart_window
#property  indicator_buffers 5
#property  indicator_color1  DodgerBlue
#property  indicator_color2  Gold
#property  indicator_color3  Crimson
#property  indicator_color4  DodgerBlue
#property  indicator_color5  Gold
#property  indicator_width1  1
#property  indicator_width2  1
#property  indicator_width3  1
#property  indicator_width4  1
#property  indicator_width5  1
//---- indicator parameters
extern int  periods  =  50;
//---- indicator buffers
double     upper[];
double     lower[];
double     meder[];
double     upper2[];
double     lower2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
   {
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexStyle(3,DRAW_ARROW);
   SetIndexArrow(3,159);
   SetIndexStyle(4,DRAW_ARROW);
   SetIndexArrow(4,159);
//---- indicator buffers mapping
   SetIndexBuffer(0,upper);
   SetIndexBuffer(1,lower);
   SetIndexBuffer(2,meder);
   SetIndexBuffer(3,upper2);
   SetIndexBuffer(4,lower2);
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("Donchian Channel("+periods+")");
   SetIndexLabel(0,"Upper");
   SetIndexLabel(1,"Lower");
   SetIndexLabel(2,"Meder");
   SetIndexLabel(3,"Upper2");
   SetIndexLabel(4,"Lower2");
//---- initialization done
   return(0);
   }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
   {
   int limit;
   int counted_bars=IndicatorCounted();
   double high,low;
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- calculate values
   for(int i=0; i<limit; i++) 
      {
      high=iHigh(Symbol(),Period(),iHighest(Symbol(),Period(),MODE_HIGH,periods,i));
      low=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,periods,i));
      upper[i]=high;
      lower[i]=low;
      meder[i]=(high+low)/2;
      if(Close[1] > upper[i-3]) 
         upper2[i]= High[1];
      if(Close[1] < lower[i-3]) 
         lower2[i]= Low[1];
      }
   return(0);
   }
//+------------------------------------------------------------------+

Хотел сделать так чтоб индикатор отмечал свечи закрытые выше максимума и ниже минимума...

НЕ ПОЛУЧИЛОСЬ(((

Помогите кто понимает. Пожалуйста.
Vladimir Karputov
Модератор
58915
Vladimir Karputov  

Для начала нужно взять работающий код канала. Потом уже можно будет приделывать стрелочки, значки, указатели.

Donchian Channels
Donchian Channels
  • 2007.09.20
  • John Smith
  • www.mql5.com
Концепция системы: В системах следованию тренду большой популярностью пользуются каналы Дончина.
Victor Nikolaev
Модератор
15085
Victor Nikolaev  
MakarFX:

Всем привет.

Индикатор Donchian Channel

Хотел сделать так чтоб индикатор отмечал свечи закрытые выше максимума и ниже минимума...

НЕ ПОЛУЧИЛОСЬ(((

Помогите кто понимает. Пожалуйста.
Уточните свои требования. Пока код, который Вы предоставили им соответсвует
MakarFX
555
MakarFX  
barabashkakvn:

Для начала нужно взять работающий код канала. Потом уже можно будет приделывать стрелочки, значки, указатели.

Индикатор я взял из Code Base и добавил

      meder[i]=(high+low)/2;
      if(Close[1] > upper[i+3]) 
         upper2[i]= High[1];
      if(Close[1] < lower[i+3]) 
         lower2[i]= Low[1];
Vladimir Karputov
Модератор
58915
Vladimir Karputov  
Действительно, без Вашего добавления работает. А теперь еще раз сформулируйте, что Вы хотите обозначать стрелочками?
MakarFX
555
MakarFX  
Vinin:
Уточните свои требования. Пока код, который Вы предоставили им соответсвует

Я хотел, чтобы появлялась точка над последней закрытой свечей свечей, если она закрывается выше максимума или

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

Код который я выложил отображается так


Vladimir Karputov
Модератор
58915
Vladimir Karputov  

Сформулируйте, пожалуйста Ваше условие внятно. 

Vladimir Karputov
Модератор
58915
Vladimir Karputov  

Попробуйте так:

     

MakarFX
555
MakarFX  
barabashkakvn:

Сформулируйте, пожалуйста Ваше условие внятно. 

      if(Close[1] > upper[i+3]) 
         upper2[i]= High[1];
      if(Close[1] < lower[i+3]) 
         lower2[i]= Low[1];

возьмем классику Donchian Channel

есть линия максимума и линия минимума

эти линии меняется когда новая свеча пересекает их границу, даже если это тень.

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


MakarFX
555
MakarFX  
barabashkakvn:

Попробуйте так:

      if(i>3)

        {

         if(Close[i]>Close[i-3])

            upper2[i]=High[i];

         if(Close[i]<Close[i-3])

            lower2[i]=Low[i];

        } 

мне нужно пересечение уровня Donchian Channel, а не Close третей свечи
Vladimir Karputov
Модератор
58915
Vladimir Karputov  
MakarFX:
мне нужно пересечение уровня Donchian Channel, а не Close третей свечи
Свечи не пересекают канал, потому что канал и так строится по максимумам. Нужно другое условие.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий