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

lukas1 arrows & curves

lukas1 arrows & curves mtf.mq5
Вы автор или правообладатель?

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

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

О программе

Данный исходный файл представляет собой пользовательский индикатор для MetaTrader 4 (несмотря на расширение .mq5, код написан на языке MQL4: используются устаревшие функции init(), start(), IndicatorCounted(), SetIndexBuffer(), iCustom(), GlobalVariableSet() и т.д.). Индикатор отображает на графике стрелки, отмечающие смену направления движения цены, а также две дополнительные линии (High и Low), рассчитываемые по заданным параметрам. Все вычисления выполняются на выбранном таймфрейме, который задаётся строковым параметром TimeFrame. При необходимости индикатор может работать на старшем таймфрейме, получая данные через iCustom с текущего графика.

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

Индикатор рассчитывает границы на основе максимума и минимума за заданное число баров (параметр SSP) и процентного отступа (параметр SkyCh). При пересечении ценой этих границ формируются сигналы, которые отображаются стрелками. Также записываются глобальные переменные goBUY и goSELL, которые могут использоваться другими программами. Все параметры вынесены в extern-переменные и доступны для изменения при подключении индикатора к графику.

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

НастройкаОписание
TimeFrame Таймфрейм — Таймфрейм, на котором рассчитывается индикатор. Может быть задан строкой, например "H1", или специальными значениями "calculateValue" и "returnBars".
?????? ????????? ????????? ?????????? (SSP) Период расчёта — Количество баров для расчёта максимума и минимума, используемых при построении границ.
???????????????? ? ?????? ?????? (SkyCh) Процент отступа — Процентный отступ от максимума и минимума для определения границ сигналов.
alertsOn Включить уведомления — Включает или отключает все уведомления о сигналах индикатора.
alertsOnCurrent Уведомлять на текущем баре — Если включено, сигнал проверяется на текущем (нулевом) баре; иначе — на предыдущем (первом) баре.
alertsMessage Всплывающие сообщения — Включает вывод всплывающего сообщения при появлении сигнала.
alertsSound Звуковое оповещение — Включает звуковое оповещение при появлении сигнала.
alertsEmail Уведомления по email — Включает отправку уведомлений о сигналах на электронную почту.
Interpolate Интерполяция — Включает или отключает интерполяцию значений индикатора между барами старшего таймфрейма.
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Green
#property indicator_color4 Green

extern string TimeFrame       = "Current time frame";
extern int    SSP             = 6;     //?????? ????????? ????????? ??????????
extern int    SkyCh           = 13;    //???????????????? ? ?????? ?????? 
extern bool   alertsOn        = false;
extern bool   alertsOnCurrent = true;
extern bool   alertsMessage   = true;
extern bool   alertsSound     = false;
extern bool   alertsEmail     = false;
extern bool   Interpolate     = true;

double val1[];      // ????? ??? ???
double val2[];      // ????? ??? ????
double Sky_BufferH[];
double Sky_BufferL[];
int    timeFrame;
bool   returnBars;
bool   calculateValue;
string indicatorFileName;

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

double work[][1];
#define _uptrend 0

int start()
{
      // код доступен только после оплаты
   }   
   int i,r,counted_bars = IndicatorCounted();
      if(counted_bars < 0) return(-1);
      if(counted_bars > 0) counted_bars--;
             int limit=MathMin(Bars-counted_bars,Bars-1);
             if (returnBars) { val1[0] = limit; return(0); }

   if (calculateValue || timeFrame == Period())
   {
      GlobalVariableSet("goSELL", 0); // ?????? ????????????? ? ???????? goSELL=0
      GlobalVariableSet("goBUY", 0);  // ?????? ????????????? ? ???????? goBUY =0
      if (ArrayRange(work,0)!=Bars) ArrayResize(work,Bars);

      for(i=limit, r=Bars-i-1; i>=0; i--,r++)
      { 
         double high = High[ArrayMaximum(High,SSP,i)]; 
         double low  = Low[ ArrayMinimum(Low ,SSP,i)]; 
         double smax = high - (high - low)*SkyCh / 100;
         double smin = low  + (high - low)*SkyCh / 100;
            val1[i] = EMPTY_VALUE;  
            val2[i] = EMPTY_VALUE;
            work[r][_uptrend] = work[r-1][_uptrend];
               if(Close[i] < smin && i!=0 ) work[r][_uptrend] = false;
	            if(Close[i] > smax && i!=0 ) work[r][_uptrend] = true;
               if(work[r][_uptrend] != work[r-1][_uptrend] && work[r][_uptrend] == false)
               {
                  val2[i] = high; if(i == 0) GlobalVariableSet("goBUY",1);
               }
               if(work[r][_uptrend] != work[r-1][_uptrend] && work[r][_uptrend] == true)
               {
                 val1[i] = low; if(i == 0)  GlobalVariableSet("goSELL",1);
               }
         Sky_BufferH[i]=high - (high - low)*SkyCh / 100;
         Sky_BufferL[i]=low  + (high - low)*SkyCh / 100;
      }
      manageAlerts();
      return(0);
   }      

   limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
   for (i=limit; i>=0; i--)
  

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

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

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

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

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

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

Стоимость полного кода
502,20₽ ≈ $6.14