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

ttm_scalper.mq5

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

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

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

О программе

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

В основе расчётов лежит функция поиска опорных точек (pivot), которая использует простые скользящие средние (SMA) для сравнения кандидатных ценовых уровней с соседними барами. Если кандидатная цена превосходит или уступает окружающим значениям в заданном диапазоне силы, точка фиксируется как разворот.

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

Переключение тренда происходит при обнаружении подтверждённого разворота: при восходящем тренде ищется swing high, при нисходящем — swing low. При срабатывании условия соответствующие буферы обновляются, и направление тренда меняется.

Получить полный код

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

#property indicator_chart_window
#property indicator_buffers  2
#property indicator_color1   Red
#property indicator_color2   Lime
#property indicator_width1   4
#property indicator_width2   4

double upBuffer[];
double dnBuffer[];
double trendBuffer[];

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

#define trendUp    1
#define trendDown -1

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

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

            for (k=3,i=limit;i<(Bars-1) && k>0;i++) if (dnBuffer[i]!=EMPTY_VALUE) k--;
                       limit = MathMax(limit,MathMin(Bars-1,i));

   int swingBar;
   for(i=limit; i>=0; i--)
   {
      upBuffer[i] = EMPTY_VALUE;
      dnBuffer[i] = EMPTY_VALUE;
         if (i==Bars-1)
               trendBuffer[i] = 1;
         else  trendBuffer[i] = trendBuffer[i+1];

         if (trendBuffer[i] == trendUp)
         {
            for (k=1; (i+k)<Bars; k++)
               if (upBuffer[i+k]!=EMPTY_VALUE && trendBuffer[i+k]==trendDown) break;

               swingBar = swingHighBar(i,1,PRICE_HIGH,2,k);
               if (swingBar>-1)
               if (isLess(Close[i],Low[swingBar-1]) && isLess(High[iHighest(NULL,0,MODE_HIGH,swingBar-i,i)],High[swingBar]))
               { 
                  upBuffer[swingBar] = High[swingBar];
                  dnBuffer[swingBar] = Low[swingBar];
                  trendBuffer[i]     = trendDown;
                  continue;
               }
         }

         if (trendBuffer[i] == trendDown)
         {
            for (k=1;(i+k)<Bars;k++)
               if (dnBuffer[i+k]!=EMPTY_VALUE && trendBuffer[i+k]==trendUp) break;

               swingBar = swingLowBar(i,1,PRICE_LOW,2,k);
               if (swingBar>-1)
               if (isGreater(Close[i],High[swingBar-1]) && isGreater(Low[iLowest(NULL,0,MODE_LOW,swingBar-i,i)],Low[swingBar]))
               {
                  dnBuffer[swingBar] = High[swingBar];
                  upBuffer[swingBar] = Low[swingBar];
                  trendBuffer[i]     = trendUp;
               }                  
         }

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

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

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

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

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

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

Стоимость полного кода
333,80₽ ≈ $4.08