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

fourier_extrapolator.mq5

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

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

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

О программе

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

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

Дополнительно индикатор способен отображать линию оценки прибыли, которая отслеживает потенциальное направление движения цены относительно прогнозной линии. Все расчёты обновляются при каждом новом тике.

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

НастройкаОписание
T Период анализа — Количество баров, используемых для анализа и расчёта циклов. Если значение превышает доступное количество баров, автоматически корректируется.
shift Сдвиг — Сдвиг анализируемых данных относительно текущего бара. При значении 0 анализ ведётся от текущего бара.
showprofit Отображение прибыли — Включает или отключает отображение линии оценки прибыли и связанных графических объектов на графике.
alert Уведомления — Включает или отключает отправку всплывающих уведомлений при обнаружении начала нового цикла.
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 8

extern int T=1000;
extern int shift=0;
extern bool showprofit=true;
extern bool alert=false;

int Tmin=20;
int bars=0;
int flagdrow=1;
int Ti;
int TLR;

double aa,bb,w;
double pi=3.1415926535897932384626433832795;
double ak0,ak[],bk[],spectr[],prognoz[];
double profit[];

int deinit()
  {

  ObjectDelete("time_line");  
  ObjectDelete("price_line");

   return(0);
  }

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

if ((T+shift)>Bars) T=Bars-shift;
if (shift==0) showprofit=false;

if (bars==0)
{

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,3,DarkOrange);
SetIndexBuffer(0, prognoz);
SetIndexStyle(1,DRAW_NONE);
SetIndexBuffer(1, ak);
SetIndexStyle(2,DRAW_NONE);
SetIndexBuffer(2, bk);
SetIndexStyle(3,DRAW_NONE);
SetIndexBuffer(3, spectr);
SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,1,DodgerBlue);
SetIndexBuffer(4,profit);

int count=0;

double h3[],ak3[],bk3[],aabuf[],bbbuf[],ak0buf[]; int Tbuf[]; 

ArrayInitialize(prognoz,EMPTY_VALUE);

ArrayResize(h3,T/3);
ArrayResize(ak3,T/3);
ArrayResize(bk3,T/3);
ArrayResize(aabuf,T/3);
ArrayResize(bbbuf,T/3);
ArrayResize(ak0buf,T/3);
ArrayResize(Tbuf,T/3);

ArrayInitialize(h3,0.0);
ArrayInitialize(ak3,0.0);
ArrayInitialize(bk3,0.0);
ArrayInitialize(aabuf,0.0);
ArrayInitialize(bbbuf,0.0);
ArrayInitialize(ak0buf,0.0);
ArrayInitialize(Tbuf,0.0);

while (T>=Tmin)
{
   ArrayInitialize(ak,EMPTY_VALUE);
   ArrayInitialize(bk,EMPTY_VALUE);
   ArrayInitialize(spectr,0.0);
   SetIndexShift(0,TLR-shift);
   SetIndexShift(4,TLR-shift);

   Ti=T+1;
   af_LR(Ti,shift);
   w=2*pi/Ti;
   af_FT(Ti,shift);

   for (int i=2;i<6;i++) {spectr[i]=MathPow(ak[i]*ak[i]+bk[i]*bk[i],0.5)/2;}   

   if (ArrayMaximum(spectr)==3)
   {
      h3[count]=spectr[3];
      ak3[count]=ak[3];
      bk3[count]=bk[3];
      Tbuf[count]=T;
      if (flagdrow==1) {aabuf[count]=aa; bbbuf[count]=bb; ak0buf[count]=ak0;}
      count++;

   }

   if (ArrayMaximum(spectr)!=3 && count!=0)
   {

      count=0;
      int amax=ArrayMaximum(h3);
      w=2*pi/(Tbuf[amax]+1);

      if (flagdrow==0)
      {
         if (alert==true) Alert(Tbuf[amax]/3);

         for (i=Tbuf[amax]/3; i>=0; i--) 
         {
            prognoz[TLR-Tbuf[amax]/3+i]+=ak3[amax]*MathCos(3*i*w)+bk3[amax]*MathSin(3*i*w)
                                        -ak3[amax]*MathCos(Tbuf[amax]*w)-bk3[amax]*MathSin(Tbuf[amax]*w);

         }
         ArrayInitialize(h3,0.0);
         ArrayInitialize(ak3,0.0);

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

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

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

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

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

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

Стоимость полного кода
374₽ ≈ $4.57