欢迎光临散文网 会员登陆 & 注册

量化交易软件:交易员生存诀窍若干测试的比较报告

2023-07-24 17:01 作者:bili_45793681098  | 我要投稿

1. 输入参数。选则一款智能交易系统进行测试

由于我的计算机有四个内核, 我只能运行四个测试代理。因此, 并发 (或有几秒钟的小延迟), 我只能运行四个终端, 即每个代理占用一个终端。这就是为什么在输入参数中有四组可用设置的原因:


编辑切换为居中


参数:

  • 赫兹量化r#ххх 的安装文件夹

  • 终端 #xxx 的测试品种

  • 终端 #xxx 的测试周期

  • 正确的终端文件名

  • 暂歇的毫秒数 — 从属终端之间的启动暂停

  • 开始测试日期 (仅年, 月和日)

  • 结束测试日期 (仅年, 月和日)

  • 初始本金

  • 杠杆

编辑切换为居中

在基本算法开始之前, 赫兹量化需要链接从属终端的安装文件夹和 AppData 文件夹中的数据目录。此处是一个简单的脚本 Check_TerminalPaths.mq5:

//+------------------------------------------------------------------+ //|                                          Check_TerminalPaths.mq5 | //|                                 版权所有 2009, MetaQuotes 软件公司| //|                                             https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "2009, MetaQuotes 软件公司" #property link      "https://www.mql5.com" #property version   "1.00" //+------------------------------------------------------------------+ //| 脚本程序开始函数                                                  | //+------------------------------------------------------------------+ void OnStart()  { //---   Print("TERMINAL_PATH = ",TerminalInfoString(TERMINAL_PATH));   Print("TERMINAL_DATA_PATH = ",TerminalInfoString(TERMINAL_DATA_PATH));   Print("TERMINAL_COMMONDATA_PATH = ",TerminalInfoString(TERMINAL_COMMONDATA_PATH));  } //+------------------------------------------------------------------+

脚本打印三个参数:

  • TERMINAL_PATH — 终端运行所在的文件夹

  • TERMINAL_DATA_PATH — 终端数据存储的文件夹

  • TERMINAL_COMMONDATA_PATH — 计算机上所有安装终端的公共文件夹

三个终端的示例 (它们当中之一使用 /Portable 键运行):

// 终端启动为主要模式 TERMINAL_PATH = C:\Program Files\MetaTrader 5 TERMINAL_DATA_PATH = C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075 TERMINAL_COMMONDATA_PATH = C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\Common // 终端启动为主要模式 TERMINAL_PATH = D:\MetaTrader 5 3 TERMINAL_DATA_PATH = C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\0C46DDCEB43080B0EC647E0C66170465 TERMINAL_COMMONDATA_PATH = C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\Common // 终端启动为可移动模式 TERMINAL_PATH = D:\MetaTrader 5 5 TERMINAL_DATA_PATH = D:\MetaTrader 5 5 TERMINAL_COMMONDATA_PATH = C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\Common

您可阅读我以前的一篇文章的以下段落, 了解有关终端文件夹和 AppData 中文件夹的对应关系的更多信息:

  • 在 AppData 文件夹中绑定安装文件夹和数据目录

  • 匹配从属终端的安装文件夹和 AppData 文件夹

  • 秘密 #1

  • FindFirstFileW, FindNextFileW

  • 使用 FindFirstFileW, FindNextFileW 的示例

  • 终端目录内部

  • CopyFileW

  • 操纵 "origin.txt" 文件

  • 最后一程

使用系统的 "打开文件" 对话框 (GetOpenFileNameW 函数) 选择一款智能交易系统:


编辑切换为居中


有关调用打开文件对话框的细节已在我之前的文章 "交易员生存诀窍: 四遍回测优于一遍: 4.2. 利用系统 "打开文件" 对话框选择一款 EA" 中讨论。

当前版本 (文件 GetOpenFileNameW.mqh, 版本 1.003) 改变的功能在 OpenFileName 函数:

//+------------------------------------------------------------------+ //| 创建打开文件对话框                                                | //+------------------------------------------------------------------+ string OpenFileName(const string filter_description="可编辑代码",                    const string filter="\0*.mq5\0",                    const string title="选择源文件")  {   string path=NULL;   if(GetOpenFileName(path,filter_description+filter,TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Experts\\",title))      return(path);   else     {      PrintFormat("引发失败的错误: %x",kernel32::GetLastError());      return(NULL);     }  }

现在它设置文件搜索过滤器已变得更方便。还请注意, 现在过滤器搜索推荐 *.mq5 格式的文件 (在上一篇文章中是搜索编译的 *.ex5 文件)。


2. 再次关注 common.ini

现在是时候来描述在 'Compare multiple tests.mq5' 中的 CopyCommonIni() 函数。

从属终端通过 指定的配置文件 来启动。赫兹量化有四个从属终端, 所以我们需要创建四个 *.ini 文件: myconfiguration1.ini, myconfiguration2.ini, myconfiguration3.ini, myconfiguration4.ini。文件 myconfigurationХ.ini 是基于终端的 common.ini 文件创建, 来自我们已启动的智能交易系统。文件 common.ini 的路径:

TERMINAL_DATA_PATH\config\common.ini

创建和编辑 myconfiguration.ini 文件的算法如下所示:

  • 拷贝 common.ini 至文件夹 TERMINAL_COMMONDATA_PATH\Files\original.ini (WinAPI CopyFileW)

  • 在原始 original.ini 文件里, 查找段落 [Common] (MQL5 + 正则表达式)。 对于我的主终端此段落看起来像这样 (终端尚未登录 mql5 社区): [Common] Login=5116256 ProxyEnable=0 ProxyType=0 ProxyAddress= ProxyAuth= CertInstall=0 NewsEnable=0 NewsLanguages=  

  • 创建四个文件: myconfiguration1.ini, myconfiguration2.ini, myconfiguration3.ini 和 myconfiguration4.ini (MQL5)

  • 编辑这四个文件 (拷贝 [Common] 和独立的 [Tester] 段落) (MQL5)

2.1. common.ini -> original.ini这可能是最简单的代码: 保存路径 "数据文件夹" 和 "公共数据文件夹" 至变量, 并使用 "original.ini" 的值初始化一个变量 string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);    // 数据文件夹的路径 string common_data_path=TerminalInfoString(TERMINAL_COMMONDATA_PATH);// 公共数据文件夹的路径 string original_ini="original.ini";    string arr_common[]; //--- string full_name_common_ini=terminal_data_path+"\\config\\common.ini";     // 文件 common.ini 的完整路径 string full_name_original_ini=common_data_path+"\\Files\\"+original_ini;   // 文件 original.ini 的完整路径 //--- common.ini -> original.ini if(!CopyFileW(full_name_common_ini,full_name_original_ini,false))      {       PrintFormat("引发失败的错误: %x",kernel32::GetLastError());       return(false);      }   使用 Win API 的 CopyFileW 函数拷贝 "common.ini" 配置文件至 "original.ini"。


量化交易软件:交易员生存诀窍若干测试的比较报告的评论 (共 条)

分享到微博请遵守国家法律