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

Laguerre PPO

laguerre ppo 1.06 1090 fix.mq5
Вы автор или правообладатель?

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

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

О программе

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

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

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

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

НастройкаОписание
Time frame (TimeFrame) Таймфрейм для расчёта индикатора
Look back period (LookBack) Период отбора для расчёта процентильного ранга
Fast Laguerre gamma value (GammaFast) Быстрое гамма-значение фильтра Лагера
Slow Laguerre gamma value (GammaSlow) Медленное гамма-значение фильтра Лагера
Price (Price) Тип цены для расчёта
Lower percent to use (Percent1) Нижний процентный порог для определения уровней
Higher percent to use (Percent2) Верхний процентный порог для определения уровней
Turn alerts on? (alertsOn) Включение или отключение системы уведомлений
Alerts on current (still opened) bar? (alertsOnCurrent) Отслеживание сигнала на текущей (открытой) свече
Alerts should show pop-up message? (alertsMessage) Отображение всплывающего сообщения при сигнале
Alerts should play alert sound? (alertsSound) Воспроизведение звукового сигнала при срабатывании
Alerts should send push notification? (alertsPushNotif) Отправка push-уведомлений при срабатывании сигнала
Alerts should send email? (alertsEmail) Отправка email-уведомлений при срабатывании сигнала
Bars width for display (barsWidth) Ширина столбцов гистограммы для отображения
Interpolate data in multi time frame mode? (Interpolate) Интерполяция данных в межтаймфреймовом режиме
Получить полный код

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

#property description "Laguerre PPO"
#property description "made by mladen"
#property description "for more visit www.forex-station.com"

#property indicator_separate_window
#property indicator_buffers 8
#property indicator_color1  clrSilver
#property indicator_color2  clrSilver
#property indicator_color3  clrGreen
#property indicator_color4  clrLimeGreen
#property indicator_color5  clrOrangeRed
#property indicator_color6  clrSandyBrown
#property indicator_color7  clrDarkGray
#property indicator_color8  clrDarkGray
#property strict

extern ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT; // Time frame
extern int    LookBack        = 200;          // Look back period
extern double GammaFast       = 0.4;          // Fast Laguerre gamma value
extern double GammaSlow       = 0.8;          // Slow Laguerre gamma value 
extern ENUM_APPLIED_PRICE Price = PRICE_MEDIAN; // Price
extern double Percent1        = 80;           // Lower percent to use
extern double Percent2        = 90;           // Higher percent to use
extern bool   alertsOn        = false;        // Turn alerts on?
extern bool   alertsOnCurrent = true;         // Alerts on current (still opened) bar?
extern bool   alertsMessage   = true;         // Alerts should show pop-up message?
extern bool   alertsSound     = false;        // Alerts should play alert sound?
extern bool   alertsPushNotif = false;        // Alerts should send push notification?
extern bool   alertsEmail     = false;        // Alerts should send email?
extern int    barsWidth       = 2;            // Bars width for display
extern bool   Interpolate     = true;         // Interpolate data in multi time frame mode?

double pctRankT[],pctRankB[],histnu[],histnd[],histd[],histdd[],histu[],histuu[],ppoT[],ppoB[],stateu[],stated[];
string indicatorFileName;
bool   returnBars;

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

int start()
{
      // код доступен только после оплаты
   }
   if (Bars<=2) return(0);
   int 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) { histnu[0] = limit+1; return(0); }
         if (TimeFrame != _Period)
         {
            limit = (int)MathMax(limit,MathMin(Bars-1,iCustom(NULL,TimeFrame,indicatorFileName,-99,0,0)*TimeFrame/_Period));
            for (int i=limit; i>=0; i--)   
            {
               int y = iBarShift(NULL,TimeFrame,Time[i]);
               pctRankT[i] = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,LookBack,GammaFast,GammaSlow,Price,Percent1,Percent2,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsPushNotif,alertsEmail, 6,y);
               pctRankB[i] = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,LookBack,GammaFast,GammaSlow,Price,Percent1,Percent2,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsPushNotif,alertsEmail, 7,y);
               stateu[i]   = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,LookBack,GammaFast,GammaSlow,Price,Percent1,Percent2,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsPushNotif,alertsEmail,10,y);
               stated[i]   = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,LookBack,GammaFast,GammaSlow,Price,Percent1,Percent2,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsPushNotif,alertsEmail,11,y);
               histnd[i]   = EMPTY_VALUE;
               histnu[i]   = EMPTY_VALUE;
               histu[i]    = EMPTY_VALUE;
               histd[i]    = EMPTY_VALUE;
               histuu[i]   = EMPTY_VALUE;
               histdd[i]   = EMPTY_VALUE;
               if (!Interpolate || (i>0 && y==iBarShift(NULL,TimeFrame,Time[i-1]))) continue;

               int n,j; datetime time = iTime(NULL,TimeFrame,y);
                  for(n = 1; (i+n)<Bars && Time[i+n] >= time; n++) continue;	
                  for(j = 1; j<n && (i+n)<Bars && (i+j)<Bars; j++)
                  {
                     pctRankT[i+j] = pctRankT[i] + (pctRankT[i+n] - pctRankT[i])*j/n;
                     pctRankB[i+j] = pctRankB[i] + (pctRankB[i+n] - pctRankB[i])*j/n;
                  }
            }
            for (int i=limit; i>=0; i--)   
            {
                  if (stateu[i]== 1) {  histd[i]  = pctRankT[i]; histnd[i] = pctRankB[i]; }
                  if (stateu[i]== 2) {  histdd[i] = pctRankT[i]; histnd[i] = pctRankB[i]; }
                  if (stated[i]==-1) {  histu[i]  = pctRankB[i]; histnd[i] = pctRankT[i]; }
     

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

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

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

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

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

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

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