alex30774

 
Уровень 19

  Торгую в компаниях:


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

Рейтинг 2086



РЕКОМЕНДУЮ



Сделать аналог индикатора для МТ5

Здравствуйте, Андрей.
А можно вот этот индикатор
zakaz.opentraders.ru/62022.html
переписать под МТ5.
  • 0
  • Просмотров: 1314
  • 25 января 2022, 11:33
  • alex30774
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
+1
на 2-е
avatar

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

  • 25 января 2022, 17:42
+
0
Спасибо большое, буду ждать.
avatar

  19  alex30774 Автор Сообщений: 715

  • 25 января 2022, 18:32
+
+1
я часа 2 просидел с этим индикатором, нужно больше времени. пока так:




//+------------------------------------------------------------------+
//|                                                        Gisto.mq5 |
//|                                              Copyright 2022, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property indicator_separate_window

#property indicator_buffers 2
#property indicator_plots   1

#property indicator_type1  DRAW_COLOR_HISTOGRAM
#property indicator_color1  Red,Lime
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2

int ind=0;
double gi[],col[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,gi,INDICATOR_DATA);
   SetIndexBuffer(1,col,INDICATOR_COLOR_INDEX);
   ind=iAC(NULL,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Count()
  {
   int n=0;

   for(int i=ArraySize(gi); i>=0; i--)
     {
      double ac1=gi[i];
      double ac2=gi[i+1];

      n++;

      if((ac1>0 && ac2<0) || (ac1<0 && ac2>0))
         break;
     }
   return(n);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   //ArraySetAsSeries(gi,true);
   CopyBuffer(ind,0,0,rates_total-1,gi);

   for(int i=0; i<=rates_total-1; i++)
     {
      if(gi[i]>0)
        {
         col[i]=0;
         //gi[i]=Count(i);
        }

      if(gi[i]<0)
        {
         col[i]=1;
         //gi[i]=-Count(i);
        }
     }

   Comment(Count());

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+



avatar

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

  • 1 февраля 2022, 23:17
+
+1
такой еще сделал вариант, но он одним цветом:




//+------------------------------------------------------------------+
//|                                                        Gisto.mq5 |
//|                                              Copyright 2022, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property indicator_separate_window

#property indicator_buffers 3
#property indicator_plots   1

#property indicator_type1  DRAW_COLOR_HISTOGRAM
#property indicator_color1  Red,Lime
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2

int ind=0;
double gi[],col[],ac[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,gi,INDICATOR_DATA);
   SetIndexBuffer(1,col,INDICATOR_COLOR_INDEX);
   SetIndexBuffer(2,ac,INDICATOR_CALCULATIONS);
   ind=iAC(NULL,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Count(int k)
  {
   int n=0;
   ArraySetAsSeries(ac,true);
   CopyBuffer(ind,0,0,111,ac);

   for(int i=k; i<111; i++)
     {
      double ac1=ac[i];
      double ac2=ac[i+1];

      n++;

      if((ac1>0 && ac2<0) || (ac1<0 && ac2>0))
         break;
     }
   return(n);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   ArraySetAsSeries(gi,true);

   for(int i=0; i<=rates_total-1; i++)
     {
      if(ac[i]>0)
        {
         col[i]=0;
         gi[i]=Count(i);
        }

      if(ac[i]<0)
        {
         col[i]=1;
         gi[i]=-Count(i);
        }
     }

   Comment("\n Count: ",Count(0));

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+



avatar

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

  • 1 февраля 2022, 23:47
+
0
Индикатор немножко не коректно отрисовывает(показал на скриншоте), а то что одним цветом, то не страшно.

Если сможите то поправьте индикатор, чтобы он правильно отображался(не пропускал столбики, хотя это больше эстетика, мне больше буферы нужны).
А в остальном всё устраивает, и спасибо большое за проделанную работу.
avatar

  19  alex30774 Автор Сообщений: 715

  • 2 февраля 2022, 12:04
+
+1
avatar

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

  • 2 февраля 2022, 21:29
+
0
Спасибо большое.
avatar

  19  alex30774 Автор Сообщений: 715

  • 3 февраля 2022, 12:32

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