随机流理论和外汇 - 页 38

 

我在此附上头文件lapack.mqh的源代码。它描述了计算逆矩阵的主要功能。

所有的评论都是英文的(取自LAPACK图书馆的资料),我想你会明白的。

我不止一次地检查了这些功能的性能。我将他们的结果与在Matlab中得到的结果进行了比较。到目前为止,我没有任何抱怨。

这里是脚本的代码,我展示了一个如何使用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);
}
附加的文件:
lapack.mqh  10 kb
 

数学

你将无法写一篇文章(关于卡尔曼的应用)。如果你想写东西,你必须把它做好,这需要时间。

我在那里找到了一个链接,有一个简单的例子显示了这一切是如何运作的。

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

这个例子是最简单的一个--它是对一个常量值的估计。但理论本身允许你对矩阵进行操作。而正如我所说的(并在上面的分支中举了一个例子),你可以把报价的以下数据放入矩阵中--价格、速度、加速度、自相关时间等等。你可以不只用一个货币对, ,而是一次用所有的货币,在那里增加相互的相关性,得到一个具有所有相关性的当前估计,最重要的是预测...(就像在导航硬件中,大量的传感器,卫星(读取货币),大量的测量(报价),有相互关联和误差(噪音),而且它都以自己的速度和加速度移动),我们需要知道我们现在的确切位置(让它是美元)和它在那里移动的XYZ 坐标(+相关,不相关,球面,极地...)我们反而有欧元/美元英镑/美元 等。д.

我似乎已经有了一些工作,但花了3个多月的时间,仍然无法抓住工作中的所有不准确之处,而这只是对一种货币的分析。矩阵是2*2。如果我们把 12个货币对,对于每3个方程式,我们将不得不旋转矩阵36*36,这已经是.....。

下面是一个例子,说明周一的差距是如何运作的。

但我无法捕捉到初始化错误。我看到它有时启动不正确,我可以手动修复它,使它正常工作,但我不能自动做到,我想用它参加冠军赛(()。

 

是的,他在缺口方面做得很好。而关于 "我想在冠军赛中与之竞争(()"--这是个强烈的声明。你认为专家顾问在2008年初至8月的测试中会通过5分钟的障碍吗?

P.S. 这里试着在规则中寻找关于那5分钟。什么都没有。尽管它可以清楚地写出来。"在一台有这样那样配置的MQ电脑上不超过5分钟"。但我记得在论坛的不同主题中都提到了这一点。

 
Mathemat писал (а)>>

是的,他在缺口方面做得很好。而关于 "我想在冠军赛中与之竞争(()"--这是个强烈的声明。你认为专家顾问在2008年初至8月的测试中会通过5分钟的障碍吗?

P.S. 这里试着在规则中寻找关于那5分钟。什么都没有。尽管它可以清楚地写出来。"在一台有这样那样配置的MQ电脑上不超过5分钟"。但我记得在不同的论坛主题中都提到了这一点。

该指标工作速度快。就像普通的MQ一样快。

 

数学

这里有一个定理,是对充分性的检验。

"定理":一个过程在当时也只有在当时才适合于模型。
"当不相关的东西是白噪声。
注意:只有在以下情况下才会发生这种情况
质量问题是由推断问题决定的"。

 
我在DSP上发现了一个集合。还有我经常提到的季霍诺夫-V.I.也是如此。也许有人会发现它很有用http://dsp-book.narod.ru/books.html
 
当然会派上用场。剩下的就是找到时间把它放在一起 :)
 
Prival >>:

to Mathemat

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

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

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

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

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

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

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

T3_mod.我错过了缺口前的报价,卡尔曼在某些地方更好,但它们非常相似。 我认为有可能创建一个在拐点上具有统计优势的机器,只是需要不同的方式来呈现报价数据。
 
FOXXXi >> :

...只是需要一种不同的方式来呈现报价数据。

有没有人试着建立一个有滴答时间间隔的比例尺? 看一下会很有趣。

 

如果你使用MS XL,没有什么更容易的了。