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

Extreme TMA System

!mth_fasttmaline_edit2.mq4

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

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_edit.mq4MQL4 / MetaTrader 4 · 1 общих теговsmcj, fix.mq5MQL5 / MetaTrader 5 · 1 общих теговbabon slope .mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Индикатор “Extreme TMA System” реализует систему тройного скользящего среднего (TMA) на платформе MetaTrader 4. Он рассчитывает центральную линию TMA и строит вокруг неё верхнюю и нижнюю полосы на основе усреднённого истинного диапазона (ATR), отображая их на графике цен. Центральная линия окрашивается в зависимости от направления тренда: зелёный — бычий, красный — медвежий, жёлтый — боковик.

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

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

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

НастройкаОписание
TimeFrame Таймфрейм, на котором рассчитывается индикатор. Может быть задан вручную (например, M1, H4, D1) или установлен на текущий график.
TMAPeriod Период расчёта тройного скользящего среднего (TMA), определяющий сглаживание центральной линии.
Price Тип цены, используемой при расчёте TMA (0 — Close, 1 — Open, 2 — High, 3 — Low, 4 — (H+L)/2 и другие варианты).
ATRMultiplier Множитель усреднённого истинного диапазона (ATR), определяющий ширину верхней и нижней полос вокруг линии TMA.
ATRPeriod Период расчёта усреднённого истинного диапазона (ATR), используемого для построения полос.
TrendThreshold Пороговое значение наклона для классификации направления тренда центральной линии TMA.
ShowCenterLine Переключатель отображения центральной линии TMA, окрашенной по направлению тренда.
nrpMode Переключатель режима расчёта TMA. При активации для расчёта используется встроенная функция сглаживания LWMA вместо пользовательского алгоритма.
alertsOn Главный переключатель системы оповещений. При неактивном состоянии все уведомления отключены.
alertsMessage Переключатель отправки всплывающих сообщений при пробое ценой верхней или нижней полосы.
alertsSound Переключатель воспроизведения звукового сигнала при пробое ценой верхней или нижней полосы.
alertsEmail Переключатель отправки email-оповещений при пробое ценой верхней или нижней полосы.
MoveEndpointEveryTick Переключатель: при активации конечная точка линии TMA обновляется при каждом тике без полного пересчёта.
MaxBarsBack Максимальное количество баров назад, используемых при расчёте индикатора.
AddPips Смещение в пунктах для трендовых линий и ценовых меток относительно верхней и нижней границ полос.
ShowTrendLine Переключатель отображения динамических трендовых линий на верхней и нижней границах полос.
lineStyle Стиль отображения трендовых линий (например, сплошная, пунктир и т. д.).
BarToTheRight Количество баров вправо, на которые продлеваются трендовые линии и ценовые метки.
ShowPriceLabel Переключатель отображения ценовых меток на верхней и нижней границах полос.
cUpperCol Цвет верхней трендовой линии и ценовой метки.
cLowerCol Цвет нижней трендовой линии и ценовой метки.
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers    6
#property indicator_color1     CLR_NONE
#property indicator_color2     HotPink
#property indicator_color3     SpringGreen
#property indicator_color4     Lime
#property indicator_color5     Red
#property indicator_color6     Gold
#property indicator_style2     STYLE_DOT
#property indicator_style3     STYLE_DOT
#property  indicator_width1 1
#property  indicator_width2 1
#property  indicator_width3 1
#property  indicator_width4 3
#property  indicator_width5 3
#property  indicator_width6 3

#define PIPSTOFORCERECALC 10

extern string TimeFrame       = "Current";
extern int    TMAPeriod      = 17;
extern int    Price           = PRICE_CLOSE;
extern double ATRMultiplier   = 1.7;
extern int    ATRPeriod       = 100;
extern double TrendThreshold = 0.25;
extern bool   ShowCenterLine = true;
extern bool   nrpMode        = false;

extern bool   alertsOn        = false;
extern bool   alertsMessage   = false;
extern bool   alertsSound     = false;
extern bool   alertsEmail     = false;
extern bool   MoveEndpointEveryTick = false;
extern int    MaxBarsBack     = 1000;

extern double AddPips   = 3.0;
extern bool   ShowTrendLine  = true;          // Show TrendLine
extern int    lineStyle  = STYLE_SOLID;
extern int    BarToTheRight  = 5;
extern bool   ShowPriceLabel = false;          // Show Price Label
extern color  cUpperCol = clrBlue;
extern color  cLowerCol = clrPink;
string sUpperTL = "upperTL";
string sLowerTL = "lowerTL";
string sUpperLabel = "upperLabel";
string sLowerLabel = "lowerLabel";

double tma[];
double upperBand[];
double lowerBand[];
double bull[];
double bear[];
double neutral[];

int    TimeFrameValue,
       FirstAvailableBar;
bool AlertHappened;
datetime AlertTime;
double TICK;
bool AdditionalDigit;
double  SumTMAPeriod,
        TickScaleFactor,
        Threshold,
        PriorTick,
        FullSumW;

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

int deinit()
{
   ObjectsDeleteAll();
   return(0);
}

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

void DrawCenterLine(int shift, double slope)
{

   bull[shift] = EMPTY_VALUE;
   bear[shift] = EMPTY_VALUE;
   neutral[shift] = EMPTY_VALUE;
   if (ShowCenterLine) {
      if(slope > TrendThreshold) {
         bull[shift] = tma[shift];
      }
      else if(slope < -1 * TrendThreshold) {
         bear[shift] = tma[shift];
      }
      else {
         neutral[shift] = tma[shift];
      }
   }
}

double calcTma( int intHalfLength, int intShift )
{
   double dblSum, dblSumW, dblRange;
   int inx, jnx, knx;

   dblSumW = intHalfLength + 1;
   dblSum = dblSumW * Close[intShift];
   jnx = intHalfLength;

   for ( inx = 1, jnx = intHalfLength; inx <= intHalfLength; inx++, jnx-- ) {
      dblSumW += jnx;
      dblSum += ( jnx * Close[intShift+inx] );

   }
   return( dblSum / dblSumW );
}

double calcTmaMtf( int intTF, int intHalfLength, int intUpperTfShift, double dblClose )
{
   double dblSum, dblSumW, dblRange;
   int inx, jnx, knx;

   dblSumW = intHalfLength + 1;
   dblSum = dblSumW * dblClose;
   jnx = intHalfLength;

   for ( inx = 1, jnx = intHalfLength; inx <= intHalfLength; inx++, jnx-- ) {
      dblSumW += jnx;
      dblSum += ( jnx * iClose( Symbol(), intTF, intUpperTfShift+inx ) );
   }

   return( dblSum / dblSumW );
}

double CalcTma( int inx )
{
   double tma;
   if(inx >= TMAPeriod)
      if (nrpMode) tma = iMA(NULL, 0, TMAPeriod, 0, MODE_LWMA, Price, inx); // tma = calcTma( TMAPeriod, inx );
      else       tma = CalcPureTma(inx);
   else if (nrpMode) tma = iMA(NULL, TimeFrame, TMAPeriod, 0, MODE_LWMA, Price, inx); // calcTmaMtf( TimeFrame, TMAPeriod, TMAPeriod, inx );
   else       tma = CalcTmaEstimate(inx);
   return( tma );
}

double CalcPureTma( int i )
{
   int j = TMAPeriod + 1;
   int k;
   double sum=0;
   switch (Price) {
   case     0:
      sum=j * iClose(NULL, TimeFrameValue, i);
      break;
   case     1:
      sum=j * iOpen(NULL, TimeFrameValue, i);
      break;
   case     2:
      sum=j * iHigh(NULL, TimeFrameValue, i);
      break;
   case     3:
      sum=j * iLow(NULL, TimeFrameValue, i);
      break;
   case     4:
      sum=j * (iHigh(NULL, TimeFrameValue, i)+iLow(NULL, TimeFrameValue, i))/2;
      break;
   case     5:
      sum=j * (iHigh(NULL, TimeFrameValue, i)+iLow(NULL, TimeFrameValue, i)+iClose(NULL, TimeFrameValue, i))/3;
      break;
   case     6:
      sum=j * (iHigh(NULL, TimeFrameValue, i)+iLow(NULL, TimeFrameValue, i)+iClose(NULL, TimeFrameValue, i)+iClose(NULL, TimeFrameValue, i))/4;
      break;
   default   :
      sum=j * iClose(NULL, TimeFrameValue, i);
      break;
   }

   for    (k = 1; k <= TMAPeriod; k++) {
      switch(Price) {
      case     0:
         sum = sum + (j - k) * (iClose(NULL, TimeFrameValue, i+k) + iClose(NULL, TimeFrameValue, i-k));
         break;
      case     1:
         sum = sum + (j - k) * (iOpen(NULL, TimeFrameValue, i+k) + iOpen(NULL, TimeFrameValue, i-k));
         break;
      case     2:
         sum = sum + (j - k) * (iHigh(NULL, TimeFrameValue, i+k) + iHigh(NULL, TimeFrameValue, i-k));
         break;
      case     3:
         sum = sum + (j - k) * (iLow(NULL, TimeFrameValue, i+k) + iLow(NULL, TimeFrameValue, i-k));
         break;

      case     4:
         sum = sum + (j - k) * (
                  (iHigh(NULL, TimeFrameValue, i+k) + iLow(NULL, TimeFrameValue, i+k))/2 +
                  (iHigh(NULL, TimeFrameValue, i-k) + iLow(NULL, TimeFrameValue, i-k))/2
               );
         break;

      case     5:
 

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

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

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

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

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

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

Стоимость полного кода
1 345,10₽ ≈ $16.44