mogo123 发表于 2025-7-1 10:07:10

【高级趋势挂单 EA — 重构版 】挂单一单一结

# EA交易策略文档 ## 1. 总体功能和设计思路 ### 1.1 核心交易逻辑- 利用1小时周期的EMA均线判断趋势方向(上涨或下跌)- 使用ATR(平均真实波幅)计算挂单的合理价格范围(根据当前波动率动态调整挂单距离)- 在符合趋势方向且无同类型订单时,挂买入止损单(Buy Stop)或卖出止损单(Sell Stop) ### 1.2 订单管理功能- **挂单管理**:超时且价格偏移较大时自动修改挂单价格- **仓位管理**:支持跟踪止损,动态调整止损价位锁定利润 ### 1.3 风险管理- 支持自动手数计算,根据账户余额和风险偏好自动调整手数- 挂单和止损点数均可配置- 时间过滤,限定EA交易时间 ## 2. 主要输入参数 ### 2.1 基本参数| 参数名 | 类型 | 说明 ||--------|------|------|| magicNumber | int | 订单标识,确保只操作本EA下的订单 || FixedLot | double | 固定手数(当不开自动手数时) | ### 2.2 自动手数设置| 参数名 | 类型 | 说明 ||--------|------|------|| UseAutoLot | bool | 是否启用自动手数计算 || LotMode | enum | 手数模式:激进、适中、保守三档 | ### 2.3 止损止盈设置| 参数名 | 类型 | 说明 ||--------|------|------|| SL_Points | int | 止损点数 || TP_Points | int | 止盈点数 || Trigger_Step | int | 挂单价格与当前价的间距(点数) | ### 2.4 时间控制| 参数名 | 类型 | 说明 ||--------|------|------|| StartHour | int | 交易开始时间(小时制) || EndHour | int | 交易结束时间(小时制) | ### 2.5 技术指标参数| 参数名 | 类型 | 说明 ||--------|------|------|| MAPeriod | int | EMA均线周期 || ATR_Period | int | ATR计算周期 || ATR_Multiplier | double | ATR乘数因子 | ### 2.6 高级设置| 参数名 | 类型 | 说明 ||--------|------|------|| UseTrailingStop | bool | 是否启用跟踪止损 || TSL_StepPoints | int | 跟踪止损移动步长 || MaxPendingPriceMovePoints | int | 挂单价格最大偏差点数 | ## 3. 关键函数解析 ### 3.1 OnInit()- 初始化最小手数和手数步长- 计算DigitsMultiplier处理3、5位小数的货币对- 读取当前1小时ATR值(供初始使用)- 初始化缓存数组lastModifyTime用于控制挂单价格修改频率 ### 3.2 OnTick()1. 时间判断:检查是否在允许交易时间段内2. 指标计算:   - 计算最新ATR和EMA均线   - 判断趋势方向(上涨或下跌)3. 价格计算:根据ATR和ATR_Multiplier计算买卖挂单触发价格4. 订单管理:   - 调用ManageExistingOrders管理当前所有订单   - 调用TryPlacePending尝试挂新单 ### 3.3 ManageExistingOrders()- **持仓单处理**:应用跟踪止损(如果启用)- **挂单处理**:- 检查挂单时间是否超过5分钟- 检查价格偏差是否超过阈值- 检查距离上次修改是否超过10分钟- 满足条件则修改挂单价格 ### 3.4 TryPlacePending()1. 趋势判断:确认当前趋势方向2. 订单检查:确保无同类型挂单或持仓单3. 挂单执行:   - 计算触发价格   - 设置止损止盈(基于SL_Points和TP_Points)   - 通过NormalizeLot()计算手数   - 执行挂单操作 ### 3.5 NormalizeLot()- **自动手数模式**:- 根据账户余额和风险模式计算手数- 计算公式:账户余额/(基数*1000),基数为10、20或30- **固定手数模式**:使用FixedLot值- 确保手数符合平台最小手数和步长要求 ### 3.6 ApplyTrailingStop()- **买单处理**:- 新止损价 = 当前Bid价格 - TSL_StepPoints- 仅当价格上涨且新止损价高于旧止损价时修改- **卖单处理**:- 新止损价 = 当前Ask价格 + TSL_StepPoints- 仅当价格下跌且新止损价低于旧止损价时修改 ### 3.7 ModifyPendingOrder()- 重新计算挂单价格、止损和止盈价格- 执行订单修改操作- 输出操作结果日志 ### 3.8 CountActiveOrders()- 统计当前指定类型的订单数量- 仅计算本EA和当前品种的订单 ## 4. 代码特点与优缺点分析 ### 4.1 优势特点- **动态适应性**:- 使用ATR动态调整挂单距离- 自动手数管理适应不同账户规模- **完善的管理机制**:- 挂单超时自动修正- 跟踪止损保护利润- **风险控制**:- 多种风险模式可选- 交易时间段限制 ### 4.2 潜在改进点 #### 数据结构优化- 当前lastModifyTime数组可能浪费内存- 建议改用映射结构或只存储有效挂单时间 #### 功能增强- 增加挂单修改频率参数化- 添加订单失败重试机制- 实现多重趋势确认(增加指标)- 扩展多周期分析能力 #### 风险控制强化- 添加显式风控模块:- 最大单日亏损限制- 账户风险控制- 完善滑点处理机制- 验证不同经纪商点值计算方式 ## 5. 总结 本EA实现了一个基于趋势跟随和ATR波动率调整的自动交易策略,具有以下核心价值: 1. **智能挂单系统**:结合趋势判断和波动率分析,实现动态价格调整2. **全自动管理**:从挂单到平仓的完整生命周期管理3. **灵活配置**:支持多种风险偏好和交易时段设置4. **代码质量**:结构清晰,可读性好,易于二次开发
欢迎大家下载测试。如果对源码感兴趣,可以找我

