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

Extreme TMA System

!mth_fasttmaline_edit3.mq4

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

range breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих теговsmcj, fix.mq5MQL5 / MetaTrader 5 · 1 общих теговbabon slope .mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Индикатор для MetaTrader 4, рассчитывающий полосы на основе тригонометрического скользящего среднего (TMA). Отображает верхнюю и нижнюю границы полос, рассчитанных с использованием ATR, а также центральную линию, цвет которой меняется в зависимости от направления тренда. Поддерживает анализ на разных таймфреймах.

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

Поддерживает систему уведомлений: всплывающие сообщения, звуковые сигналы и email-оповещения при пробое цены верхней или нижней границы полос. Возможен выбор частоты обновления и глубины исторических данных для отрисовки.

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

НастройкаОписание
TimeFrame Таймфрейм для расчёта индикатора (например, Current, M15, H1, D1)
TMAPeriod Период тригонометрического скользящего среднего (TMA)
Price Тип цены для расчёта TMA (0 — Close, 1 — Open, 2 — High, 3 — Low и другие варианты)
ATRMultiplier Множитель ATR для расчёта ширины верхней и нижней полос
ATRPeriod Период индикатора ATR, используемого для расчёта ширины полос
TrendThreshold Порог наклона для определения направления тренда центральной линии (бычий, медвежий или нейтральный)
ShowCenterLine Переключатель отображения центральной линии, цвет которой определяется направлением тренда
nrpMode Переключатель режима замены расчёта TMA на встроенный LWMA-расчёт
alertsOn Главный переключатель системы уведомлений о пробое верхней или нижней полосы
alertsMessage Переключатель всплывающих текстовых уведомлений при пробое полосы
alertsSound Переключатель воспроизведения звукового сигнала при пробое полосы
alertsEmail Переключатель отправки email-уведомлений при пробое полосы
MoveEndpointEveryTick Переключатель: при активации конечная точка линий обновляется каждый тик без полного пересчёта
MaxBarsBack Максимальное количество баров назад, используемых для отрисовки индикатора
ShowTrendLine Переключатель отображения динамических трендовых линий на графике
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 bool   ShowTrendLine  = true;          // Show TrendLine
extern int    BarToTheRight  = 2;
extern bool   ShowPriceLabel = true;          // 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:
         sum = sum + (j - k) * (
                  (iHigh(NULL, TimeFra

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

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

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

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

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

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

Стоимость полного кода
1 335,60₽ ≈ $16.33