Teoría de los flujos aleatorios y FOREX - página 38

 

Adjunto el código fuente del archivo de cabecera lapack.mqh. Describe las principales funciones para calcular la matriz inversa.

Todos los comentarios están en inglés (tomados de las fuentes de la biblioteca LAPACK), creo que lo entenderás.

He comprobado el rendimiento de las funciones más de una vez. He comparado sus resultados con los obtenidos en Matlab. Hasta ahora, no he tenido ninguna queja.

Aquí está el código del script donde muestro un ejemplo de cómo utilizar las funciones 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);
}
Archivos adjuntos:
lapack.mqh  10 kb
 

a las Matemáticas

No podrá escribir un artículo (sobre la aplicación de Kalman). Si quieres escribir algo, tienes que hacerlo bien, y eso lleva tiempo.

He encontrado un enlace allí, con un ejemplo sencillo que muestra cómo funciona todo.

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

El ejemplo es el más sencillo: se trata de una estimación de un valor constante. Pero la propia teoría permite operar con matrices. Y como dije (y di un ejemplo arriba en la rama), puedes poner los siguientes datos sobre las cotizaciones en la matriz - precio, velocidad, aceleración, tiempo de autocorrelación, etc. Puede hacer esto no con un solo par, sino con todas las divisas a la vez, añadir la correlación mutua allí y obtener una estimación actual con todas las correlaciones y lo más importante predecir ... (como en el hardware de navegación, un montón de sensores, satélites (léase divisas), un montón de mediciones (cotizaciones), hay correlación mutua y errores (ruidos) y todo se mueve con su propia velocidad y aceleración), y necesitamos saber exactamente dónde estamos ahora (que sea el USD) y hacia dónde se mueve allí coordenadas XYZ( + relacionadas, no relacionadas, esféricas, polares...) tenemos en cambio EUR/USD, GBP/USD etc.д.

Parece que he conseguido que algo funcione, pero me he pasado más de 3 meses en ello y todavía no consigo captar todas las imprecisiones del trabajo, y eso que sólo es el análisis de una moneda. La matriz es de 2*2. Y si tomamos 12 pares de divisas, para cada 3 ecuaciones, tendremos que girar la matriz 36*36, que ya es .....

Este es un ejemplo de cómo funcionó la brecha el lunes.

Pero no puedo captar los errores de inicialización. Manualmente veo que a veces arranca mal, puedo arreglarlo manualmente y darle una patada para que funcione bien, pero no puedo hacerlo automáticamente y quiero participar en el campeonato con él ((

 

Sí, lo ha hecho bien en la brecha. Y sobre "me gustaría competir con él en el campeonato ((" - es una afirmación fuerte. ¿Cree que el Asesor Experto superará la barrera de los 5 minutos durante las pruebas realizadas desde principios de 2008 hasta agosto?

P.D. Aquí trató de buscar en las Reglas sobre esos 5 minutos. No hay nada. Aunque se podría explicar claramente: "no más de 5 minutos en un ordenador MQ con tal o cual configuración". Pero recuerdo que se mencionó en otros hilos del foro.

 
Mathemat писал (а) >>

Sí, lo ha hecho bien en la brecha. Y sobre "me gustaría competir en el campeonato con él ((" - es una afirmación fuerte. ¿Cree que el Asesor Experto superará la barrera de los 5 minutos durante las pruebas realizadas desde principios de 2008 hasta agosto?

P.D. Aquí trató de buscar en las Reglas sobre esos 5 minutos. No hay nada. Aunque se podría explicar claramente: "no más de 5 minutos en un ordenador MQ con tal o cual configuración". Pero recuerdo que se mencionó en otros hilos del foro.

El indicador funciona rápidamente. Tan rápido como un MQ normal.

 

a las Matemáticas

Aquí hay un teorema, una prueba de adecuación.

"Teorema: Un proceso es entonces y sólo entonces adecuado al modelo,
cuando la falta de relación es ruido blanco".
Nota: Esto sólo puede ocurrir cuando
El problema de la calidad viene determinado por el problema de la extrapolación".

 
Encontré una colección en DSP. También está Tikhonov V.I. al que me refiero a menudo. Tal vez alguien lo encuentre útil http://dsp-book.narod.ru/books.html
 
Por supuesto que será útil. Sólo falta encontrar el tiempo para ponerlo todo en común :)
 
Prival >>:

to Mathemat

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

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

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

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

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

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

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

T3_mod. Me faltan las citas antes de la brecha, Kalman es mejor en algunos lugares, pero son muy similares. Creo que es posible crear una máquina con una ventaja de estadísticas en los puntos de inflexión, sólo necesita una forma diferente de presentar los datos de las citas.
 
FOXXXi >> :

...sólo se necesita una forma diferente de presentar los datos de las cotizaciones.

¿Alguien ha intentado construir una balanza con intervalos de tiempo de tic? Sería interesante verlo.

 

No hay nada más fácil si se utiliza MS XL.

Razón de la queja: