Order Type Ledger
- 实用工具
- 版本: 1.0
- 激活: 10
Order Type Ledger 读取的是本账户的挂单历史——而不是成交历史,统计的是每一笔发出的订单最终发生了什么。它不预测,也不建议。它从不查看交易结果,只统计结果类型:已成交、已取消、已过期、已拒绝。
为什么需要它:大多数交易工具只回顾已经成交的交易。一笔未被触及就过期的限价单、一笔被拒绝的止损单、一笔等了好几个小时才成交的订单——这些都不会出现在成交历史汇总中,因为它们从未成为一笔交易。订单历史标签会把它们一条条列出,但没有人把它们加总。"上个月挂出的限价单中有37%从未成交"——这是这个账户已经拥有的事实,只是从来没有被统计过。
设置步骤:
1. 将该EA拖到任意图表上。品种和周期都无关紧要——它读取的是账户的整个挂单历史,而不仅仅是它所运行的那张图表。
2. 面板出现在左上角,并根据本账户自身的挂单历史逐步填充。
3. 只有当订单数量发生变化时才会重新计算,检测周期为每60秒一次。不需要启动或配置任何东西。
4. 不需要其他任何操作。没有需要调整的数值设置。
输入参数(共四项,按此顺序):
InpShowPanel(默认 true)——显示或隐藏面板。
InpPanelCorner(默认左上角)——面板显示在图表四个角中的哪一个。
InpPanelFontSize(默认 9)——面板文字大小,仅影响显示。
InpColorText(默认白色)——面板文字颜色。
没有任何数值阈值设置。365天的统计窗口、每60秒的重新检测、以及计算中位数所需的最小样本量,全部是固定值,无法更改。
面板显示的内容:最近365天内的每一笔订单,会按类型归入四个分组之一——Market、Limit、Stop、Stop-Limit——并按结果统计:Filled、Cancelled、Expired、Rejected。每个分组旁边的 Unfilled 显示未成交的比例(取消、过期或被拒绝的数量,除以该分组的总数;部分成交的订单计入已成交一侧)。样本少于5笔的分组不显示百分比,而是显示一条短横线——样本太小,不足以说明问题。
下方的 Median wait to fill 显示已成交订单从下单到成交之间通常等待的时间,Market订单和Pending订单(Limit、Stop、Stop-Limit合并计算)是分开计算的,因为两者的时间尺度完全不同。市价单通常在不到一秒内成交,而挂单可能要等待数小时甚至数天。把两者混在一起会让中位数失去意义。如果该类别中已成交的订单少于5笔,则两个数值都会显示短横线。
报告文件:每次检测到的结果都会写入一个CSV文件,路径为 MQL5\Files\OrderTypeLedger\order_report.csv,按月份、品种和订单分组细分,列为 Month, Symbol, OrderGroup, State, Count, MedianWaitSeconds。该文件每次都会被完整重写,而不是追加,因此不会出现重复内容。文件的完整路径会显示在面板上。
测试之前须知:策略测试器只拥有那一次测试运行期间的挂单历史,因此测试器中显示的内容反映的是测试期间的情况,而不是本账户真实的挂单历史。它有助于确认EA能够无错误运行,但不能把其中的数字当作真实账户数据来解读。
它不会做的事:它绝不会下单、平仓或修改订单——它与终端的交易部分完全没有连接。它在任何地方都不使用交易结果——只使用订单的类型、状态、品种和时间。它不会说明订单为什么被拒绝或过期——经纪商的理由并不总是可以获取,统计的只是终端实际记录下来的内容。它不会把不同品种相互比较,也不会建议改变你下单的方式。它只读取一个终端上的一个账户,能追溯的范围仅限于该账户自身挂单历史所能覆盖的区间。
