fourier_extrapolator.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.