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

parabolic_alert.mq5

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

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

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

О программе

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

При обнаружении разворота направления тренда индикатор воспроизводит звуковой сигнал alert.wav и выводит текстовое уведомление с текущим временем графика. Для направления «продажа» отображается Sell Alert, для направления «покупка» — Buy Alert. Таким образом, продукт выполняет функцию визуального и звукового оповещения о смене тренда.

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

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

НастройкаОписание
Step Step — Величина шага приращения параметра ускорения индикатора.
Maximum Maximum — Верхний предел значения параметра ускорения индикатора.
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 DarkOrange

extern double    Step=0.05;
extern double    Maximum=0.3;

double SarBuffer[];

int    save_lastreverse;
bool   save_dirlong, save_dirshort;
double save_start;
double save_last_high;
double save_last_low;
double save_ep;
double save_sar;

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

void SaveLastReverse(int last,int dir_l,int dir_s,double start,double low,double high,double ep,double sar)
  {
   save_lastreverse=last;
   save_dirlong=dir_l;
   save_dirshort=dir_s;
   save_start=start;
   save_last_low=low;
   save_last_high=high;
   save_ep=ep;
   save_sar=sar;
  }

int start()
  {
      // код доступен только после оплаты
   }
   static bool first=true;
   bool   dirlong, dirshort;
   double start,last_high,last_low;
   double ep,sar,price_low,price_high,price;
   int    i,counted_bars=IndicatorCounted();
   string TradeTime;

   if(Bars<3) return(0);

   i=Bars-2;
   if(counted_bars==0 || first)
     {
      first=false;
      dirlong=true;
      dirshort=false;
      start=Step;
      last_high=-10000000.0;
      last_low=10000000.0;
      while(i>0)
        {
         save_lastreverse=i;
         price_low=Low[i];
         if(last_low>price_low)   last_low=price_low;
         price_high=High[i];
         if(last_high<price_high) last_high=price_high;
         if(price_high>High[i+1] && price_low>Low[i+1]) break;
         if(price_high<High[i+1] && price_low<Low[i+1]) { dirlong=false; break; }
         i--;
        }

      int k=i;
      while(k<Bars)
        {
         SarBuffer[k]=0.0;
         k++;
        }

      if(dirlong)        { SarBuffer[i]=Low[i+1]; ep=High[i]; }
      if(dirshort)       { SarBuffer[i]=High[i+1]; ep=Low[i]; }
      i--;
     }
    else
     {
      i=save_lastreverse+1;
      start=save_start;
      dirlong=save_dirlong;
      dirshort=save_dirshort;
      last_high=save_last_high;
      last_low=save_last_low;
      ep=save_ep;
      sar=save_sar;
     }

   while(i>=0)
   {
      price_low=Low[i];
      price_high=High[i];

      if(dirlong==true && price_low<SarBuffer[i+1])
        {

         SaveLastReverse(i,true,false,start,price_low,last_high,ep,sar);
         start=Step; dirlong=false; dirshort=true;

         if (i==0)
          {
           PlaySound("alert.wav");
           TradeTime = TimeToStr(CurTime(),TIME_SECONDS);
           Comment("\nSell Alert","\nChart Time= ", TradeTime);
          }
         ep=price_low;  last_low=price_low;
         SarBuffer[i]=last_high;
         i--;
         continue;
        } 

      if(dirshort==true && price_high>SarBuffer[i+1])
        {

         SaveLastReverse(i,false,true,start,last_low,price_high,ep,sar);
         start=Step; dirlong=true; dirshort=false;

         if (i==0)
          {
           PlaySound("alert.wav");
           TradeTime = TimeToStr(CurTi

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

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

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

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

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

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

Стоимость полного кода
403,30₽ ≈ $4.93