Скачать MetaTrader 5

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

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

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

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

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

Просмотров:
8821
Рейтинг:
голосов: 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);
}

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

Успехов вам!

YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя

Скрипт рисует уровни Рудолфа Акселя

YURAZ_CLOSEPRC_V1 YURAZ_CLOSEPRC_V1

Закрытие всех открытых позиций одним кликом либо закрытие всех позиций при достижении указанного профита в процентах от депозита

NewMartin NewMartin

Новый взгляд на привычный мартингейл.

Select Trade Select Trade

Советник Select Trade позволяет трейдеру сделать выбор при открытии позиции (BUY или SELL).