- А такой рисунок видели?
- Индикаторы , показывающие только правильную дивергенцию! При этом первый минимум /максимум находится в зоне перекуплености / перепроданости. Тоесть, невозможность превысить прошлый минимум / максимум на индикаторе!!
- Является ли финансовый временный ряд случайным блужданием ?
Видел как ребята проводили спектральный анализ валютных пар. Но чесно говоря не понял как вообще построить кривую спектра. Может есть линки. Зараннее благодарен.
я думал по спектру определять устойчивость канала... например лин. регрессии. Хмм...
Я для себя такой индикатор сделал: рисует ln спектральной плотности для участка нужной длины от задаваемой в параметрах даты и если надо, записывает в файл
//+------------------------------------------------------------------+ //| SD.mq4 | //| Copyright © 2007, Candid | //| likh@yandex.ru | //+------------------------------------------------------------------+ // Делаем realfastfouriertransform нужной длины от заданной даты, // вычисляем спектральную плотность и при желании записываем в файл. #property copyright "Copyright © 2007, Candid" #property link "likh@yandex.ru" #property show_inputs #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Blue #import "#_lib_FFT.ex4" void fastfouriertransform(double& a[], int nn, bool inversefft); void realfastfouriertransform(double& a[], int tnn, bool inversefft); void fastcorellation(double& signal[], int signallen, double& pattern[], int patternlen); void fastconvolution(double& signal[], int signallen, double& response[], int negativelen, int positivelen); void fastsinetransform(double& a[], int tnn, bool inversefst); void fastcosinetransform(double& a[], int tnn, bool inversefct); void tworealffts(double a1[], double a2[], double& a[], double& b[], int tn); #import extern double n=9; //ширина окна (окно 2^n баров) extern datetime FromDate= D'2004.01.01 00:00'; //начало данных extern bool SaveSD = false; double SD[]; // Спектральная плотность double Data[]; int M,N; int pos,FirstPos,LastPos; int ind; int handle; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorShortName("SD"); SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,SD); M=MathPow(2,n-1); N = 2*M; ArrayResize(Data,N); if (SaveSD) handle = FileOpen("SD.txt",FILE_CSV|FILE_WRITE,';'); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | | //+------------------------------------------------------------------+ int deinit() { if (SaveSD) FileClose(handle); return(0); } //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ int start() { //---- FirstPos = iBarShift(NULL,0,FromDate,false); LastPos = FirstPos-N+1; for (pos=FirstPos; pos>=LastPos; pos--) { ind = FirstPos-pos; Data[ind] = Close[pos]; } realfastfouriertransform(Data,N,false); // SD[FirstPos] = MathLog(Data[0]*Data[0]); SD[FirstPos-M] = MathLog(Data[1]*Data[1]); for (ind=1;ind<M;ind++) { pos = ind+ind; SD[FirstPos-ind]=MathLog(Data[pos]*Data[pos] + Data[pos+1]*Data[pos+1]); } if (SaveSD) { for (ind=1;ind<=M;ind++) { FileWrite(handle,ind,SD[ind]); } } //---- return(0); } //+------------------------------------------------------------------+
Визуализация вэйвлетов в МТ4 - это просто! :) Респект!
Маленькая ремарка: если я правильно понял формат возвращаемых
realfastfouriertransform данных, фрагмент
for( i=0; i<=N-1; i++) { SpecktrBuffer[i]=MathSqrt(aa[i*2]*aa[i*2]+aa[i*2+1]*aa[i*2+1]); LineBuffer[i] = 0.1; }
даёт ошибку для нулевой частоты (ср. мой код). Впрочем, это постоянная
составляющая, обычно она вообще не нужна. У меня она закомментирована
и просто не выводится.
А вообще мой код на самом деле всего лишь заготовка - на зашумленных
данных без усреднения спектральная плотность бесполезна практически.
Суть метода аналогична распознаванию паттернов. Вообщем получается пока, для анализа я использую нейрошелелл и кучу собственных написанных dll-ок с разнами алгоритмами преобразования...
Хотелось бы развить оборованные подобные темы, которые быстро затихли в свое время.
В часности посты клота с паука.
По моим скромным наблюдениям, нейросеть хорошо "раскусывает" первую производную, если мы хотим прогнозировать значение переменной(цену). Если мы хотим прогнозировать изменение (цены), то на вход лучше подавать вторую производную, т.е. ускорение - изменение изменения цены. Тут, кстати важную роль играет относительный угол (приращение цены на бар - единицу времени).
Иследования еще не закнчены, когда будут закончены, никто не знает... Мне кажется, что это больше флосовский вопрос...
Однако, использование формулы для определения угла, которую пердожил бугира имеет определенный смысл, который выражается в стат. исследовании, я пробовал в нейрошелдейтрейдере - результат положительный.
==================
Вы прогнозируете 2-ую производную?
Нет, прогнозирую 1-ю,а на вход подаю 2-ю и 1-ю с прошлых значений.
===============================
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования