EA策略详细逻辑说明
专业的网格交易系统,通过严格的风险控制和动态参数调整实现稳定盈利
核心交易机制
网格交易系统
挂单策略
- 📈 现价上方挂卖单(OP_SELLSTOP)
- 📉 现价下方挂买单(OP_BUYSTOP)
- 🎯 网格间距根据账户状态动态调整
双参数集系统
bool useSecondParams = (Money != 0 && totalProfit <= Money);
参数类型 | FirstStep | Step | MinDistance |
---|---|---|---|
正常参数 | 60点 | 150点 | 120点 |
亏损参数 | - | 1800点 | 1500点 |
⚠️ 当总亏损 ≤ -5亿时自动激活亏损参数
订单管理逻辑
1. 首单规则
买单
价格 = Ask + FirstStep
限制:价格 < On_top_of_this_price_not_Buy_order
卖单
价格 = Bid - FirstStep
限制:价格 > On_under_of_this_price_not_Sell_order
2. 后续订单规则
price = (type == OP_BUYSTOP) ?
Ask + (useSecondParams ? Step : TwoStep) * Point() :
Bid - (useSecondParams ? Step : TwoStep) * Point();
3. 手数计算系统
lots = NormalizeDouble(lot * MathPow(K_Lot, orderCount) + orderCount * PlusLot, DigitsLot);
- 📊 指数增长:初始手数 × (增长系数^订单数量)
- ➕ 线性增长:+ 订单数量 × 额外手数
- 🛡️ 上限控制:不超过 Maxlot
平仓条件(优先级从高到低)
1. 全平条件
条件 | 参数值 | 说明 |
---|---|---|
总盈利 ≥ CloseAll | 2 | 达到目标盈利 |
总亏损 ≤ StopLoss | 0 | 触发止损 |
总亏损 ≤ MaxLossCloseAll | -1 | 最大亏损保护 |
2. 单方向平仓
if(buyProfit > StopProfit * (buyOrders>0 ? buyOrders : 1))
CloseOrders(OP_BUY);
当买单或卖单总盈利超过 StopProfit × 订单数量时,平仓对应方向所有订单
3. 仓位失衡平仓
if(buyProfit>0 && buyLots > sellLots*3 && buyOrders>3)
CloseOrders(OP_BUY);
当某方向手数超过对手方向3倍且有盈利时,平仓该方向订单以平衡仓位
挂单管理
挂单条件
- 无同方向挂单存在
- 方向总亏损 > MaxLoss (-50000)
- 在交易时间窗内(Limit_StartTime - Limit_StopTime)
挂单修改机制
if(type == OP_BUYSTOP &&
currentPrice - StepTrallOrders*Point() > newPrice &&
newPrice <= oppositePrice - distance*Point())
{
OrderModify(...);
}
当价格不利变动超过 StepTrallOrders (30点) 时自动调整挂单位置
时间控制系统
双层时间过滤
bool eaActive = (currentTime在EA_StartTime和EA_StopTime之间);
bool limitActive = (currentTime在Limit_StartTime和Limit_StopTime之间);
EA运行时间窗
控制EA是否激活
交易时间窗
控制是否允许挂单
✅ 完整支持跨午夜时间(如23:00-01:00)
开单模式
A模式
每根K线(TimeZone周期)只开单一次
C模式
满足条件立即开单
安全保护机制
前置检查
if(!eaActive ||
AccountLeverage() < Leverage ||
!IsTradeAllowed() ||
OrdersTotal() >= Totals ||
MarketInfo(Symbol(), MODE_SPREAD) > MaxSpread ||
AccountEquity() < MinEquity)
{
return;
}
检查项 | 要求 | 当前状态 |
---|---|---|
账户杠杆 | ≥ 100 | 通过 |
点差 | ≤ 35点 | 通过 |
账户净值 | ≥ 10 | 通过 |
总订单数 | < 5000 | 通过 |
资金保护
if(lots*2 > AccountFreeMargin()/MarketInfo(Symbol(), MODE_MARGINREQUIRED))
return;
确保账户有足够的可用保证金进行交易,防止爆仓风险
策略执行流程
开始
→
时间检查
→
统计持仓数据
→
盈利检查
挂单检查
→
价格限制检查
→
发送挂单
→
结束
策略核心优势
该策略通过严格的网格管理、动态参数调整和多层保护机制,在控制风险的同时实现稳定的网格交易。
核心优势在于亏损状态自动扩大网格间距的独特设计,以及复合仓位增长模型,
特别适合震荡行情交易。