← К каталогу
Исходный код · ID 4680

Heikin Ashi Ma T3

(jh) chart jurik.mq5

Похожие материалы по тегам

(jh) heiken jurik.mq5MQL5 / MetaTrader 5 · 1 общих теговlinear breakthrough strategy.pineTradingView · 1 общих тегов(c) jurik ma-signal.mq5MQL5 / MetaTrader 5 · 1 общих теговmulti-signal trading signal system.pineTradingView · 1 общих тегов(1) volatility stop.mq4MQL4 / MetaTrader 4 · 1 общих теговliquidity profile_smc_tema_dsps$.pineTradingView · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор отображает свечи Heikin Ashi на графике MetaTrader 5, рассчитывая их значения на основе сглаженных ценовых данных. В качестве базового сглаживания может использоваться метод Jurik или стандартная скользящая средняя — выбор задаётся соответствующим параметром. Результаты отрисовываются в виде четырёх гистограмм, соответствующих компонентам Heikin Ashi (открытие, закрытие, низ, высок).

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

Продукт предназначен для анализа ценовых данных и технических показателей в среде MetaTrader 5. Он предоставляет визуальное представление динамики цен через призму Heikin Ashi с настраиваемыми фильтрами сглаживания и системой алертов.

Настройки программы

НастройкаОписание
MaPeriod Период скользящей средней, используемой для базового сглаживания при отключённой функции Jurik.
MaMetod Числовой код метода скользящей средней, применяемой при отключённой функции Jurik. Определяет тип расчёта базовой скользящей.
Step Шаг сглаживания, ограничивающий изменение значений индикатора между соседними барами. При нулевом значении ограничение не применяется.
BetterFormula Переключатель альтернативной формулы расчёта закрытия Heikin Ashi. При активации используется соотношение с отношением разницы цен к диапазону, при неактивации — стандартное среднее четырёх значений.
jurik Переключатель сглаживания по методике Jurik. При активации для расчёта используется адаптивная волатильностью фильтрация вместо стандартной скользящей средней.
Length Длина сглаживания, определяющая глубину фильтра при использовании Jurik-сглаживания. Влияет на отзывчивость и плавность рассчитанных значений.
Phase Фазовый параметр сглаживания, влияющий на поведение Jurik-фильтра. Принимает числовое значение типа double.
alertsOn Главный переключатель включения/отключения всех уведомлений индикатора.
alertsOnCurrent Переключатель уведомления о текущем баре. При активации проверка тренда выполняется на текущем незавершённом баре, при неактивации — с задержкой в один бар.
alertsMessage Переключатель отображения текстового оповещения (Alert) при смене тренда Heikin Ashi.
alertsSound Переключатель воспроизведения звукового сигнала при смене тренда Heikin Ashi.
alertsEmail Переключатель отправки email-уведомления при смене тренда Heikin Ashi.
Получить полный код

Поиск по коду файла

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 White
#property indicator_color2 White
#property indicator_color3 Silver
#property indicator_color4 DodgerBlue
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 3
#property indicator_width4 3

extern int    MaPeriod        = 10;
extern int    MaMetod         =  2;
extern int    Step            =  1;
extern bool   BetterFormula   = false;
extern bool   jurik           = true;
extern int    Length          = 34;
extern double Phase           = 0;
extern bool   alertsOn        = true;
extern bool   alertsOnCurrent = false;
extern bool   alertsMessage   = true;
extern bool   alertsSound     = false;
extern bool   alertsEmail     = false;

double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double trend[];

int init()
{
      // код доступен только после оплаты
   }

int start() 
 {
      // код доступен только после оплаты
   }
   double maOpen, maClose, maLow, maHigh;
   double haOpen, haClose, haLow, haHigh;
   int    counted_bars=IndicatorCounted();
   int    pointModifier;
   int    i,limit;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = Bars-counted_bars;
         if (Digits==3 || Digits==5)
               pointModifier = 10;
         else  pointModifier = 1;               

   for(int pos=limit; pos >= 0; pos--)
   {
      if (jurik)
         {
            maOpen  = iSmooth(Open[pos], Length,Phase,pos,0);
            maClose = iSmooth(Close[pos],Length,Phase,pos,10);
            maLow   = iSmooth(Low[pos],  Length,Phase,pos,20);
            maHigh  = iSmooth(High[pos], Length,Phase,pos,30);
         }
      else
         {
            maOpen  = iMA(NULL,0,MaPeriod,0,MaMetod,PRICE_OPEN, pos);
            maClose = iMA(NULL,0,MaPeriod,0,MaMetod,PRICE_CLOSE,pos);
            maLow   = iMA(NULL,0,MaPeriod,0,MaMetod,PRICE_LOW,  pos);
            maHigh  = iMA(NULL,0,MaPeriod,0,MaMetod,PRICE_HIGH, pos);
         }

      if (BetterFormula) {
               if (maHigh!=maLow)
                     haClose = (maOpen+maClose)/2+(((maClose-maOpen)/(maHigh-maLow))*MathAbs((maClose-maOpen)/2));
               else  haClose = (maOpen+maClose)/2; }
         else        haClose = (maOpen+maHigh+maLow+maClose)/4;
                     haOpen   = (ExtMapBuffer3[pos+1]+ExtMapBuffer4[pos+1])/2;
                     haHigh   = MathMax(maHigh, MathMax(haOpen,haClose));
                     haLow    = MathMin(maOpen,  MathMin(haOpen,haClose));

         if (haOpen<haClose) { ExtMapBuffer1[pos]=haLow;  ExtMapBuffer2[pos]=haHigh; } 
         else                { ExtMapBuffer1[pos]=haHigh; ExtMapBuffer2[pos]=haLow;  } 
                               ExtMapBuffer3[pos]=haOpen;
                               ExtMapBuffer4[pos]=haClose;

      if (Step>0)
      {
         if( MathAbs(ExtMapBuffer1[pos]-ExtMapBuffer1[pos+1]) < Step*pointModifier*Point ) ExtMapBuffer1[pos]=ExtMapBuffer1[pos+1];
         if( MathAbs(ExtMapBuffer2[pos]-ExtMapBuffer2[pos+1]) < Step*pointModifier*Point ) ExtMapBuffer2[pos]=ExtMapBuffer2[pos+1];
         if( MathAbs(ExtMapBuffer3[pos]-ExtMapBuffer3[pos+1]) < Step*pointModifier*Point ) ExtMapBuffer3[pos]=ExtMapBuffer3[pos+1

Показано первые 50% кода (символов: 5263)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
526,30₽ ≈ $6.45