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

Extreme TMA System

! mth_fasttmaline.mq4

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

#__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 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой пользовательский индикатор для MetaTrader 4, написанный на языке MQL4. Индикатор отображает в окне графика центральную линию, рассчитанную по алгоритму треугольной скользящей средней, а также верхнюю и нижнюю границы, построенные с использованием волатильности. Центральная линия может менять цвет в зависимости от направления и силы наклона, что позволяет визуально оценивать преобладающий тренд.

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

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

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

НастройкаОписание
TimeFrame Таймфрейм, на котором рассчитывается индикатор. Может быть указан как строка (например, "Current", "M15", "H1") или числом минут.
TMAPeriod Период треугольной скользящей средней, используемый для расчёта центральной линии.
Price Тип цены, используемый для расчёта индикатора (например, Close, Open, High, Low, Median, Typical, Weighted).
ATRMultiplier Множитель для значения ATR, определяющий ширину верхней и нижней границ относительно центральной линии.
ATRPeriod Период усреднения для расчёта ATR, используемого при построении границ.
TrendThreshold Пороговое значение наклона центральной линии для определения направления тренда и смены цвета.
ShowCenterLine Включает отображение центральной линии индикатора.
alertsOn Включает систему оповещений о пробое ценой верхней или нижней границы.
alertsMessage Разрешает вывод всплывающих сообщений при пробое границ.
alertsSound Разрешает звуковое сопровождение оповещений при пробое границ.
alertsEmail Разрешает отправку оповещений по электронной почте при пробое границ.
MoveEndpointEveryTick Разрешает обновление конечной точки индикатора на каждом тике без полного пересчёта.
MaxBarsBack Максимальное количество баров, обрабатываемых индикатором при полном пересчёте.
Получить полный код

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

#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   alertsOn        = false;
extern bool   alertsMessage   = false;
extern bool   alertsSound     = false;
extern bool   alertsEmail     = false;
extern bool   MoveEndpointEveryTick = false;
extern int    MaxBarsBack     = 5000;

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() { 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 inx )
  {
  double ttma;
  if(inx >= TMAPeriod)
    ttma = CalcPureTma(inx);
  else
    ttma = CalcTmaEstimate(inx);
  return( ttma );
  }

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, TimeFrameValue, i+k) + iLow(NULL, TimeFrameValue, i+k) + iClose(NULL, TimeFrameValue, i+k))/3 + 
                                                (iHigh(NULL, TimeFrameValue, i-k) + iLow(NULL, TimeFrameValue, i-k) + iClose(NULL, TimeFrameValue, i-k))/3
                                                );break;

               case     6:sum = sum + (j - k) * ( 
                                                (iHigh(NULL, TimeFrameValue, i+k) + iLow(NULL, TimeFrameValue, i+k) + iClose(NULL, TimeFrameValue, i+k) + iClose

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

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

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

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

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

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

Стоимость полного кода
1 010,20₽ ≈ $12.35