Скачать MetaTrader 5

Смотри, как бесплатно скачать роботов

Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят

Понравился скрипт?
Оцени его работу в терминале MetaTrader 5

2009.02.24 19:17
Индикаторы

Fourier Extrapolation of Indicator - индикатор для MetaTrader 4

Просмотров:
9040
Рейтинг:
голосов: 1

Автор:

gpwr

По многочисленным просьбам, я изменил Extrapolator.mq4, оставив только первый метод экстраполяции (Фурье) и добавив возможность использования значений выбранного индикатора в качестве входных данных.

Приложенный индикатор использует спектральный анализ значений выбранного индикатора и экстраполирует эти значения в будущее, используя ряд Фурье.

Для примера выбран индикатор Williams Percent Range. Вектор in[] содержит значения выбранного индикатора. На графике внизу, чёрная линия в окне FEoI - значения индикатора, синяя линия - Фурье ряд для прошлых значений, красная линия - экстраполяция ряда Фурье в будущее. Предсказанные значения начинаются с LastBar-1 и включают самый последний известный бар в истории LastBar для непрерывной стыковки смоделированных прошлых (синяя линия) и будущих (красная линия) значений.

Входные данные:

  • extern int LastBar =200; //Номер последнего бара в истории. 0 означает самый последний на графике.
  • extern int PastBars =500; //Количество баров в истории, по которым производится спектральный анализ и подгонка Фурье ряда
  • extern int FutBars =200; //Количество баров в предсказании
  • extern int HarmNo =10; //Количество членов в Фурье ряде; HarmNo=0 выбирает максимальное количество гармонических составляющих HarmNo=PastBars
  • extern double FreqTOL =0.0001;//Погрешность вычислений частот по методу Куина-Фернандеса

Индикатор использует спектральный анализ значений выбранного индикатора и экстраполирует эти значения в будущее, используя ряд Фурье.

Строка, где изменяется выбранный индикатор, указана внизу красным цветом:

int start()
{
ArrayInitialize(in,EMPTY_VALUE);
ArrayInitialize(pv,EMPTY_VALUE);
ArrayInitialize(fv,EMPTY_VALUE);

//Choose indicator and find the average of its np past values
double x[]; //stores indicator values
ArrayResize(x,np);
double av=0.0;
for(int i=-lb;i<np;i++)
{
in[i+lb]=0.5+iWPR(NULL,0,50,i+lb)/100.0; //change indicator here
if(i>=0)
{
x[i]=in[i+lb];
av+=x[i];
}
}
av/=np;

//Prepare modeled data
for(i=0;i<np;i++)
{
pv[i]=av;
if(i<=nf) fv[i]=av;
}

//Fit trigomometric series
double w,m,c,s;
for(int harm=1;harm<=HarmNo;harm++)
{
Freq(x,w,m,c,s);
for(i=0;i<np;i++)
{
pv[i]+=m+c*MathCos(w*i)+s*MathSin(w*i);
if(i<=nf) fv[i]+=m+c*MathCos(w*i)-s*MathSin(w*i);
}
}

//Reorder the predicted vector
for(i=0;i<=(nf-1)/2;i++)
{
double tmp=fv[i];
fv[i]=fv[nf-i];
fv[nf-i]=tmp;
}
return(0);
}

Как и прежде, просьба: если вам удастся создать прибыльный эксперт на основе этого индикатора, пожалуйста поделитесь идеей по почтовому адресу, указанному в заголовке кода.

Успехов вам!

AIS1 Standard Indicator AIS1 Standard Indicator

Indicator

2MAGoodCooked 2MAGoodCooked

Индикатор торговых сигналов на двух скользящих средних.

TDW (Trade Day of Week) TDW (Trade Day of Week)

Скрипт расчитывает смещение закрытия дневных баров, в зависимости от дня недели. Реализация идеи Ларри Вильямса, описанной в его книге "Долгосрочные успехи краткосрочной торговли".

CDM (Calendar Day of Month) CDM (Calendar Day of Month)

Скрипт расчитывает смещение закрытия дневных баров, в зависимости от календарного дня месяца. Представляет из себя развитие идеи Ларри Вильямса использования дневных смещений внутри месяца.