峰行天下 发表于 2025-7-1 10:12:56

先收藏,有机会下载

shao 发表于 2025-7-1 11:19:21

实盘啥样

kerrceo 发表于 2025-7-1 12:12:52

最后的活跃点了

kerrceo 发表于 2025-7-1 12:28:43

回测可以,但实盘提示:2025.07.01 12:27:52.890        高级趋势挂单 EA— 重构版XAUUSD,M5: 挂买单失败,错误码:4107
作者,用不了啊,修复以下~~~

mogo123 发表于 2025-7-1 13:16:46

kerrceo 发表于 2025-7-1 12:28
回测可以,但实盘提示:2025.07.01 12:27:52.890        高级趋势挂单 EA— 重构版XAUUSD,M5: 挂买单失 ...

我看看。。。。

kerrceo 发表于 2025-7-1 13:22:47

mogo123 发表于 2025-7-1 13:16
我看看。。。。

辛苦了,等你好消息

ww1011 发表于 2025-7-2 06:20:45

厉害[啤酒]

mogo123 发表于 2025-7-2 11:24:25

不开单的问题已经找到,并且修改,稍后会再次发出

ecso 发表于 2025-7-2 18:40:31

有实盘观摩号吗

renguofan 发表于 2025-7-2 19:45:07

这款怎么样 效果可以吗

w12343 发表于 2025-7-2 23:26:26

p评委会暴死的挂单间距太小l

macau04 发表于 2025-7-3 19:55:42

mogo123 发表于 2025-7-2 11:24
不开单的问题已经找到,并且修改,稍后会再次发出

更新了嗎?

huweizuiai 发表于 2025-7-4 15:13:32

有测试的吗?结果咋样

erixx9 发表于 2025-7-22 11:50:06

这是什么

wth642 发表于 2025-8-12 15:03:25

先收藏,有机会下载!

wongzq 发表于 2025-12-3 23:29:01

收藏了,谢谢分享

lhb112010 发表于 2026-2-13 02:42:50

收藏了,谢谢分享..

yjb103940 发表于 2026-2-13 09:25:28

还能用吗现在下载

sunny2015 发表于 2026-9-25 14:07:34

一单一次
页: [1]
查看完整版本: 【高级趋势挂单 EA — 重构版 】挂单一单一结