Teoria del flusso casuale e FOREX - pagina 38

 

Sto allegando il codice sorgente del file header lapack.mqh. Descrive le principali funzioni per calcolare la matrice inversa.

Tutti i commenti sono in inglese (presi da fonti della biblioteca LAPACK), penso che lo capirete.

Ho controllato il funzionamento delle funzioni più di una volta. Ho confrontato i loro risultati con quelli ottenuti in Matlab. Finora non ho avuto critiche.

Ecco il codice dello script dove mostro un esempio di come usare le funzioni di lapack.mqh.

// Скрипт для демонстрации работы с функциями обращения квадратной матрицы.
//
#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);
}
File:
lapack.mqh  10 kb
 

alla matematica

Non sarai in grado di scrivere un articolo (sull'applicazione di Kalman). Se vuoi scrivere qualcosa, devi farlo bene, e ci vuole tempo.

Ho trovato un link lì, con un semplice esempio che mostra come funziona il tutto.

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

L'esempio è il più semplice - è una stima di un valore costante. Ma la teoria stessa permette di operare con le matrici. E come ho detto (e dato un esempio sopra nel ramo), si possono mettere nella matrice i seguenti dati sulle quotazioni: prezzo, velocità, accelerazione, tempo di autocorrelazione, ecc. Si può fare questo non con una sola coppia, ma tutte le valute in una volta, aggiungere la correlazione reciproca lì e ottenere una stima attuale con tutte le correlazioni e soprattutto prevedere ... (come nell'hardware di navigazione, un sacco di sensori, satelliti (leggi valute), un sacco di misurazioni (quotazioni), c'è correlazione reciproca ed errori (rumori) e tutto si muove con la propria velocità e accelerazione), e abbiamo bisogno di sapere esattamente dove siamo ora (che sia USD) e dove si sta muovendo lì coordinate XYZ(+ relative, non correlate, sferiche, polari ...) abbiamo invece EUR/USD, GBP/USD eccд.

Mi sembra di aver ottenuto qualcosa che funziona, ma ci ho passato più di 3 mesi e ancora non riesco a cogliere tutte le imprecisioni del lavoro, e questa è solo l'analisi di una moneta. La matrice è 2*2. E se prendiamo 12 coppie di valute, per ogni 3 equazioni, dovremo ruotare la matrice 36*36, che è già .....

Ecco un esempio di come il divario ha funzionato lunedì.

Ma non riesco a prendere gli errori di inizializzazione. Manualmente vedo che a volte parte in modo errato, posso sistemarlo manualmente e farlo funzionare correttamente, ma non posso farlo automaticamente e voglio partecipare al campionato con esso ((

 

Sì, ha fatto bene nel divario. E su "Mi piacerebbe competere con esso nel campionato ((" - è un'affermazione forte. Pensi che l'Expert Advisor supererà la barriera dei 5 minuti durante i test dall'inizio del 2008 fino ad agosto?

P.S. Qui ha provato a cercare nel regolamento circa quei 5 minuti. Non c'è niente. Anche se potrebbe essere scritto chiaramente: "non più di 5 minuti su un computer MQ con tale e tale configurazione". Ma ricordo che è stato menzionato in thread separati del forum.

 
Mathemat писал (а) >>

Sì, ha fatto bene nel divario. E su "Mi piacerebbe competere con esso nel campionato ((" - è un'affermazione forte. Pensi che l'Expert Advisor supererà la barriera dei 5 minuti durante i test dall'inizio del 2008 fino ad agosto?

P.S. Qui ha provato a cercare nel regolamento circa quei 5 minuti. Non c'è niente. Anche se potrebbe essere scritto chiaramente: "non più di 5 minuti su un computer MQ con tale e tale configurazione". Ma ricordo che è stato menzionato in thread di forum separati.

L'indicatore funziona velocemente. Non peggio di un normale MQ.

 

alla matematica

Ecco un teorema, un test di adeguatezza.

"Teorema: un processo è allora e solo allora adeguato al modello,
quando l'estraneità è un rumore bianco".
Osservazione: questo può accadere solo quando
Il problema della qualità è determinato dal problema dell'estrapolazione".

 
Ho trovato una collezione su DSP. C'è anche Tikhonov V.I. a cui faccio spesso riferimento. Forse qualcuno lo troverà utile http://dsp-book.narod.ru/books.html
 
Naturalmente sarà utile. Resta solo da trovare il tempo per mettere tutto insieme :)
 
Prival >>:

to Mathemat

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

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

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

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

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

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

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

T3_mod. Mi mancano le citazioni prima del divario, Kalman è migliore in alcuni punti, ma sono molto simili. Penso che sia possibile creare una macchina con un vantaggio statistico nei punti di inflessione, solo bisogno di un modo diverso per presentare i dati delle citazioni.
 
FOXXXi >> :

...solo bisogno di un modo diverso di presentare i dati delle citazioni.

Qualcuno ha provato a costruire una scala con intervalli di tempo a tick? Sarebbe interessante guardarla.

 

Non c'è niente di più facile se si usa MS XL.