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

tma+cg mladen nrp teamtrader2 buy sell.mq5

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

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

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

О программе

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

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

НастройкаОписание
TimeFrame Таймфрейм — Таймфрейм, на котором выполняется расчёт индикатора. Может принимать названия таймфреймов или специальные значения для расчётного режима.
HalfLength Половина периода TMA — Половина длины периода расчёта треугольного скользящего среднего. Минимальное значение равно 1.
Price Тип цены — Тип цены, используемый для расчётов индикатора (взвешенная, закрытие, открытие и т.д.).
BandsDeviations Отклонение канала — Множитель отклонений для расчёта верхней и нижней границ канала TMA. Увеличение значения расширяет канал, уменьшение — сужает его.
Interpolate Интерполяция — Включает или отключает интерполяцию значений индикатора между барами при работе на старшем таймфрейме.
SetArrows Настройки стрелок — Строковый параметр, передаваемый при вызове расчётного режима индикатора для задания настроек стрелок.
CodeUp Код стрелки вверх — Код символа стрелки, отображаемой при бычьем сигнале на графике.
CodeDn Код стрелки вниз — Код символа стрелки, отображаемой при медвежьем сигнале на графике.
Size Размер стрелок — Размер отображаемых стрелок на графике.
Gap Отступ стрелок — Делитель для значения ATR при определении уровня размещения стрелок на графике. Влияет на отступ стрелок от цены.
alertsOn Уведомления включены — Главный переключатель, включающий или отключающий всю систему уведомлений индикатора.
alertsOnCurrent_candle Уведомления по текущей свече — При включении уведомления отправляются по текущей незавершённой свече, при выключении — по завершённой.
alertsMessage Текстовые уведомления — Включает или отключает отображение текстовых уведомлений в окне терминала.
alertsSound Звуковые уведомления — Включает или отключает воспроизведение звукового сигнала при срабатывании условий.
alertsEmail Уведомления по email — Включает или отключает отправку уведомлений по электронной почте при срабатывании условий.
alert_way Направление уведомлений — Режим отправки уведомлений: при восходящих сигналах, нисходящих или при обоих одновременно.
Получить полный код

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

#property description "edited2 by eevviill"
#property description "no repaint,alert"

#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  2
#property indicator_width5  2 

enum alert_way_e
{
up,down,bouth
};

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 string SetArrows       = "Set_arrows";
extern int    CodeUp     = 119;
extern int    CodeDn     = 119;
extern int    Size       = 6;
extern double Gap      = 1.5;

extern string emp1 = "///////Alerts settings/////////";
extern bool   alertsOn        = true;
extern bool   alertsOnCurrent_candle = false;
extern bool   alertsMessage   = true;
extern bool   alertsSound     = false;
extern bool   alertsEmail     = false;
extern alert_way_e alert_way = bouth;

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 f

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

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

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

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

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

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

Стоимость полного кода
578,70₽ ≈ $7.07