交易中的机器学习:理论、模型、实践和算法交易 - 页 2510 1...250325042505250625072508250925102511251225132514251525162517...3399 新评论 Aleksey Nikolayev 2021.11.22 11:21 #25091 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); } Aleksei Kuznetsov 2021.11.22 12:22 #25092 Aleksey Nikolayev#: 不仅是保留,有些东西已经在发挥作用。 帮助搜索没有任何结果。 而这些矩阵将派上用场。 通过变量设置大小的工作 int m1=2; int m2=2; 矩阵m(m1, m2)。 在你不得不为动态数组而烦恼之前。 Aleksey Nikolayev 2021.11.22 12:37 #25093 elibrarius#: 帮助搜索并没有提供任何信息。 我只有从这里 得到的信息。 elibrarius#: 而这些矩阵将派上用场。 使用变量来设置大小的工作int m1=2; int m2=2; 矩阵m(m1, m2)。以前,你必须使用动态数组。 事实上,Renat承诺在MQL5中进行机器学习,如支持ONNX。我们将拭目以待) eccocom 2021.11.22 12:43 #25094 弗拉基米尔-巴斯卡科夫#: 没有人打过这两个混搭的交叉点 ...而滞后性可以通过NS前缀来减少)) Aleksey Vyazmikin 2021.11.22 13:36 #25095 elibrarius#: 如果有人使用SanSanych的软件包https://www.mql5.com/ru/code/17468,连接到R,那么: 在R.mqh文件中,向量和 矩阵 变量的名称在编译时开始出现错误。把它们重命名为其他名字,一切都会正常。我使用了vectr和matr。编辑器将这些词用蓝色突出显示为数据类型,如int,double。显然是为新类型保留的词语。 嗯,不知道这个图书馆的情况。如何使用它,它的功能是什么? Aleksey Vyazmikin 2021.11.22 13:39 #25096 iwelimorn#: 总而言之,一切都是徒劳的,有了MO,市场就不会被愚弄。 找到了特质和目标,其类别分布见第一个图。 使用该数据集训练的测试和训练katbust模型的准确率为93%。第二张图是目标交易的余额和权益图。第三张图显示了根据训练有素的katbusta模型的信号进行交易的平衡和权益图。所以,女士们、先生们,散开吧。 目标是什么,你是如何找到它的? 你是否尝试过添加一个trall? 如果你只看误差平衡(第1类的+1对-1错),结果是否有很大不同? Aleksei Kuznetsov 2021.11.22 13:59 #25097 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)。 程序库: mt-R Machine learning in trading: Libraries: mt-R Aleksey Vyazmikin 2021.11.22 14:49 #25098 elibrarius#: MT和R之间的变量和数组的双向转移。有报价,有回馈结果,有命令。 谢谢你的信息,我将注意到这种可能性。到底有多大的往返延误? Aleksei Kuznetsov 2021.11.22 15:10 #25099 Aleksey Vyazmikin#: 谢谢你的信息,我将注意到这种可能性。来回延迟多长时间? 非常快。通过记忆交换。不是文件或点子。 Renat Akhtyamov 2021.11.22 16:40 #25100 Vladimir Baskakov#: 没有人打过两个波形的交叉点。 你不会相信的。如果使用平均法,结果将与棉签相同,信号滚动时间也将相同到几秒钟之内。---我自己也被震惊了;) 1...250325042505250625072508250925102511251225132514251525162517...3399 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
显然,他们为新类型的人保留了词汇。
不仅仅是保留,有些事情已经在发挥作用。
不仅是保留,有些东西已经在发挥作用。
帮助搜索没有任何结果。
而这些矩阵将派上用场。
通过变量设置大小的工作
int m1=2; int m2=2;
矩阵m(m1, m2)。
在你不得不为动态数组而烦恼之前。
帮助搜索并没有提供任何信息。
我只有从这里 得到的信息。
而这些矩阵将派上用场。
使用变量来设置大小的工作
int m1=2; int m2=2;
矩阵m(m1, m2)。
以前,你必须使用动态数组。
事实上,Renat承诺在MQL5中进行机器学习,如支持ONNX。我们将拭目以待)
没有人打过这两个混搭的交叉点
...而滞后性可以通过NS前缀来减少))
如果有人使用SanSanych的软件包https://www.mql5.com/ru/code/17468,连接到R,那么:
在R.mqh文件中,向量和 矩阵 变量的名称在编译时开始出现错误。把它们重命名为其他名字,一切都会正常。我使用了vectr和matr。
编辑器将这些词用蓝色突出显示为数据类型,如int,double。显然是为新类型保留的词语。
嗯,不知道这个图书馆的情况。如何使用它,它的功能是什么?
总而言之,一切都是徒劳的,有了MO,市场就不会被愚弄。
找到了特质和目标,其类别分布见第一个图。
使用该数据集训练的测试和训练katbust模型的准确率为93%。
第二张图是目标交易的余额和权益图。
第三张图显示了根据训练有素的katbusta模型的信号进行交易的平衡和权益图。
所以,女士们、先生们,散开吧。
目标是什么,你是如何找到它的?
你是否尝试过添加一个trall?
如果你只看误差平衡(第1类的+1对-1错),结果是否有很大不同?
嗯,不知道这个图书馆的情况。如何使用它,它的功能是什么?
变量和数组在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)。
MT和R之间的变量和数组的双向转移。有报价,有回馈结果,有命令。
谢谢你的信息,我将注意到这种可能性。来回延迟多长时间?
没有人打过两个波形的交叉点。