Zufallsstromtheorie und FOREX - Seite 38

 

Ich füge den Quellcode der Header-Datei lapack.mqh bei. Er beschreibt die wichtigsten Funktionen zur Berechnung der inversen Matrix.

Alle Kommentare sind auf Englisch (aus den Quellen der LAPACK-Bibliothek), ich denke, Sie werden sie verstehen.

Ich habe die Leistung der Funktionen mehr als einmal überprüft. Ich habe ihre Ergebnisse mit denen in Matlab verglichen. Bislang hatte ich keine Kritik.

Hier ist der Code des Skripts, in dem ich ein Beispiel für die Verwendung der lapack.mqh-Funktionen zeige.

// Скрипт для демонстрации работы с функциями обращения квадратной матрицы.
//
#include <lapack.mqh>
//
#define n 4 //размерность матрицы
//+------------------------------------------------------------------+
//| Основная функция скрипта                                              |
//+------------------------------------------------------------------+
int start()
{
    double a[n][n];
    int info, ipiv[n];
    string sM;
//
// Заполняем матрицу
    a[0,0] = Close[0]; a[0,1] = Close[1]; a[0,2] = Close[2]; a[0,3] = Close[3];
    a[1,0] = Close[4]; a[1,1] = Close[5]; a[1,2] = Close[6]; a[1,3] = Close[7];
    a[2,0] = Close[8]; a[2,1] = Close[9]; a[2,2] = Close[0]; a[2,3] = Close[1];
    a[3,0] = Close[2]; a[3,1] = Close[3]; a[3,2] = Close[4]; a[3,3] = Close[5];
//
// Сохраняем матрицу для отображения
    sM = MatrixPrint(a,n,n);
//
// Вычисляем LU-разложение матрицы
    dgetf(n,n,a,ipiv,info);
    if(info<0) return(0);
    else if(info>0) { Print("U(",info-1,",",info-1,") is exactly zero. Inverse can not be computed"); return(0);}
//
// Вычисляем обратную матрицу, заданным LU-разложением
    dgetri(n,a,ipiv,info);
//
// Сохраняем обратную матрицу для отображения
    sM = sM+MatrixPrint(a,n,n);
//
// Выполним обратную операцию для проверки результатов вычислений
//
    ArrayInitialize(ipiv,0);
//
// Вычисляем LU-разложение обратной матрицы
    dgetf(n,n,a,ipiv,info);
    if(info<0) return(0);
    else if(info>0) { Print("U(",info-1,",",info-1,") is exactly zero. Inverse can not be computed"); return(0);}
//
// Вычисляем обратную матрицу, заданным LU-разложением
    dgetri(n,a,ipiv,info);
//
// Сохраняем матрицу для отображения
    sM = sM+MatrixPrint(a,n,n);
//
// Выводим на экран результат работы
    Comment(sM);
//
   return(0);
}
//+------------------------------------------------------------------+
//| Функция преобразования матрицы в строку для вывода на экран                    |
//+------------------------------------------------------------------+
string MatrixPrint(double array[][], int r, int c)
{
   int i, j;
   string sComment = "";
//----
   for(j=0; j<r; j++)
   {
      sComment = sComment+"\n";
      for(i=0; i<c; i++) sComment = sComment+DoubleToStr(array[j,i],4)+ " ";
   }
   sComment = sComment+"\n";
//----
   return(sComment);
}
Dateien:
lapack.mqh  10 kb
 

zur Mathematik

Sie werden nicht in der Lage sein, einen Artikel (über die Anwendung von Kalman) zu schreiben. Wenn man etwas schreiben will, muss man es gut machen, und das braucht Zeit.

Ich habe dort einen Link mit einem einfachen Beispiel gefunden, das zeigt, wie das Ganze funktioniert.

http://www.navgeocom.ru/gps/kalman/

Das Beispiel ist das einfachste - es handelt sich um eine Schätzung eines konstanten Wertes. Aber die Theorie selbst erlaubt es, mit Matrizen zu arbeiten. Und wie ich schon sagte (und oben in der Verzweigung ein Beispiel gegeben habe), können Sie die folgenden Daten zu Kursen in die Matrix eingeben - Preis, Geschwindigkeit, Beschleunigung, Autokorrelationszeit usw. Sie können dies nicht nur mit einem Paar tun, , sondern mit allen Währungen auf einmal, fügen Sie die gegenseitige Korrelation hinzu und erhalten Sie eine aktuelle Schätzung mit allen Korrelationen und vor allem Vorhersagen ... (wie in der Navigation Hardware, eine Menge von Sensoren, Satelliten (lesen Währungen), eine Menge von Messungen (Zitate), gibt es gegenseitige Korrelation und Fehler (Geräusche) und es bewegt sich alles mit seiner eigenen Geschwindigkeit und Beschleunigung), und wir müssen genau wissen, wo wir jetzt sind (lassen Sie es USD) und wo es bewegt sich dort XYZ-Koordinaten( + bezogen, nicht verwandt, sphärisch, polar ...) haben wir stattdessen EUR/USD, GBP/USD etc.д.

