EA-57676 · 辅助工具
WithdrawalTracker
WithdrawalTracker是一个工具型EA,通过监控账户余额变化来检测外部提现操作。当检测到提现时,它会自动更新存储的初始保证金全局变量,以便其他EA使用新的账户余额。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
暂未回测:这个 EA 还没能自动转换。
策略分析
该EA并非交易策略,而是一个账户监控工具。它通过5秒定时器持续追踪账户余额变化,核心逻辑是比较当前余额与预期余额的差异来判断是否发生提现。入场条件不适用,因为它不执行任何交易操作。出场条件同样不适用。仓位管理不涉及,EA不进行任何开仓或平仓。资金管理方面,它通过MT5全局变量存储初始保证金值,并在检测到提现后自动重置该值为当前余额,使得依赖该全局变量的其他EA能正确计算利润。检测逻辑依赖比较实际余额与预期余额(上次余额+交易利润)的差值,差值为负则判定为提现。
优势
- 自动检测账户提现并更新初始保证金值,减少手动维护工作
- 使用MT5全局变量存储数据,EA重启后数据不丢失
- 通过比较交易利润与余额变化来区分正常交易盈亏和外部提现,逻辑合理
劣势
- 条件判断语句存在逻辑错误:if(!NormalizeDouble(...) != NormalizeDouble(...))运算符优先级错误,!先作用于第一个值而非整组比较
- 仅检测提现(负变化),不处理存款(正变化)情况,功能不完整
- 5秒轮询频率可能在高频交易环境下错过中间状态变化,且消耗不必要的资源
改进建议
- 修复运算符优先级错误,应改为if(NormalizeDouble(currentBalance,2) != NormalizeDouble(LastBalanceChecked,2))
- 增加对存款(正向非交易余额变化)的检测和处理逻辑
- 使用OnTradeTransaction事件驱动替代定时器轮询,提高响应效率并减少资源消耗
风险评估
总体风险: 安全
- 运算符优先级错误导致余额变化检测逻辑可能异常,!操作符先作用于NormalizeDouble返回值而非整体比较表达式
- 全局变量名基于账户登录ID但未考虑多EA实例在同一账户运行的命名冲突
评估得分
代码质量2.0
策略逻辑3.0
风险管理4.0
稳健性2.0
创新性2.0
文档1.0
综合2.3
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
EventSetTimer interval | 5 | 定时器间隔(秒),控制余额检查频率 |
MyInitialDeposit | 动态生成 | 全局变量名,格式为myDeposit_+账户登录ID |
LastBalanceChecked | 0 | 上次检查时的账户余额 |
lastDealId | 0 | 上次检查时最后一笔交易的ID |
同类 EA:辅助工具
回测是历史模拟,不代表未来收益,不构成投资建议。