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

Рейтинг 2073



РЕКОМЕНДУЮ



Доработка индикатора Auto_trend_forecaster

Прошу добавить в индикатор Auto_trend_forecaster.mq4 (3 Kb) стрелки (буфер) на изменение цвета индикатора
  • 0
  • Просмотров: 3625
  • 15 марта 2020, 21:48
  • soh28
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
стрелки можно добавить, а буфер тут ни к чему. смену цвета в советнике можно легко прописать и без буферов
Редактирован: 15 марта 2020, 21:58
avatar

  34  AM2 Сообщений: 15826 - Андрей

  • 15 марта 2020, 21:58
+
0
интересный индикатор*good* 
avatar

  9  Borg Сообщений: 88 - Borg

  • 16 марта 2020, 12:23
+
0
Главное, чтоб советник EA Designer Arrow v3 или конструктор ITS Pro могли получать сигналы именно при появлении стрелок (в момент изменения цвета линий индикатора)


Если можно, сделайте, пожалуйста.
avatar

  11  soh28 Автор Сообщений: 69 - Юрий

  • 16 марта 2020, 18:35
+
0
добавил буферы:




//+------------------------------------------------------------------+
//|                                                                  |
//|                                       Auto trend forecaster.mq4  |
//|                                                                  |
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 DodgerBlue
#property indicator_color2 OrangeRed

extern int TMperiod = 26;
extern double Intensity = 1.9;
extern int SL_distance_pips = 200;
int metod = MODE_SMMA;
int price = PRICE_LOW;
double blu[];
double red[];
double prev[];

double up[];
double dn[];

datetime t;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DisplayAlert(string as_0, double ad_8, double ad_16, double ad_24)
  {
   string ls_32;
   string ls_40;
   string ls_48;
   if(Time[0] != t)
     {
      t = Time[0];
      if(ad_24 != 0.0)
         ls_48 = "Price " + DoubleToStr(ad_24, 4);
      else
         ls_48 = "";
      if(ad_8 != 0.0)
         ls_40 = ", TakeProfit   " + DoubleToStr(ad_8, 4);
      else
         ls_40 = "";
      if(ad_16 != 0.0)
         ls_32 = ", StopLoss   " + DoubleToStr(ad_16, 4);
      else
         ls_32 = "";
      Alert("Auto TREND " + as_0 + ls_48 + ls_40 + ls_32 + " ", Symbol(), ", ", Period(), " min");
     }
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   int li_0;
   if(TMperiod == 8)
      li_0 = 2;
   else
      li_0 = 4;
   IndicatorBuffers(3);
   string ls_4 = "(" + TMperiod + ")";
   SetIndexBuffer(0, blu);
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, li_0);
   SetIndexLabel(0, "" + ls_4);
   SetIndexBuffer(1, red);
   SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, li_0);
   SetIndexLabel(1, "" + ls_4);
   SetIndexBuffer(2, prev);
   ArraySetAsSeries(prev, TRUE);

   SetIndexStyle(3,DRAW_ARROW,0,3,Blue);
   SetIndexArrow(3,108);
   SetIndexBuffer(3,up);

   SetIndexStyle(4,DRAW_ARROW,0,3,Red);
   SetIndexArrow(4,108);
   SetIndexBuffer(4,dn);

   IndicatorShortName("AUTO TREND FORECASTER");
   IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 1.0);
   return (0);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   return (0);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double WMA(int ai_0, int a_period_4)
  {
   return (iMA(NULL, 0, a_period_4, 0, metod, price, ai_0));
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double lda_20[];
   double lda_24[];
   double ld_36;
   int l_ind_counted_0 = IndicatorCounted();
   if(l_ind_counted_0 < 0)
      return (-1);
   int i = 1;
   int l_period_8 = MathFloor(MathSqrt(TMperiod));
   int li_12 = MathFloor(TMperiod / Intensity);
   int li_16 = Bars - l_ind_counted_0 + TMperiod + 1;
   if(li_16 > Bars)
      li_16 = Bars;
   ArraySetAsSeries(lda_20, TRUE);
   ArrayResize(lda_20, li_16);
   ArraySetAsSeries(lda_24, TRUE);
   ArrayResize(lda_24, li_16);
   double ld_28 = Close[1];
   for(i = 0; i < li_16; i++)
      lda_20[i] = 2.0 * WMA(i, li_12) - WMA(i, TMperiod);
   for(i = 0; i < li_16 - TMperiod; i++)
      prev[i] = iMAOnArray(lda_20, 0, l_period_8, 0, metod, i);
   for(i = li_16 - TMperiod; i > 0; i--)
     {
      lda_24[i] = lda_24[i + 1];
      if(prev[i] > prev[i + 1])
         lda_24[i] = 1;
      if(prev[i] < prev[i + 1])
         lda_24[i] = -1;
      if(lda_24[i] > 0.0)
        {
         blu[i] = prev[i];
         if(lda_24[i + 1] < 0.0)
            blu[i + 1] = prev[i + 1];
         if(lda_24[i + 1] < 0.0)
           {
            if(i == 1)
              {
               ld_36 = ld_28 - SL_distance_pips * Point;
               DisplayAlert("UP Buy ", 0, ld_36, ld_28);
               up[i]=ld_36;
              }
           }
         red[i] = EMPTY_VALUE;
        }
      else
        {
         if(lda_24[i] < 0.0)
           {
            red[i] = prev[i];
            if(lda_24[i + 1] > 0.0)
               red[i + 1] = prev[i + 1];
            if(lda_24[i + 1] > 0.0)
              {
               if(i == 1)
                 {
                  ld_36 = ld_28 + SL_distance_pips * Point;
                  DisplayAlert("DOWN Sell ", 0, ld_36, ld_28);
                  dn[i]=ld_36;
                 }
              }
            blu[i] = EMPTY_VALUE;
           }
        }
     }
     
   Comment("\n UP: ",up[7]);

   return (0);
  }
//+------------------------------------------------------------------+


avatar

  34  AM2 Сообщений: 15826 - Андрей

  • 16 марта 2020, 23:29
+
0
Спасибо. Скомпилировал. В советнике EA Designer Arrow v3 работает отлично. В конструкторе индикаторов ITS Pro почему то нет.
Можно стрелки вынести на график для лучшей визуализации? И если можно выложите индикатор, чтоб можно было скачать.
Спасибо.
Редактирован: 17 марта 2020, 20:01
avatar

  11  soh28 Автор Сообщений: 69 - Юрий

  • 17 марта 2020, 19:54
+
0
скинул в базу: www.opentraders.ru/downloads/2595/
avatar

  34  AM2 Сообщений: 15826 - Андрей

  • 17 марта 2020, 20:02

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