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

extreme_tma_line_indicator.mq5

Вы автор или правообладатель?

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

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

О программе

Extreme TMA Line indicator — это пользовательский индикатор для платформы MetaTrader 5, отображающий на графике линию треугольного скользящего среднего (TMA) вместе с каналом и цветовой индикацией тренда. Индикатор использует три буфера: основной TMA-график с цветовой разбивкой, а также верхняя и нижняя границы канала, рассчитанные на основе ATR.

Линия TMA рассчитывается как взвешенное среднее ценовых данных за заданный период. Ширина канала определяется умножением текущего значения ATR на заданный множитель, верхняя и нижняя границы откладываются соответственно выше и ниже TMA-линии.

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

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

НастройкаОписание
InpPeriodTMA Период треугольного скользящего среднего (TMA), задающий количество баров, используемых при расчёте основной линии индикатора.
InpPeriodATR Период расчёта индикатора ATR (Average True Range), используемого для определения волатильности и ширины канала.
InpMultiplierATR Множитель ATR, определяющий ширину канала вокруг линии TMA. Умножает текущее значение ATR для расчёта верхней и нижней границ канала.
InpThreshold Пороговое значение наклона для определения направления тренда. Нормализованный наклон TMA-линии сравнивается с этим порогом для выбора цвета отображения.
InpRedraw Переключатель перерисовки. При включении индикатор учитывает текущую незавершённую свечу при расчёте TMA-линии, при выключении — только завершённые свечи.
Получить полный код

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

#property version   "1.00"
#property description "Extreme TMA Line indicator"
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots   3

#property indicator_label1  "TMA"
#property indicator_type1   DRAW_COLOR_LINE
#property indicator_color1  clrGreen,clrRed,clrDarkGray
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2

#property indicator_label2  "Top"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrDarkGray
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1

#property indicator_label3  "Bottom"
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrDarkGray
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1

enum ENUM_INPUT_YES_NO
  {
   INPUT_YES   =  1, // Yes
   INPUT_NO    =  0  // No
  };

input uint              InpPeriodTMA      =  56;         // TMA period
input uint              InpPeriodATR      =  100;        // ATR period
input double            InpMultiplierATR  =  2.0;        // ATR multiplier
input double            InpThreshold      =  0.5;        // Trend threshold
input ENUM_INPUT_YES_NO InpRedraw         =  INPUT_YES;  // Redraw

double         BufferTMA[];
double         BufferColors[];
double         BufferTop[];
double         BufferBottom[];
double         BufferATR[];

double         multiplier;
double         threshold;
int            period_tma;
int            period_atr;
int            period_max;
int            handle_atr;

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

   period_tma=int(InpPeriodTMA<1 ? 1 : InpPeriodTMA);
   period_atr=int(InpPeriodATR<1 ? 1 : InpPeriodATR);
   period_max=fmax(period_atr,period_tma);
   multiplier=InpMultiplierATR;
   threshold=InpThreshold;

   SetIndexBuffer(0,BufferTMA,INDICATOR_DATA);
   SetIndexBuffer(1,BufferColors,INDICATOR_COLOR_INDEX);
   SetIndexBuffer(2,BufferTop,INDICATOR_DATA);
   SetIndexBuffer(3,BufferBottom,INDICATOR_DATA);
   SetIndexBuffer(4,BufferATR,INDICATOR_CALCULATIONS);

   IndicatorSetString(INDICATOR_SHORTNAME,"Extreme TMA Line ("+(string)period_tma+","+(string)period_atr+","+DoubleToString(multiplier,1)+","+DoubleToString(threshold,2)+")");
   IndicatorSetInteger(INDICATOR_DIGITS,Digits());

   ArraySetAsSeries(BufferTMA,true);
   ArraySetAsSeries(BufferColors,true);
   ArraySetAsSeries(BufferTop,true);
   ArraySetAsSeries(BufferBottom,true);
   ArraySetAsSeries(BufferATR,true);

   ResetLastE

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

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

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

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

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

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

Стоимость полного кода
357,20₽ ≈ $4.37