Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Добавить буферы в индикатор

Прошу добавить буферы
Up[] — MA вверх, Dn[] — MA вниз, Fl[] — MA горизонтально
в индикатор для использования в советнике, т.е. при соответствующем направлении линии буфер должен быть не пустой, при смене — опустошаться, заполняться новый.
Большое спасибо заранее!) Индикатор на Яндекс.Диске
  • 0
  • Просмотров: 2572
  • 11 ноября 2016, 10:13
  • seronn
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
10 ноября 2016
12 ноября 2016

Брокер для ваших роботов, 15 лет на рынке

Комментарии (3)

+
0
Мне будет намного проще читать значения индикатора на 1-м и 2-м барах сравнивать их и определять направление МА чем править чужой код а тем более индикатор.
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 11 ноября 2016, 17:59
+
0
C правкой индикатора у меня вот такой вариант получился:




//+------------------------------------------------------------------+
//|                                                          Xma.mq4 |
//|                                 Copyright © 2009, XrustSolution. |
//|                                        http://www.xrust.ucoz.net |
//-------------------------------------------------------------------+
#property copyright "#Copyright © 2008, XrustSolution.#"
#property link      "#http://www.xrust.ucoz.net#"

// Совсем другой индикатор получился

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Yellow
#property indicator_color2 Blue
#property indicator_color3 Red
#property indicator_color4 Yellow

extern double  porog=1.0;
//---- buffers
double Signal[],up[],dn[],fl[];
//+------------------------------------------------------------------+
void init()
  {
   SetIndexStyle(0,DRAW_LINE);
   SetIndexDrawBegin(0,0);
   SetIndexBuffer(0,Signal);

   SetIndexStyle(1,DRAW_LINE);
   SetIndexDrawBegin(1,0);
   SetIndexBuffer(1,up);

   SetIndexStyle(2,DRAW_LINE);
   SetIndexDrawBegin(2,0);
   SetIndexBuffer(2,dn);

   SetIndexStyle(3,DRAW_LINE);
   SetIndexDrawBegin(3,0);
   SetIndexBuffer(3,fl);

   IndicatorShortName("Xma("+porog+")");
   return;
  }
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   double tmp;
   int counted_bars=IndicatorCounted();
   int i;
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   for(i=limit;i>=0;i--)
     {
      if(i==Bars-1) Signal[i]=Close[i]; else Signal[i]=Signal[i+1];
      tmp=0;
      if(Signal[i]>0)
         tmp=(Close[i]/Signal[i]-1.0)*1000.0;
      if(MathAbs(tmp)>porog)
        {
         double Znak=1.0; if(tmp<0) Znak=-1.0;
         Signal[i]=Close[i]/(1.0+Znak*porog/1000.0);
         if(Signal[i]>Signal[i+1]) up[i]=Signal[i];
         if(Signal[i]<Signal[i+1]) dn[i]=Signal[i];
         if(Signal[i]==Signal[i+1]) fl[i]=Signal[i];
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+   

avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 11 ноября 2016, 22:38
+
0
Примерно так, только можно ли убрать запаздывание буфера в 1 бар? На скрине видно, как после горизонтальной линии начинается трендовая и наклон 1 бар рисуется желтой флетовой?
avatar

  4  seronn Автор Сообщений: 26

  • 12 ноября 2016, 20:02

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