该库允许您读/写 tst 文件 - MT5-Tester 单程格式。
使用的一些变体
MetaTrader 5 平台 beta 版本 2155:MQL5 中的可见性领域、策略测试器的全球更新和内置托管
fxsaber, 2019.10.04 07:18 pm.
如果打开 tst 文件格式并将测试器的缓存文件夹放入沙盒,就有可能创建新类型的 Market 产品,作为测试器结果的分析器/校正器。
例如,可以编写一个 Market-combine,显示缓存中所有可用的单次通过。
- 您只需用鼠标选择所需的数据,它就会显示综合统计数据。
- 它可以清除缓存中不必要的单次交易。
- 用适当的加权系数计算出最佳投资组合。
- 显示每次交易的最佳交易时间间隔。
- 提供自己的交互式可视化统计数据,包括过滤器。
- 计算最佳 MM。
- 显示历史上每个对冲头寸的 OrderOpenPriceBest(头寸有效期内的最佳开仓价)、OrderClosePriceBest(类似)、OrderOpenPriceLength(头寸有效期内价格不低于 OrderOpenPrice 的时间长度)、OrderClosePriceLength(类似)、OrderProfitBest(原始头寸有效期内类似头寸的最高利润)。
- 显示每个对冲头寸的效率。
- 计算启用延迟时的结果。
- 计算不同订单执行 设置(是否滑动等)和佣金下的结果。
- 在不同的跳动历史上显示 TS 的结果。
- ...
您不需要启动测试器来执行每个项目。
如果通过 mklink 将缓存文件夹放入沙盒,现在就可以完成所有这些操作。您只需要 tst-format。
谁觉得自己有实力,谁就应该开始编写这样的产品。我很乐意加入开发团队并购买它。这个市场完全空白。
如果不对 cache-folder 进行沙盒化处理,那么类似产品出现在 MQ 生态系统之外的可能性就会增加,因为它们将是用其他语言编写的。
#include <fxsaber\SingleTesterCache\SingleTesterCache.mqh> // 测试人员的单程数据。 void OnStart() { SINGLETESTERCACHE SingleTesterCache; // 创建一个测试器缓存对象。 SingleTesterCache.Set(); // 把竞标的真实情况写进去。 // .\.\.MQL5\Files/Test.tst. Print(SingleTesterCache.Save("Test.tst")); // 将其写入可导入测试器的文件。 }
该脚本将真实账户的交易历史记录整理成 tst 格式。导入测试器的方式如下。
结果是这样的
DLL 解决方案不能放在 KB 中,因此下面是另一个脚本的源代码,它不包含在 KB 中。
#include <fxsaber\SingleTesterCache\SingleTesterCache.mqh> // 测试人员的单程数据。 #include <Graphics\Graphic.mqh> #include <fxsaber\MultiTester\MTTester.mqh> //https://www.mql5.com/zh/code/26132 #define MIN_WIDTH 10 // 创建图形。 string GraphPlot( const double &Y1[], const double &Y2[], int Width = 0, int Height = 0, const ENUM_CURVE_TYPE Type = CURVE_NONE, const string CurveName1 = NULL, const string CurveName2 = NULL, string ObjName = NULL ) { Width = Width ? Width : (int)::ChartGetInteger(0, CHART_WIDTH_IN_PIXELS); Height = Height ? Height : (int)::ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS); ObjName = (ObjName == NULL) ? __FUNCTION__ : ObjName; CGraphic Graphic; const bool Res = (::ObjectFind(0, ObjName) >= 0) ? Graphic.Attach(0, ObjName) : Graphic.Create(0, ObjName, 0, 0, 0, Width, Height); if (Res) { const int Size1 = ::ArraySize(Y1); const int Size2 = ::ArraySize(Y2); Graphic.CurveAdd(Y1, ((Type == CURVE_NONE) && Size1) ? ((Width / Size1 < MIN_WIDTH) ? CURVE_LINES : CURVE_POINTS_AND_LINES) : Type, CurveName1); Graphic.CurveAdd(Y2, ((Type == CURVE_NONE) && Size2) ? ((Width / Size2 < MIN_WIDTH) ? CURVE_LINES : CURVE_POINTS_AND_LINES) : Type, CurveName2); Graphic.CurvePlotAll(); Graphic.Update(); } return (Res ? Graphic.ChartObjectName() : NULL); } void OnStart() { uchar Bytes2[]; if (MTTESTER::GetLastTstCache(Bytes2) != -1) // 如果可以读取单次运行的最后一条缓存记录 { const SINGLETESTERCACHE SingleTesterCache(Bytes2); // 将其驱动到相应的对象中。 SingleTesterCache.SaveSet(NULL, true, "Created by " + __FILE__); // 保存包含详细信息的设置文件。 double Balance[]; double Equity[]; // 打印余额和权益图表。 if (SingleTesterCache.GetBalance(Balance) && SingleTesterCache.GetEquity(Equity)) GraphPlot(Balance, Equity, 1200, 500, CURVE_NONE, "Balance", "Equity"); Print(SingleTesterCache.Header.ToString()); // 输出单次传递的页眉。 Print(SingleTesterCache.Summary.ToString()); // Statistica. Print(SingleTesterCache.Inputs); // 输入参数。 } }
该脚本将自动获取最后一次单程的数据并输出其数据,包括平衡/权益图。
鸣谢。
感谢开发人员创建 Tester 缓存并帮助我解压其格式。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/27611

趨勢均衡指標 TrendEQ 透過結合動量和波動性來動態分析市場趨勢。透過根據市場走勢衡量動量,TrendEQ 提供了趨勢強度和方向的可靠衡量標準。

这是一个辅助止盈止损工具,它可以帮助你严格止损,动态止盈。已更新