EA-51877 · 辅助工具

Maximum Trade Volume

这是一个工具型EA,在图表上显示一个对话框面板,展示基于当前可用保证金的最大可开仓手数,包括买入、卖出、挂单买入和挂单卖出四种情况。它本身不执行任何交易,仅计算并向交易者展示基于保证金的仓位信息。

打开交互版(权益曲线、切换品种)

基本信息

风险安全
评分★★☆☆☆
类型辅助工具
周期M1, M5, M15, M30, H1, H4, D1, W1, MN
指标—
作者—

回测结果(H1,约 1 年)

暂未回测:这个 EA 还没能自动转换。

策略分析

该EA并非交易策略,而是一个保证金计算工具。其核心概念是根据账户可用保证金和当前市场价格,计算各订单类型(买入、卖出、挂单买入、挂单卖出)的最大可开仓手数。入场条件和出场条件不适用于此工具,因为它不执行交易。仓位管理方面,它使用OrderCalcMargin函数计算1手所需保证金,然后用可用保证金除以每手保证金得出最大手数,并通过MathFloor向下取整到合法步长。资金管理方面,它使用AccountInfoDouble(ACCOUNT_MARGIN_FREE)获取可用保证金作为计算基础,并使用SymbolInfoDouble获取品种的最小手数、最大手数和手数步长进行规范化。然而,该工具存在一个严重BUG:在LotCheckPendingBuy和LotCheckPendingSell中使用了'||'运算符连接两个订单类型枚举值,这会执行按位或运算产生无效的枚举值,而非逻辑选择。此外,计算结果未与SYMBOL_VOLUME_MAX上限做比较,可能返回超过经纪商允许的最大手数。

优势

  • 提供直观的GUI面板显示各订单类型的最大可开仓手数,方便交易者快速决策
  • 使用了OrderCalcMargin函数进行保证金计算,这是MQL5官方推荐的计算方式,准确性较高
  • 手数规范化处理考虑了最小手数和手数步长,避免出现不合法的下单手数
  • 覆盖了买入、卖出、挂单买入、挂单卖出四种常见订单类型,信息全面

劣势

  • LotCheckPendingBuy和LotCheckPendingSell中使用'||'运算符连接枚举值,执行的是按位或运算而非逻辑选择,产生无效的OrderCalcMargin调用
  • 计算的最大手数未与SYMBOL_VOLUME_MAX做上限比较,可能返回超过经纪商允许的最大手数
  • 对话框中显示的数值只在面板创建时计算一次,不会随行情或保证金变化自动更新
  • static关键字在lotSize变量上的使用没有必要,且所有四个LotCheck函数逻辑高度重复,未做代码复用
  • 定时器功能(pause变量)被创建但未实际用于任何逻辑,属于无用代码

改进建议

  • 修复OrderCalcMargin调用中的枚举值BUG:挂单买入应使用ORDER_TYPE_BUY_STOP,挂单卖出应使用ORDER_TYPE_SELL_STOP(或分别计算两种挂单类型)
  • 添加SYMBOL_VOLUME_MAX上限检查,确保计算结果不超过经纪商允许的最大手数
  • 实现定时器驱动的自动刷新功能,利用已有的OnTimer和pause变量定期更新面板显示的数值
  • 将四个重复的LotCheck函数重构为一个带参数的通用函数,减少代码冗余

风险评估

总体风险: 安全

  • 挂单保证金计算使用了按位或产生的无效枚举值,OrderCalcMargin可能返回错误结果,导致显示的最大手数不准确
  • 未与SYMBOL_VOLUME_MAX做上限比较,显示值可能误导交易者尝试下超出限制的订单

评估得分

代码质量2.0
策略逻辑1.0
风险管理3.0
稳健性2.0
创新性2.0
文档1.0
综合1.8

参数

参数默认值说明
INDENT_LEFT11左侧缩进像素值
INDENT_TOP11顶部缩进像素值
INDENT_RIGHT11右侧缩进像素值
INDENT_BOTTOM11底部缩进像素值
CONTROLS_GAP_X5控件水平间距像素值
CONTROLS_GAP_Y5控件垂直间距像素值
BUTTON_WIDTH100按钮宽度像素值
BUTTON_HEIGHT20按钮高度像素值
EDIT_HEIGHT20编辑框高度像素值
GROUP_WIDTH150分组宽度像素值
LIST_HEIGHT179列表高度像素值
RADIO_HEIGHT56单选框高度像素值
CHECK_HEIGHT93复选框高度像素值
pausetrue暂停标志,定时器切换状态

同类 EA:辅助工具

回测是历史模拟,不代表未来收益,不构成投资建议。

订阅每周 Arena 周报

每周一封邮件:排名变化、新信号和新研究。不发垃圾邮件,随时可以退订。