EA-149 · 趋势跟踪
ima_expert
该EA基于自定义均线指标(ima)的变化率进行交易。当均线相对变化率超过阈值时做多,低于负阈值时做空,使用固定点数止损和对盈利仓位实施追踪止损。仓位大小根据账户可用保证金和风险参数动态计算。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
暂未回测:这个 EA 还没能自动转换。
策略分析
策略概念是基于自定义均线指标ima的变化率来捕捉趋势动量。入场条件为:当无持仓且新K线形成时,计算ima指标相邻两值的相对变化率k1=(aIMA[0]-aIMA[1])/|aIMA[1]|,若k1≥k则开多单,若k1≤-k则开空单。出场条件包括两个方面:一是追踪止损——当持仓盈利且价格超过take点数时,将止损移动到距当前价格take点数的位置;二是亏损止损——当持仓亏损且亏损点数换算达到drop值时强制平仓。仓位管理采用动态计算,根据账户可用保证金乘以风险比例r再除以drop和tick价值来计算手数,然后向下取整到最小手数倍数,并通过FreeMarginCheck逐步缩减直到保证金充足,同时限制最大手数。资金管理方面使用了风险比例参数r控制每笔交易的风险敞口,但止损逻辑存在严重缺陷——开仓时并未设置实际止损价格(传入0),而是依赖OnTick中实时检测亏损来平仓,这在服务器断连或行情跳空时会导致巨大亏损。
优势
- 动态仓位计算根据账户保证金自动调整,有效控制每笔风险敞口
- 追踪止损机制能锁定盈利,随着价格有利移动不断上移止损
- 使用新K线检测避免同根K线重复开仓,减少过度交易
- 通过FreeMarginCheck验证保证金充足性,增加了一层安全保障
劣势
- 开仓时未设置实际止损价格(sl=0),完全依赖OnTick实时检测亏损平仓,断连或跳空时风险巨大
- 止损逻辑以盈亏金额换算而非点数,在tick价值变化时可能不准确
- 信号标志f_buy/f_sell在开仓后仅通过fdrop()简单清零,但在K线未更新时可能残留旧信号
- 依赖自定义指标ima,若指标不存在则直接返回初始化失败,缺乏容错处理
- 追踪止损逻辑中take同时承担止盈距离和追踪距离的角色,逻辑混淆且缺少TakeProfit设置
改进建议
- 开仓时应直接设置止损价格(将drop转换为价格距离),而非依赖OnTick循环检测,确保服务器端止损生效
- 将追踪止损距离和止盈距离分离为独立参数,并在开仓时设置合理的TakeProfit价格
- 增加spread过滤机制,避免在高点差时段开仓,提升成交质量
风险评估
总体风险: 高风险
- 开仓时止损为0,完全依赖客户端OnTick检测平仓,服务器端无保护
- 追踪止损仅在持仓盈利时生效,亏损时无服务端止损保护
- 信号标志可能跨tick残留导致意外开仓
评估得分
代码质量2.0
策略逻辑3.0
风险管理1.0
稳健性2.0
创新性2.0
文档1.0
综合1.8
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
n | 5 | 均线周期 |
take | 50 | 止盈/追踪止损点数 |
drop | 1000 | 止损点数阈值 |
k | 0.5 | 信号阈值(均线变化率触发水平) |
r | 0.01 | 风险比例(可用保证金的1%) |
max_lots | 1 | 最大手数限制(0表示不限) |
同类 EA:趋势跟踪
回测是历史模拟,不代表未来收益,不构成投资建议。