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

tma+cg mladen nrp teamtrader2.mq5

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

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

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

О программе

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

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

Индикатор имеет вспомогательные режимы для вычисления внутренних данных и возврата количества баров, используемые при рекурсивном вызове. Не перерисовывается при изменении истории.

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

НастройкаОписание
TimeFrame Таймфрейм — Таймфрейм, на котором выполняется расчёт индикатора
HalfLength Половина длины — Половина длины расчётного периода скользящей средней
Price Тип цены — Тип цены, используемой для расчёта индикатора
BandsDeviations Отклонение полос — Множитель отклонения полос от центральной линии индикатора
Interpolate Интерполяция — Включает или отключает интерполяцию значений между таймфреймами
alertsOn Уведомления включены — Включает или отключает систему уведомлений
alertsOnCurrent Уведомления для текущего бара — Определяет, проверять ли условия на текущем баре или на предыдущем
alertsOnHighLow Уведомления по высокому/низкому — При включении уведомления срабатывают по пробою верхней и нижней границ высоким и низким ценами, при выключении — по ценам закрытия
SetArrows Набор стрелок — Имя набора стрелок для отображения на графике
CodeUp Код стрелки вверх — Код символа для отображения стрелки вверх
CodeDn Код стрелки вниз — Код символа для отображения стрелки вниз
Size Размер стрелок — Размер отображаемых стрелок на графике
Gap Отступ стрелок — Параметр отступа стрелок от ценового бара
Получить полный код

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

#property description "edited by eevviill"
#property description "no repaint"

#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1  clrNONE
#property indicator_color2  clrNONE
#property indicator_color3  clrNONE
#property indicator_color4  Blue
#property indicator_color5  Red
#property indicator_style1  STYLE_DOT
#property indicator_width1  1
#property indicator_width2  1
#property indicator_width3  1
#property indicator_width4  8
#property indicator_width5  8 

extern string TimeFrame       = "current time frame";
extern int    HalfLength      = 21;
extern ENUM_APPLIED_PRICE    Price           = PRICE_WEIGHTED;
extern double BandsDeviations = 2.1;
extern bool   Interpolate     = true;
extern bool   alertsOn        = false;
extern bool   alertsOnCurrent = false;
extern bool   alertsOnHighLow = false;
extern string SetArrows       = "Set_arrows";
extern int    CodeUp     = 119;
extern int    CodeDn     = 119;
extern int    Size       = 6;
extern double Gap      = 1.5;
bool   alertsMessage   = false;
bool   alertsSound     = false;
bool   alertsEmail     = false;

double tmBuffer[];
double upBuffer[];
double dnBuffer[];
double wuBuffer[];
double wdBuffer[];
double upArrow[];
double dnArrow[];

string IndicatorFileName;
bool   calculatingTma = false;
bool   returningBars  = false;
int    timeFrame;

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

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

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
           limit=MathMin(Bars-1,Bars-counted_bars+HalfLength);

           if (returningBars)  { tmBuffer[0] = limit; return(0); }
           if (calculatingTma) { calculateTma(limit); return(0); }
           if (timeFrame > Period()) limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,IndicatorFileName,"returnBars",0,0)*timeFrame/Period()));

   if(limit<Bars-20) limit=1;
	for(i = limit; i >= 0; i--)
   {

      int      shift1 = iBarShift(NULL,timeFrame,Time[i]);
      datetime time1  = iTime    (NULL,timeFrame,shift1);

         tmBuffer[i] = iCustom(NULL,timeFrame,IndicatorFileName,"calculateTma",HalfLength,Price,BandsDeviations,0,shift1);
         upBuffer[i] = iCustom(NULL,timeFrame,IndicatorFileName,"calculateTma",HalfLength,Price,BandsDeviations,1,shift1);
         dnBuffer[i] = iCustom(NULL,timeFrame,IndicatorFileName,"calculateTma",HalfLength,Price,BandsDeviations,2,shift1);

         upArrow[i] = EMPTY_VALUE;
         dnArrow[i] = EMPTY_VALUE;            
            if (High[i+1]>upBuffer[i+1] && Close[i+1]>Open[i+1] && Close[i]<Open[i]) upArrow[i] = High[i]+iATR(NULL,0,20,i)/Gap/2;
            if ( Low[i+1]<dnBuffer[i+1] && Close[i+1]<Open[i+1] && Close[i]>Open[i]) dnArrow[i] = Low[i]-iATR(NULL,0,20,i)/Gap/2;

         if (timeFrame <= Period() || shift1==iBarShift(NULL,timeFrame,Time[i-1])) continue;
         if (!Interpolate) continue;

         for(int n = 1; i+n < Bars && Time[i+n] >= time1; n++) continue;
         double factor = 1.0 / n;
         for(int k = 1; k < n; k++)
            {
               tmBuffer[i+k] = k*factor*tmBuffer[i+n] + (1.0-k*factor)*tmBuffer[i];
               upBuffer[i+k] = k*factor*upBuffer[i+n] + (1.0-k

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

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

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

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

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

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

Стоимость полного кода
588,50₽ ≈ $7.19