La théorie des flux aléatoires et le FOREX - page 38

 

Je joins le code source du fichier d'en-tête lapack.mqh. Il décrit les principales fonctions permettant de calculer la matrice inverse.

Tous les commentaires sont en anglais (tirés des sources de la bibliothèque LAPACK), je pense que vous les comprendrez.

J'ai vérifié le fonctionnement des fonctions plus d'une fois. J'ai comparé leurs résultats avec ceux obtenus dans Matlab. Jusqu'à présent, je n'ai eu aucune critique.

Voici le code du script où je montre un exemple d'utilisation des fonctions de 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);
}
Dossiers :
lapack.mqh  10 kb
 

à Mathématiques

Vous ne serez pas en mesure d'écrire un article (sur l'application de Kalman). Si vous voulez écrire quelque chose, vous devez le faire bien, et cela prend du temps.

J'y ai trouvé un lien, avec un exemple simple montrant comment tout cela fonctionne.

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

L'exemple est le plus simple - il s'agit de l'estimation d'une valeur constante. Mais la théorie elle-même vous permet d'opérer avec des matrices. Et comme je l'ai dit (et donné un exemple ci-dessus dans la branche), vous pouvez mettre les données suivantes sur les cotations dans la matrice - prix, vitesse, accélération, temps d'autocorrélation, etc. Vous pouvez le faire non pas avec une seule paire, mais avec toutes les devises à la fois, y ajouter la corrélation mutuelle et obtenir une estimation actuelle avec toutes les corrélations et surtout prédire ... (comme dans le matériel de navigation, beaucoup de capteurs, de satellites (lire les devises), beaucoup de mesures (cotations), il y a une corrélation mutuelle et des erreurs (bruits) et tout cela se déplace avec sa propre vitesse et accélération), et nous avons besoin de savoir exactement où nous sommes maintenant (que ce soit USD) et où il se déplace là coordonnées XYZ( + liées, non liées, sphériques, polaires ...) nous avons au lieu de EUR/USD, GBP/USD etc.д.

Il semble que j'ai réussi à faire fonctionner quelque chose, mais j'ai passé plus de 3 mois dessus et je n'arrive toujours pas à détecter toutes les inexactitudes du travail, et ce n'est que l'analyse d'une seule monnaie. La matrice est 2*2. Et si nous prenons 12 paires de devises, pour chaque 3 équations, nous devrons faire tourner la matrice 36*36, ce qui est déjà ......

Voici un exemple de la façon dont l'écart a fonctionné le lundi.

Mais je ne peux pas attraper les erreurs d'initialisation. Manuellement je vois que parfois il démarre incorrectement, je peux le réparer manuellement et le faire fonctionner correctement, mais je ne peux pas le faire automatiquement et je veux participer au championnat avec lui ((

 

Oui, il s'est bien débrouillé dans l'écart. Et à propos de "J'aimerais rivaliser avec lui dans le championnat ((" - c'est une déclaration forte. Pensez-vous que le conseiller expert franchira la barrière de 5 minutes lors des tests effectués entre le début de l'année 2008 et le mois d'août ?

P.S. Ici, j'ai essayé de regarder dans les règles à propos de ces 5 minutes. Il n'y a rien. Bien que cela puisse être clairement énoncé : "pas plus de 5 minutes sur un ordinateur MQ avec telle ou telle configuration". Mais je me souviens qu'il en a été question dans différents fils du forum.

 
Mathemat писал (а) >>

Oui, il s'est bien débrouillé dans l'écart. Et à propos de "J'aimerais rivaliser avec lui dans le championnat ((" - c'est une déclaration forte. Pensez-vous que le conseiller expert franchira la barrière de 5 minutes lors des tests effectués entre le début de l'année 2008 et le mois d'août ?

P.S. Ici, j'ai essayé de regarder dans les règles à propos de ces 5 minutes. Il n'y a rien. Bien que cela puisse être clairement énoncé : "pas plus de 5 minutes sur un ordinateur MQ avec telle ou telle configuration". Mais je me souviens qu'il en a été question dans des fils de discussion distincts du forum.

L'indicateur fonctionne rapidement. Pas pire qu'un MQ normal.

 

à Mathématiques

Voici un théorème, un test d'adéquation.

"Théorème : Un processus est alors et seulement alors adéquat au modèle,
"quand la non-appartenance est un bruit de fond.
Remarque : Cela ne peut se produire que si
Le problème de la qualité est déterminé par le problème de l'extrapolation."

 
J'ai trouvé une collection sur le DSP. Il y a aussi Tikhonov V.I. auquel je me réfère souvent. Peut-être que quelqu'un le trouvera utile http://dsp-book.narod.ru/books.html
 
Bien sûr, il sera utile. Il ne reste plus qu'à trouver le temps de tout mettre en place :)
 
Prival >>:

to Mathemat

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

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

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

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

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

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

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

T3_mod. Il me manque des citations avant l'écart, Kalman est meilleur à certains endroits, mais ils sont très similaires. Je pense qu'il est possible de créer une machine avec un avantage statistique dans les points d'inflexion, il faut juste une façon différente de présenter les données des citations.
 
FOXXXi >> :

...il faut juste une autre façon de présenter les données de la citation.

Quelqu'un a-t-il essayé de construire une échelle avec des intervalles de temps en tic-tac ? Il serait intéressant de l'examiner.

 

Il n'y a rien de plus facile si vous utilisez MS XL.

Raison: