交易中的机器学习:理论、模型、实践和算法交易 - 页 2510

 
elibrarius#:

显然,他们为新类型的人保留了词汇。

不仅仅是保留,有些事情已经在发挥作用。

void OnStart()
{
  vector v(3);
  v[0] = 1.0;
  v[1] = 2.0;
  v[2] = 3.0;
  matrix m(3, 3);
  m.Random();
  Print("m = ", m);
  Print("m^-1 = ", m.Inverse());
  Print("Det(m) = ", m.Det());
  Print("m * v = ", m * v);
}
 
Aleksey Nikolayev#:

不仅是保留,有些东西已经在发挥作用。

帮助搜索没有任何结果。
而这些矩阵将派上用场。
通过变量设置大小的工作

int m1=2; int m2=2;
矩阵m(m1, m2)。

在你不得不为动态数组而烦恼之前。

 
elibrarius#:

帮助搜索并没有提供任何信息。

我只有从这里 得到的信息。

elibrarius#:

而这些矩阵将派上用场。
使用变量来设置大小的工作

int m1=2; int m2=2;
矩阵m(m1, m2)。

以前,你必须使用动态数组。

事实上,Renat承诺在MQL5中进行机器学习,如支持ONNX。我们将拭目以待)

 
弗拉基米尔-巴斯卡科夫#:
没有人打过这两个混搭的交叉点

...而滞后性可以通过NS前缀来减少))

 
elibrarius#:
如果有人使用SanSanych的软件包https://www.mql5.com/ru/code/17468,连接到R,那么:

在R.mqh文件中,向量和 矩阵 变量的名称在编译时开始出现错误。把它们重命名为其他名字,一切都会正常。我使用了vectr和matr。

编辑器将这些词用蓝色突出显示为数据类型,如int,double。显然是为新类型保留的词语。

嗯,不知道这个图书馆的情况。如何使用它,它的功能是什么?

 
iwelimorn#:

总而言之,一切都是徒劳的,有了MO,市场就不会被愚弄。

找到了特质和目标,其类别分布见第一个图。

使用该数据集训练的测试和训练katbust模型的准确率为93%。

第二张图是目标交易的余额和权益图。

第三张图显示了根据训练有素的katbusta模型的信号进行交易的平衡和权益图。

所以,女士们、先生们,散开吧。

目标是什么,你是如何找到它的?

你是否尝试过添加一个trall?

如果你只看误差平衡(第1类的+1对-1错),结果是否有很大不同?

 
Aleksey Vyazmikin#:

嗯,不知道这个图书馆的情况。如何使用它,它的功能是什么?


变量和数组在MT和R之间的双向传输。有引号、回车结果和命令。
函数描述:
/**
* 返回dll的版本。返回值的上16位
* 是主要版本,下16位是次要版本。这个
* 在RInit()中使用,以确保这个头文件和
* zzthe dll适合在一起。
*/
int RGetDllVersion();

/**
* 这不是用来直接调用的,它将在版本检查成功后由RInit()调用
*。
* 你应该调用RInit()来启动一个新的R会话。
*/
long RInit_(string commandline,int debuglevel);

/**
* Teminate the R session.在你的deinit()函数中调用这个。
* 在这之后,手柄就不再有效了。
*/
void RDeinit(long rhandle);

/**
* 如果属于这个句柄的R会话还在运行,则返回true
*。R将在你发送给它的
*代码中出现任何致命错误时终止。你应该在你的启动函数的开始
*,并停止所有的行动。在日志中可以找到崩溃前的最后一条
*命令。
* 如果R不再运行,这个库就不会发出任何
* 更多的日志信息,并且会默默地忽略所有的命令。
*/
bool RIsRunning(long rhandle);

/**
* 如果R仍然在执行一个命令(由调用RExecuteAsync()产生的
),则返回true
*/
bool RIsBusy(long rhandle);

/**
*执行代码,不等待。然而,任何后续的调用
* 将会等待,因为在任何给定的时间,只能有一个线程在执行
*。使用 RIsBusy() 检查是否完成
*/
void RExecuteAsync(long rhandle,string code);

/**
* 执行代码并等待它完成。这将不会
* 返回任何东西。你基本上可以用
* RGet*()函数实现同样的目的,评估表达式也是
*只是执行代码,唯一的区别是这些
* RGet*()函数会另外尝试解析并返回
*输出,而RExecute()只是执行、等待并
*忽略所有输出。
*/
void RExecute(long rhandle,string code);

