soh28
Юрий

 
Уровень 4


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

Рейтинг 1528



РЕКОМЕНДУЮ



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

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

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

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

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

  29  AM2 Сообщений: 10548 - Андрей

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

  6  Borg Сообщений: 24 - Borg

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


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

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

  • 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

  29  AM2 Сообщений: 10548 - Андрей

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

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

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

  29  AM2 Сообщений: 10548 - Андрей

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

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