分享一个胜率50%盈亏比1.9的ea

avatar
· 阅读量 140

# 智能切换策略EA(SmartSwitchEA)介绍文档

## 一、EA核心定位

SmartSwitchEA 是一款基于 MT5 平台的自动化交易程序,核心优势在于**自动识别市场状态(趋势/震荡)并动态切换交易策略**,通过多指标共振过滤信号,适配不同行情环境,同时内置严格的交易风控规则,实现稳健自动化交易。


## 二、核心交易策略

### 1. 市场状态识别逻辑

EA 通过三大维度综合判断市场类型,避免单一指标误判:

- **均线粘合度**:计算 MA5(快速)、MA10(中期)、MA20(慢速)三条均线的最大价差与当前价格的比例,比例越小说明市场越平稳。

- **布林带宽度**:通过布林带(周期20,标准差2)上下轨间距与中轨的比值,衡量价格波动幅度,比值越小震荡特征越明显。

- **MACD趋势强度**:以 MACD(快线12、慢线26、信号线9)主线与信号线的差值绝对值,判断趋势动能强弱。


**市场状态判定规则**:

| 市场类型 | 判定条件 | 适配策略 |

|----------|----------|----------|

| 震荡市 | 均线粘合度<0.15%(趋势阈值)且布林带宽度<1% | 均值回归策略 |

| 趋势市 | 均线粘合度>0.3%(2倍趋势阈值)且 MACD 强度>0.0005 | 趋势跟踪策略 |

| 未知状态 | 不满足上述两类条件 | 保持当前策略,暂停新信号触发 |


### 2. 分场景交易策略

#### (1)均值回归策略(震荡市专用)

- 核心逻辑:价格在震荡区间内会围绕均值(布林带中轨)波动,偏离均值过远时大概率回归。

- 开仓信号:

  - 做多:价格触及布林带下轨 RSI(周期14)<30(超卖) 价格低于 BBI 指标(3、6、12、24周期均线均值)。

  - 做空:价格触及布林带上轨 RSI>70(超买) 价格高于 BBI 指标。


#### (2)趋势跟踪策略(趋势市专用)

- 核心逻辑:跟随当前趋势方向交易,捕捉趋势延续行情,不逆势操作。

- 开仓信号:

  - 做多:均线多头排列(MA5>MA10>MA20) MACD 金叉(主线>信号线) 价格在 BBI 之上。

  - 做空:均线空头排列(MA5<MA10<MA20) MACD 死叉(主线<信号线) 价格在 BBI 之下。


### 3. 交易风控过滤规则

- 仓位控制:固定手数交易(默认0.1手,可手动调整)。

- 频率控制:两次交易间隔≥1小时,避免频繁开仓;当前有未平仓订单时,暂停新仓触发。

- 环境过滤:仅在点差≤30点、主要交易时段(1-23点)、服务器及品种允许交易的情况下执行操作。



代码这里,mt5 



## 三、关键参数设置

| 参数类别 | 核心参数 | 默认值 | 功能说明 |

|----------------|-------------------------|--------------|------------------------------|

| 趋势判断参数 | MA_Period1/2/3 | 5/10/20 | 三条均线周期,用于趋势识别 |

| 趋势判断参数 | TrendThreshold | 0.0015(0.15%) | 均线粘合度阈值,区分趋势/震荡 |

| 布林带参数 | BB_Period/BB_Deviation | 20/2 | 布林带周期及标准差,衡量波动 |

| MACD 参数 | FastEMA/SlowEMA/SignalSMA | 12/26/9 | MACD 指标标准参数,判断动能 |

| 交易参数 | LotSize | 0.1 | 固定交易手数 |

| 交易参数 | StopLossRatio | 0.02(2%) | 止损比例(基于当前价格) |

| 交易参数 | TakeProfitRatio | 0.04(4%) | 趋势策略止盈比例 |

| 交易参数 | MaxSpread/Slippage | 30/10 | 最大允许点差、滑点容忍度 |


## 四、止盈止损规则

### 1. 止损设置

- 统一规则:按当前价格的固定比例计算,与策略类型无关。

- 计算公式:

  - 做多止损 = 当前价格 × (1 - 止损比例)

  - 做空止损 = 当前价格 × (1 止损比例)

- 示例:当前价格1.2000,止损比例2%,则做多止损=1.2000×0.98=1.1760,做空止损=1.2000×1.02=1.2240。


### 2. 止盈设置

- 趋势跟踪策略:按当前价格的固定比例计算(默认4%),计算公式:

  - 做多止盈 = 当前价格 × (1 止盈比例)

  - 做空止盈 = 当前价格 × (1 - 止盈比例)

- 均值回归策略:固定以布林带中轨为止盈目标(价格回归均值时平仓)。


## 五、核心代码逻辑概览

### 1. 核心流程

```mql5

// 1. 初始化:创建均线、布林带、MACD、RSI 等指标句柄

int OnInit() { ... }


// 2. 每Tick触发:检查交易条件→更新市场状态→执行对应策略

void OnTick() {

    if(!IsTradingAllowed()) return; // 过滤无效交易环境

    UpdateMarketState(); // 识别市场状态(趋势/震荡)

    ExecuteTradingLogic(); // 执行对应策略

}


// 3. 市场状态识别:综合均线、布林带、MACD 指标判断

void UpdateMarketState() { ... }


// 4. 策略执行:根据市场状态切换均值回归/趋势跟踪策略

void ExecuteTradingLogic() {

    if(当前策略为均值回归) ExecuteMeanReversion();

    if(当前策略为趋势跟踪) ExecuteTrendFollowing();

}

```


### 2. 关键函数说明

- `UpdateMarketState()`:核心市场识别函数,输出均线粘合度、布林带宽度、MACD强度等关键数据。

- `ExecuteMeanReversion()`:均值回归策略执行函数,包含多空信号判断、止盈止损计算、开仓逻辑。

- `ExecuteTrendFollowing()`:趋势跟踪策略执行函数,逻辑与上述函数一致,仅信号条件和止盈规则不同。

- `IsTradingAllowed()`:交易环境检查函数,过滤点差过大、非交易时段等无效场景。

风险提示:本文所述仅代表作者个人观点,不代表 Followme 的官方立场。Followme 不对内容的准确性、完整性或可靠性作出任何保证,对于基于该内容所采取的任何行为,不承担任何责任,除非另有书面明确说明。

喜欢的话,赞赏支持一下
avatar
回复 0

加载失败()

  • tradingContest