/**
* 给变量名分配一个bool。在R中这种类型被称为 "逻辑 "
*/
void RAssignBool(long rhandle,string variable,bool value);

/**
* 将一个整数分配给变量名。
*/
void RAssignInteger(long rhandle,string variable,int value);

/**
* 给变量名称分配一个双数。
*/
void RAssignDouble(long rhandle,string variable,double value);

/**
* 将一个字符串分配给变量namd。在R中这种类型被称为 "字符"
*/
void RAssignString(long rhandle,string variable,string value);

/**
* 将一个向量分配给变量名。如果大小与
* 你的实际数组大小不一致,那么可能会发生不好的事情。
*/
void RAssignVector(long rhandle,string variable,double &vectr[],int size);

/**
* 将一个字符向量(一个字符串数组)分配给变量。如果你需要
*一个因子,那么你应该在这个命令之后执行代码来转换。在
* 最近版本的R中,一个字符串的向量并不需要比
* 一个因子更多的内存,而且更容易向它追加新元素。
*/
void RAssignStringVector(long rhandle,string variable,string &vectr[],int size);

/**
* 给变量名称分配一个矩阵。矩阵必须有行号作为
*第一维(byrow=TRUE将用于原始数据)。
这个函数比从头开始建立一个巨大的矩阵(数以百计的行)要快得多
* 每一行都用RRowBindVector()在最后追加新行。这个函数经过优化
*,通过使用文件-IO与
*原始二进制数据,以实现单个函数调用的巨大吞吐量。对于只有少量元素的非常小的矩阵和向量
* 这可能是太多的开销,其他函数会更快。一旦你
* 有了可能有数千行的矩阵传输到R,你就应该
* 只使用RRowBindVector()在单个新
* 数据向量到来时进一步缓慢增长,而不是总是发送整个矩阵的新副本。
*/
void RAssignMatrix(long rhandle,string variable,double &matr[],int rows,int cols);

/**
* 在矩阵或数据帧中追加一行。这将执行
* variable <- rbind(variable, vector)
* 如果大小与实际数组大小不一致,可能会发生不好的事情。
*/
void RAppendMatrixRow(long rhandle,string variable,double &vectr[],int size);

/**
* 如果变量存在则返回true,否则返回false。
*/
bool RExists(long rhandle,string variable);

/**
* 评估表达式并返回一个bool。表达式可以是任何R代码
*,将评估为逻辑的。如果它是一个逻辑向量,那么只返回
* 第一个元素。
*/
bool RGetBool(long rhandle,string expression);

/**
* 评估表达式并返回一个整数。一个表达式可以是任何R代码
*,它将被评估为一个整数。如果它是一个浮点,它将被
*四舍五入,如果它是一个向量,那么只有第一个元素会被返回。
*/
int RGetInteger(long rhandle,string expression);

/**
* 评估表达式并返回一个双数。表达式可以是任何R代码
*,将评估为一个浮点数,如果它是一个矢量,那么
*只返回第一个元素。
*/
double RGetDouble(long rhandle,string expression);

/**
* 评估表达式并返回一个双数的向量。表达式可以
* 是任何可以评估为浮点数的向量的东西。
* 返回值是可以被复制到
* 数组中的元素数量。它永远不会比尺寸大,但可能会更小。
* 如果尺寸不匹配,则在调试级别1上输出警告。
>> 限于100000个元素
*/
int RGetVector(long rhandle,string expression,double &vectr[],int size);

/**
* 为调试目的做一个print(expression)。Outout将被
* 发送到调试级别0的调试监视器。
*/

void RPrint(long rhandle,string expression)。

 
elibrarius#:

MT和R之间的变量和数组的双向转移。有报价,有回馈结果,有命令。
谢谢你的信息,我将注意到这种可能性。到底有多大的往返延误?
 
Aleksey Vyazmikin#:
谢谢你的信息,我将注意到这种可能性。来回延迟多长时间?
非常快。通过记忆交换。不是文件或点子。
 
Vladimir Baskakov#:
没有人打过两个波形的交叉点。
你不会相信的。
如果使用平均法,结果将与棉签相同,信号滚动时间也将相同到几秒钟之内。
---
我自己也被震惊了;)