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

Moving MinMax

moving minmax shifted mtf.mq5

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

indicator previous session range + projected candles + boschoch protected for tradingview.pineTradingView · 1 общих тегов#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Moving MinMax — это пользовательский индикатор для MetaTrader 5, рассчитывающий осциллятор на основе анализа минимальных и максимальных значений ценовых данных с применением экспоненциального сглаживания. Индикатор отображает несколько буферов: гистограммы верхней и нижней границ, маркеры разворотов тренда и линии экстремумов в отдельном подокне графика.

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

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

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

НастройкаОписание
TimeFrame Таймфрейм, на котором выполняется расчёт индикатора. Можно выбрать любой доступный таймфрейм или текущий график.
Smoothing Период сглаживания, используемый при расчёте индикатора. Определяет глубину усреднения ценовых данных.
Window Размер окна расчёта — количество баров, используемых для анализа и построения индикаторных линий.
Price Тип цены для расчётов (например, цена закрытия или другой доступный тип цены).
ShiftValues Переключатель сдвига значений индикатора. При активации значения сдвигаются на величину, зависящую от параметра сглаживания.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1  DeepSkyBlue
#property indicator_color2  PaleVioletRed
#property indicator_color3  Yellow
#property indicator_color4  DeepSkyBlue
#property indicator_color5  PaleVioletRed
#property indicator_color6  DeepSkyBlue
#property indicator_color7  PaleVioletRed
#property indicator_width1  2
#property indicator_width2  2
#property indicator_width3  2
#property indicator_width4  1
#property indicator_width5  1
#property indicator_width6  2
#property indicator_width7  2

extern string TimeFrame  = "Current time frame";
extern int    Smoothing   = 5;
extern int    Window      = 300;
extern int    Price       = PRICE_CLOSE;
extern bool   ShiftValues = false;

double mmUp[];
double mmDn[];
double mmUph[];
double mmDnh[];
double mmUpa[];
double mmDna[];
double mmYeh[];
double prices[];
int shifted=0;

string indicatorFileName;
bool   calculateValue;
int    timeFrame;

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

double S[];
double work[][11];
#define sQiip1 0
#define sQiim1 1
#define sPiip1 2
#define sPiim1 3
#define dQiip1 4
#define dQiim1 5
#define dPiip1 6
#define dPiim1 7
#define sui    8
#define dui    9
#define trend 10

int start()
{
      // код доступен только после оплаты
   }
   int scount = Window+2*Smoothing;
   int i,k,limit,counted_bars=IndicatorCounted();

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = MathMin(Bars-counted_bars,Bars-1);

   for (i=0; i<7; i++) SetIndexDrawBegin(i,Bars-(Window-shifted)*timeFrame/Period());
   if (calculateValue || timeFrame == Period())
   {
      if (ArrayRange(work,0) != Window) ArrayResize(work,Window);
      if (ArrayRange(S,0)    != scount) ArrayResize(S   ,scount);
         for(i=limit; i>=0; i--) prices[i] = iMA(NULL,0,1,0,MODE_SMA,Price,i);
         ArrayCopy(S,prices,0,0,scount);
         for (i=0; i<Window; i++)
         {
            work[i][sQiip1]=0;
            work[i][sQiim1]=0;
            work[i][dQiip1]=0;
            work[i][dQiim1]=0;
            for(k=0; k<Smoothing; k++)
            {
               work[i][sQiip1] += MathExp( 2.0*(S[Smoothing-1+i+k]-S[i])/(S[Smoothing-1+i+k]+S[i]));
               work[i][sQiim1] += MathExp( 2.0*(S[Smoothing-1+i-k]-S[i])/(S[Smoothing-1+i-k]+S[i]));
               work[i][dQiip1] += MathExp(-2.0*(S[Smoothing-1+i+k]-S[i])/(S[Smoothing-1+i+k]+S[i]));
               work[i][dQiim1] += MathExp(-2.0*(S[Smoothing-1+i-k]-S[i])/(S[Smoothing-1+i-k]+S[i]));
            }
         }
         for(i=0; i<Window; i++)
         {
            work[i][sPiip1] = work[i][sQiip1] / (work[i][sQiip1] + work[i][sQiim1]);
            work[i][sPiim1] = work[i][sQiim1] / (work[i][sQiip1] + work[i][sQiim1]);
            work[i][dPiip1] = work[i][dQiip1] / (work[i][dQiip1] + work[i][dQiim1]);
            work[i][dPiim1] = work[i][dQiim1] / (work[i][dQiip1] + work[i][dQiim1]);
         }

      double uSum = 1;
      double dSum = 1;
         work[0][sui] = 1;
         work[0][dui] = 1;

         for(i=1; i<Window; i++)
         {
            work[i][sui] = (work[i][sPiim1]/work[i][sPiip1])*work[i-1][sui];
            work[i]

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

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

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

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

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

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

Стоимость полного кода
609,70₽ ≈ $7.45