Es scheint, dass ich etwas zum Laufen gebracht habe, aber ich habe über 3 Monate damit verbracht und kann immer noch nicht alle Ungenauigkeiten der Arbeit aufdecken, und das ist nur die Analyse einer Währung. Die Matrix ist 2*2. Und wenn wir 12 Währungspaare nehmen, müssen wir für jede 3 Gleichungen die Matrix 36*36 drehen, was bereits ..... ist.

Hier ist ein Beispiel dafür, wie sich die Lücke am Montag entwickelt hat.

Aber ich kann keine Initialisierungsfehler erkennen. Manuell sehe ich, dass es manchmal falsch startet, ich kann es manuell beheben und es richtig zum Laufen bringen, aber ich kann es nicht automatisch machen und ich möchte mit ihm an einer Meisterschaft teilnehmen ((

 

Ja, er hat sich in der Lücke gut geschlagen. Und zu "Ich würde gerne mit ihm in der Meisterschaft antreten ((" - das ist eine starke Aussage. Glauben Sie, dass der Expert Advisor die 5-Minuten-Barriere während der Tests von Anfang 2008 bis August überwinden wird?

P.S. Hier versucht, in den Regeln über diese 5 Minuten zu suchen. Es gibt nichts. Auch wenn es klar und deutlich formuliert werden könnte: "nicht mehr als 5 Minuten auf einem MQ-Computer mit dieser und jener Konfiguration". Aber ich erinnere mich, dass es in verschiedenen Threads des Forums erwähnt wurde.

 
Mathemat писал (а) >>

Ja, er hat sich in der Lücke gut geschlagen. Und zu "Ich würde gerne mit ihm in der Meisterschaft antreten ((" - das ist eine starke Aussage. Glauben Sie, dass der Expert Advisor die 5-Minuten-Barriere während der Tests von Anfang 2008 bis August überwinden wird?

P.S. Hier versucht, in den Regeln über diese 5 Minuten zu suchen. Es gibt nichts. Auch wenn es klar und deutlich formuliert werden könnte: "nicht mehr als 5 Minuten auf einem MQ-Computer mit dieser und jener Konfiguration". Aber ich erinnere mich, dass es in verschiedenen Foren erwähnt wurde.

Der Indikator arbeitet schnell. Nicht schlechter als ein normales MQ.

 

zur Mathematik

Hier ist ein Theorem, ein Test der Angemessenheit.

"Theorem: Ein Prozess ist dann und nur dann dem Modell angemessen,
"wenn die Unverbundenheit weißes Rauschen ist.
Hinweis: Dies kann nur geschehen, wenn
Das Qualitätsproblem wird durch das Extrapolationsproblem bestimmt".

 
Ich habe eine Sammlung auf DSP gefunden. Es gibt auch Tichonow V.I., auf den ich mich oft beziehe. Vielleicht findet sie ja jemand nützlich http://dsp-book.narod.ru/books.html
 
Natürlich wird sie sich als nützlich erweisen. Jetzt muss ich nur noch die Zeit finden, alles zusammenzustellen :)
 
Prival >>:

to Mathemat

Статью (по применению Калмана) видно не получиться написать. Если что то писать, то нужно делать это хорошо, а на это нужно время.

Нашел ссылку там, на простом примере показано как все работает.

http://www.navgeocom.ru/gps/kalman/

Пример самый простой, оценка постоянной величины. Но сама теория позволяет оперировать с матрицами. А в матрицу как я говорил (и приводил пример выше по ветке) можно вложить следующие данные по котировкам – цена, скорость, ускорение, время автокорреляции и т.д. Можно это делать не с одной парой, а сразу все валюты, добавить туда взаимную корреляцию и получать текущую оценку с учетом всех взаимосвязей и что самое важное прогнозировать … (по аналогии с навигационной аппаратурой, куча датчиков, спутников (читать валют), куча измерений (котировок), есть взаимная корреляция и ошибки (шумы) и все это движется со своей скоростью и ускорением), и нам нужно точно знать где мы сейчас находимся (пусть будет USD) и куда он движется там координаты XYZ( + связанные, несвязанные, сферические, полярные …) у нас вместо этого EUR/USD, GBP/USD и т.д.

У меня кое-что вроде получилось, но потратил на это более 3-х месяцев, и до сих пор не могу отловить все неточности работы, и это только анализ одной валюты. Матрица 2*2. А если взять, 12 валютных пар, на каждую 3 уравнения, то надо будет вращать матрицы 36*36, а это уже ….

Вот пример работы, как отработался гэп в понедельник.

Но никак не могу отловить ошибки инициализации. Вручную вижу, что он иногда неправильно запускается, руками могу все поправить, отпинать его что бы правильно заработал, но вот в автомате никак, а так хочется поучаствовать с ним в чемпионате ((

T3_mod. Ich vermisse Zitate vor der Lücke, Kalman ist an einigen Stellen besser, aber sie sind sehr ähnlich. Ich denke, es ist möglich, eine Maschine mit einem Statistikvorteil bei Wendepunkten zu erstellen, man braucht nur eine andere Art, die Zitate zu präsentieren.
 
FOXXXi >> :

...brauchen nur eine andere Art der Darstellung der Kursdaten.

Hat jemand versucht, eine Skala mit Tick-Zeit-Intervallen zu bauen? Es wäre interessant, sich das anzusehen.

 

Nichts ist einfacher, wenn Sie MS XL verwenden.