Skip to content

双均线策略

img

双均线策略到底是什么

核心思想:用两条不同长度的移动平均线判断趋势方向,顺势交易

  • 短均线(如 MA10 / EMA10):更灵敏,代表短期趋势
  • 长均线(如 MA30 / EMA30):更平滑,代表长期趋势

典型规则(长/短线周期可替换):

  • 入场(做多/持有):短均线 > 长均线
  • 离场(空仓/做空):短均线 < 长均线
  • 可选:短均线 上穿 长均线作为买入触发点、下穿 作为卖出触发点(只在“穿越那一刻”执行,不在每根K线都反复操作)。

变体:

  • 只做 多/空仓(long/flat)适合现货;
  • 多空双向(long/short)适合合约。

会亏损吗

“如果这么买,就相当于在均价上买入、均价下卖出,那不是容易亏吗?”

这个问题切中要害。比如:

  • 当短期均线(MA10)上穿 长期均线(MA30)时,你才买入;
  • 当短期均线下穿 长期均线时,你才卖出。

这意味着:

  • 买入价 高于 过去平均价;
  • 卖出价 低于 过去平均价。

📉 所以确实不是“低买高卖”,而是 “涨了才买,跌了才卖”。

那为什么这种“看似傻”的方法仍然能赚钱?

关键在于它的交易哲学

双均线不是为了“猜顶抄底”,而是为了“顺势而为(Trend Following)”。

举个例子👇

假设 BTC 价格从 20,000 → 25,000 → 30,000

  • 你在 22,000 时短期均线上穿长期均线 → 买入
  • 一直持有,价格继续涨到 30,000
  • 等趋势反转,短期均线下穿长期均线(比如 28,000) → 卖出

✅ 结果:

  • 你不是最低点买、最高点卖
  • 但你赚了 22,000 → 28,000 之间的主要趋势

📘 这就是“吃中间那段肉”的交易哲学。

前面是 22,000,后面是 28,000,其实并不是说长期均线的值固定不变、后来涨到了 28,000。 而是指:

22,000 是你买入时市场价格, 28,000 是你卖出时市场价格。

但你问的很关键: 👉「长期均线到底会不会变?」 答案是:会变,并且一直在变。

下面我们把它讲清楚👇

均线是“动态的”,每根 K 线都会更新一次

举个简化版过程:

阶段 BTC 价格 短期均线 (MA10) 长期均线 (MA30) 信号 动作
初始 20,000 20,000 20,000
22,000 21,000 20,200 上穿 ✅ 买入
持有 25,000 24,000 22,000 持仓
最高 30,000 28,000 25,000 持仓
回落 28,000 27,000 26,500 下穿 ✅ 卖出

这里的“22,000”和“28,000”分别是你交易时的市场价格, 并不是长期均线的值。

而长期均线的值——比如从 20,000 → 26,500 ——确实是随着行情一起变动的

选 SMA 还是 EMA?

  • SMA(简单均线):对历史数据等权,平滑、滞后更明显。
  • EMA(指数均线):越近的价格权重越高,响应更快,更适合波动大的市场(如加密货币)。
  • 经验:币圈常见 EMA9/EMA21、EMA12/EMA26;日线趋势常见 SMA50/SMA200(黄金交叉/死亡交叉)

SMA简单移动平均线

定义: 取最近 N 根 K 线(例如最近 10 个小时、10 天)的收盘价平均值。 每根价格的权重一样。

公式: $$ SMA_t = \frac{P_t + P_{t-1} + P_{t-2} + \dots + P_{t-(N-1)}}{N} $$ 举例(N=5): 如果最近 5 根收盘价是 [10, 12, 11, 13, 14]

则: $$ SMA = (10+12+11+13+14)/5 = 12 $$ 📘 特点:

  • 对历史数据等权重(每个价格影响力一样)
  • 响应慢 → 滞后比较明显
  • 优点:稳定、平滑,不容易被短期波动“骗”
  • 缺点:在行情急转时反应不够快

EMA指数移动平均线

定义:最新价格更高权重,越早的价格权重越低。 这样EMA对行情变化反应更快。

递推公式: $$ EMA_t = \alpha \times P_t + (1-\alpha) \times EMA_{t-1} $$ 其中 $$ \alpha = \frac{2}{N+1} $$ 举例(N=5): $$ \alpha = \frac{2}{6} = 0.333 $$ 所以:

  • 最新价权重 = 33%
  • 上一根均线的影响 = 67%

📘 特点:

  • 对新价格变化更敏感(“快”)
  • 能更早捕捉趋势反转
  • 但在震荡行情中容易出现假信号(噪音多)

EMA 的本质:不是“只给最新价一个 α 权重”

EMA 的递推公式是: $$ EMA_t = \alpha P_t + (1-\alpha) EMA_{t-1} $$ 乍一看,好像当前价格权重是 α(例如 0.1),确实很小。 但别忘了——EMA_{t-1} 本身已经包含了之前所有价格的加权平均!

把它展开你就明白了

连续展开几次:

\[ \begin{align*} EMA_t &= \alpha P_t + (1-\alpha) [\alpha P_{t-1} + (1-\alpha) EMA_{t-2}] \\ &= \alpha P_t + \alpha (1-\alpha) P_{t-1} + \alpha (1-\alpha)^2 P_{t-2} + \dots \end{align*} \]

📘 结论:

  • 每一个旧价格都还有影响,但它的权重是逐渐衰减的;
  • 最新价格权重 = α
  • 前一个价格权重 = α(1-α)
  • 再前一个价格权重 = α(1-α)²
  • 依此类推,权重指数级递减

这就是 “指数移动平均” 的由来。

为什么说“最近价格权重更高”

因为随着时间往前, $$ (1-\alpha)^k $$ 越来越小。

举个例子,假设 α = 0.2:

价格点 权重(相对当前)
当前 Pₜ 0.2
上一根 Pₜ₋₁ 0.16
上两根 Pₜ₋₂ 0.128
上三根 Pₜ₋₃ 0.102
…… ……

📉 你看:虽然 α 只有 0.2,但最近的价格累积权重占比很大。 远处的数据(比如 10 根前)影响已经非常小了。

t = 0(初始值)怎么处理?

因为 EMA 是递推定义的,所以第一步需要一个起点。 Binance、TradingView、Pandas 等常见实现方式是:

EMA₀ = SMA₀(即前 N 根的简单平均值)

例如:

  • 你计算 EMA(10),那前 10 根先取平均,作为第一个 EMA 值;
  • 从第11根开始,才用递推公式更新。

这样就不会出现“t=0 没前值”的问题。

入场/出场判定的细节(很重要)

信号计算要避免未来函数

在回测中,我们常常在每根K线的收盘价上计算信号(例如短均线、长均线)。 但是在现实交易中——

只有当K线收盘之后才能知道收盘价,才能知道“短均线是否上穿长均线”。

如果你在计算信号的同时立刻用这根K线的收盘价下单, 就等于假设你提前知道“未来价格”了。 这叫“偷看未来”,会让回测结果虚假地变好。

等号怎么处理?

ema_short == ema_long 时通常保持原仓位,避免来回抖动。

在实际行情中,短期均线可能刚好等于长期均线,或者非常接近。 如果你在这种情况下频繁切换仓位,会出现“抖动”或“震荡假信号”。

举例:

时刻 ema_short ema_long 信号
t1 100 99 买入(1)
t2 99.8 99.8 ❓相等怎么办?
t3 99.7 99.6 卖出(0)

如果不特殊处理 t2:

  • 可能频繁买卖;
  • 回测曲线剧烈波动;
  • 成本高、绩效差。

✅ 正确做法:

通常在等号时:

保持当前仓位,不开新单、不平仓。

“穿越判定”——只在信号翻转时交易

如果你每一根K线都去检查 ema_short > ema_long 就立刻下单, 那策略会在连续趋势中重复开仓(反复买同一个方向)。

比如短期均线连续10根都高于长期均线,你就会连续买10次,明显不合理。

✅ 正确做法:

只在信号发生变化(翻转)时交易。 也就是:

  • 从 0 → 1(空仓 → 持仓) → 买入
  • 从 1 → 0(持仓 → 空仓/平仓) → 卖出

代码上可用信号的差分实现:

交易成本与滑点

当你在实盘中买卖时,你的交易价格永远不是你想象中的那根K线的收盘价。 在真实市场中你要付出两种“隐性代价”:

成本类型 含义 影响
手续费(commission) 交易所收取的费用,通常按成交额的一定比例(如 0.1%) 每次买卖都要付
滑点(slippage) 实际成交价与理想成交价之间的偏差 市场波动、成交深度不足导致买贵/卖便宜

比如,假设你打算在 BTC/USDT = 50,000 的时候下市价买单。

  • Binance 手续费 = 0.1%(单边) → 买入一笔要付 0.1%,卖出再付 0.1%。 → 总共来回一次就是 0.2% 成本。
  • 但市场真实深度有限,你下单后价格实际成交在 50,050,比预期贵了 0.1%。 → 这 0.1% 就是滑点。

所以一次完整的买+卖,真实总成本 ≈ 0.3%(手续费 + 滑点)。

为什么双均线策略特别受成本影响

双均线策略在震荡行情下会:

  • 频繁“上穿”“下穿”;
  • 一直在买入卖出;
  • 每次赚的很少;
  • 但每次都要付手续费+滑点。

于是:

频繁交易 × 小收益 × 每次扣 0.2% 成本 = 利润被慢慢吃掉

风控与仓位

止损就是:

当价格对你不利(亏损超过一定程度)时,自动卖出或平仓,防止小亏变大亏。

它的核心思想是:

  • “认错要快”;
  • “保命比盈利更重要”。

固定百分比止损

这是最常见的止损方式,比如:

当价格跌超过 3% 就止损。

📘 举例:

  • 你在 100 元买入 BTC;
  • 设定止损 3%; → 一旦跌破 97 元,就立刻卖出。

优点: 简单明了。 缺点: 不考虑市场波动,有时会被“假突破”扫掉。

ATR 动态止损

ATR(Average True Range)表示市场的平均波动幅度

动态止损用市场波动性来决定止损距离。

📘 举例:

  • 当前价格 100 元
  • ATR(过去14期平均波动) = 2 元
  • 设止损为 2×ATR → 4 元 → 止损价 = 96 元。

📊 优点:

  • 在波动大的行情中,止损更宽松(不容易被扫掉);
  • 在平稳行情中,止损更紧(快速止损)。

👉 ATR止损更智能、更常用于趋势策略。

止盈 / 追踪止盈(Take Profit / Trailing Stop)

止盈就是:

达到目标利润后自动卖出锁定收益。

但止盈的进阶形式是 追踪止盈(Trailing Stop)

固定止盈

比如:

盈利达到 +5% 时卖出。

📘 举例:

  • 买在 100 元;
  • 涨到 105 元就自动平仓。

缺点:有时候市场可能会继续上涨,你提前退出了。

追踪止盈(Trailing Stop)

当价格上涨时,止盈价自动上移, 当价格回落一定比例时,触发卖出。

📘 举例:

  • 买在 100 元;
  • 设置追踪止盈 = 3%。 → 当价格涨到 110 元,止盈价自动上移到 106.7 元。 → 一旦价格从 110 跌到 106.7,就止盈离场。

✅ 优点:

  • 让利润“奔跑”,不提前卖出;
  • 避免涨到高点又回吐。

仓位管理(Position Sizing)

仓位管理决定你每次投入多少资金去交易。 很多策略不是输在逻辑,而是输在“仓位太大”。

几种常见方式

类型 说明 适合
全仓 每次信号出现都把全部资金买入 风险最高;只适合小账户或测试
固定仓位 每次只用固定比例(如 10%、20%)买入 ✅ 初学者最推荐;简单稳健
风险平价(Risk Parity) 根据波动率分配仓位(波动大的资产少买) ✅ 专业基金常用;波动控制好
Kelly 公式 根据历史胜率与赔率计算最优仓位 ⚠️ 高阶用法,容易过拟合

举例:固定仓位

假设账户 10,000 USDT,设定每次用 20%:

  • 每次交易金额 = 2,000 USDT
  • 如果连续亏损几次,账户仍有余地恢复。

优点:

  • 稳定、易控、抗连续亏损。 ❌ 缺点:
  • 盈利时增长较慢(但稳)。

最大回撤限制(Max Drawdown Control)

净值回撤超过阈值(如 15–25%)→ 降低仓位或暂停。

最大回撤指策略从最高净值到最低净值的最大跌幅。 它是衡量风险的关键指标。

举例:

时间 账户净值 回撤
起始 $10,000
最高 $12,000
当前 $9,600 -20%

👉 当前最大回撤 = (12,000 - 9,600) / 12,000 = 20%

为什么要限制最大回撤?

  • 20% 回撤 → 需要赚 25% 才能回本
  • 50% 回撤 → 需要赚 100% 才能回本
  • 所以:防守比进攻更重要。

适用市场与周期

趋势强、噪音相对小的周期效果更稳:4H / 日线 常优于 1m/5m。

不同周期代表不同“噪音层级”:

周期 每根K线时间 特点 对双均线的影响
1分钟(1m) 非常短 含大量无意义波动 信号太多,假突破多,手续费高
5分钟(5m) 稍平滑但仍噪音大 高频震荡 很难抓稳趋势
1小时(1H) 适中 能识别短期趋势 可用,但仍较敏感
4小时(4H) 稳定 噪音小,趋势更干净 ✅ 最常用周期之一
日线(1D) 非常平滑 明确反映长期方向 ✅ 趋势清晰、假信号少

币种选择:主流币(BTC/ETH)更稳定,小币波动大但更噪音。

假设 BTC 价格在一天内波动区间是:

20000 → 20300 → 19900 → 20400 → 20000
  • 在 1分钟K线上,这些小跳动都会产生“假交叉”信号;
  • 在 日线K线上,这只是“一天的小波动”,均线不会乱动。

✅ 所以:

越长周期的K线,越能看清真正趋势,过滤掉市场噪音

震荡期会“挨刀”,趋势期“吃肉”。策略组合能对冲这点。

为什么说“策略组合能对冲这点”

因为单一趋势策略只在趋势行情中赚钱。 要应对震荡期,你可以:

市场状态 策略类型 举例
趋势期 趋势跟随策略 双均线、突破
震荡期 均值回归策略 RSI、布林带反转
波动扩大期 波动率策略 ATR / 动量分层
波动收缩期 套利策略 跨交易所、价差套利