EA-49615 · 辅助工具
Get_Last_Nth_Close_Trade
该EA扫描账户历史中的所有已平仓交易,可按交易品种和魔术号进行过滤,按平仓时间排序后在图表上显示第N笔最近已平仓交易的详细信息。它是一个只读工具,不执行任何开仓或仓位管理操作。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
暂未回测:这个 EA 还没能自动转换。
策略分析
该EA并非交易策略,而是一个历史交易查询工具。它通过遍历MT5的HistoryDeals来获取已平仓交易信息,使用DEAL_ENTRY_OUT筛选出场交易,使用DEAL_ENTRY_IN匹配对应的开仓价格和开仓时间。支持通过ENABLE_SYMBOL_FILTER和ENABLE_MAGIC_NUMBER两个布尔开关进行交易品种和魔术号过滤。排序采用冒泡排序按平仓时间降序排列,然后根据用户指定的TRADE_INDEX索引提取对应的交易详情。仓位管理和资金管理均不涉及,因为该EA纯粹是信息展示工具。整体逻辑清晰但存在性能隐患,如每次Tick都重复扫描全部历史记录且使用O(n²)排序算法。
优势
- 支持按交易品种和魔术号灵活过滤,适配多策略场景
- 结构体设计合理,完整记录了已平仓交易的关键信息包括开仓价、平仓价、止损、止盈、盈亏等
- 通过DEAL_ENTRY_IN反向匹配开仓信息,确保获取完整的开仓价和开仓时间数据
劣势
- 每Tick都执行完整历史扫描和排序,在交易历史较多时会造成严重性能问题
- 使用冒泡排序O(n²)算法,对大量历史交易效率极低
- 全局结构体orderHistoryDetails仅保存单条记录,无法同时保留多条查询结果,且OnTick中无条件执行查询缺乏节流控制
- 第二次遍历历史记录匹配开仓信息时缺少break优化,找到匹配后仍继续遍历剩余记录
改进建议
- 添加新Bar检测或定时器机制,避免每Tick重复计算,大幅提升性能
- 将冒泡排序替换为标准库排序或将历史记录按时间倒序直接利用HistorySelect的有序性避免排序
- 第二次遍历匹配开仓信息时,为每个position_ticket找到匹配后立即break跳出内循环以减少不必要的迭代
风险评估
总体风险: 安全
- 该EA为只读工具,不执行任何交易操作,无资金风险
- 频繁的历史扫描在高交易量账户上可能导致终端卡顿或CPU占用过高
评估得分
代码质量2.0
策略逻辑1.0
风险管理5.0
稳健性2.0
创新性1.0
文档2.0
综合2.2
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
ENABLE_MAGIC_NUMBER | false | 是否启用魔术号过滤 |
ENABLE_SYMBOL_FILTER | false | 是否启用交易品种过滤 |
MAGICNUMBER | 1234 | 用于过滤的魔术号 |
TRADE_INDEX | 2 | 要查询的已平仓交易索引(从最新开始) |
同类 EA:辅助工具
回测是历史模拟,不代表未来收益,不构成投资建议。