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

FractalsMD_v3.2 600+

fractalsmd_v3.2 600+.mq5
Вы автор или правообладатель?

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

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

О программе

FractalsMD_v3.2 600+ — это пользовательский индикатор для MetaTrader 5, рассчитывающий фрактальные паттерны на ценовых данных. Индикатор поддерживает многомерный анализ фракталов от 1 до 4 измерений, что позволяет выявлять фрактальные структуры разной степени сложности на графике цен.

Индикатор работает с различными типами ценовых данных, включая стандартные (Close, Open, High, Low) и производные (Median, Typical, Weighted Close), а также цены Хейкин Аши. Результаты расчёта отображаются на графике с помощью стрелочных маркеров в нескольких буферах.

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

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

НастройкаОписание
Upper Band Price (UpBandPrice) Верхняя цена полосы — Тип цены для расчёта верхней полосы фракталов. Поддерживает стандартные типы цен (Close, Open, High, Low и др.), а также цены Хейкин Аши (значения выше 6).
Lower Band Price (LoBandPrice) Нижняя цена полосы — Тип цены для расчёта нижней полосы фракталов. Поддерживает стандартные типы цен (Close, Open, High, Low и др.), а также цены Хейкин Аши (значения выше 6).
Fractal Dimension (max. 4) (Dimension) Размерность фрактала — Число измерений фрактального анализа (максимум 4). Определяет количество уровней вложенности расчёта фракталов: при значении 1 рассчитываются только одномерные фракталы, при 4 — до четырёх уровней вложенности.
Fractal Size in bars (ex. 1-3 bars,2-5 bars,3-7 bars) (FractalSize) Размер фрактала — Размер фрактала в барах. Задаёт полупериод окна для поиска фрактальных экстремумов. Общая длина расчётного окна составляет 2*FractalSize+1 бар.
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 clrSteelBlue
#property indicator_color2 clrOrangeRed
#property indicator_color3 clrRoyalBlue
#property indicator_color4 clrTomato
#property indicator_color5 clrCornflowerBlue
#property indicator_color6 clrLightSalmon
#property indicator_color7 clrPowderBlue
#property indicator_color8 clrOrange

#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 0
#property indicator_width4 0
#property indicator_width5 2
#property indicator_width6 2
#property indicator_width7 3
#property indicator_width8 3

enum ENUM_PRICE
{
   close,               // Close
   open,                // Open
   high,                // High
   low,                 // Low
   median,              // Median
   typical,             // Typical
   weightedClose,       // Weighted Close
   haClose,             // Heiken Ashi Close
   haOpen,              // Heiken Ashi Open
   haHigh,              // Heiken Ashi High   
   haLow,               // Heiken Ashi Low
   haMedian,            // Heiken Ashi Median
   haTypical,           // Heiken Ashi Typical
   haWeighted           // Heiken Ashi Weighted Close   
};

input ENUM_PRICE  UpBandPrice    =     2;    // Upper Band Price
input ENUM_PRICE  LoBandPrice    =     3;    // Lower Band Price 
input int         Dimension      =     1;    // Fractal Dimension (max. 4)
input int         FractalSize    =     1;    // Fractal Size in bars (ex. 1-3 bars,2-5 bars,3-7 bars)

double upFractal1[];
double loFractal1[];
double upFractal2[];
double loFractal2[];
double upFractal3[];
double loFractal3[];
double upFractal4[];
double loFractal4[];

double   hiArray[],loArray[];
datetime hiTime[], loTime[];			

int      Length;
string   IndicatorName, short_name;

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

int start()
{
      // код доступен только после оплаты
   }
   int      i, shift, limit, counted_bars = IndicatorCounted();
   datetime uptime, dntime;			

   if(counted_bars > 0) limit = Bars - counted_bars - 1;
   if(counted_bars < 0) return(0);
   if(counted_bars < 1)
   {
   limit = Bars - Length; 
      for(i=Bars - 1;i>=0;i--)	
      {
      upFractal1[i] = EMPTY_VALUE;
      loFractal1[i] = EMPTY_VALUE;
      upFractal2[i] = EMPTY_VALUE;
      loFractal2[i] = EMPTY_VALUE;
      upFractal3[i] = EMPTY_VALUE;
      loFractal3[i] = EMPTY_VALUE;
      upFractal4[i] = EMPTY_VALUE;
      loFractal4[i] = EMPTY_VALUE;
      }
   }

   for(shift=limit;shift>=0;shift--) 
   {	
      for(int j=0;j<Length;j++)
	   { 
         if(UpBandPrice <= 6) hiArray[j] = iMA(NULL,0,1,0,0,(int)UpBandPrice,shift+j);   
         else
         if(UpBandPrice > 6 && UpBandPrice <= 13) hiArray[j] = HeikenAshi(0,UpBandPrice-7,shift+j);

         if(LoBandPrice <= 6) loArray[j] = iMA(NULL,0,1,0,0,(int)LoBandPrice,shift+j);   
         else
         if(LoBandPrice > 6 && LoBandPrice <= 13) loArray[j] = HeikenAshi(1,LoBandPrice-7,shift+j);     

	   hiTime[j] = Time[shift+j];
	   loTime[j] = Time[shift+j];
	   }

	double f1 = Fractals(0,hiArray,hiTime,FractalSize,0,uptime);
	double f2 = Fractals(1,loArray,loTime,FractalSize,0,dntime);

	if(f1 > 0) upFractal1[shift+FractalSize] = f1; else upFractal1[shift+FractalSize] = EMPTY_VALUE;
	if(f2 > 0) loFractal1[shi

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

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

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

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

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

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

Стоимость полного кода
693₽ ≈ $8.47