零基础也能上手:用 Pine Script 编写均线交叉量化策略完整指南

·

关键词:Pine Script、移动平均线交叉、策略回测、加密货币交易、TradingView、自动化交易、SMA、策略编写、量化交易、技术指标

为什么要用 Pine Script?

量化交易 入门者来说,打造第一个交易策略的最大门槛是语言和平台。Pine Script 依托 TradingView,无需下载安装,写几行代码就能在百万级 K 线上 即时回测。本文手把手带你用 SMA 均线交叉 组合出首支策略,全程只需 15 分钟。

如果你只想要“开箱即用”的策略预览,👉 立刻浏览可直接复制的高完整度源码示例,三分钟就能看到数值跑起来的效果。


新手装备清单

  1. 打开 TradingView
  2. 任意选择一张 BTC、ETH 或其他加密货币的图表
  3. 窗口底部找到 “Pine Editor”(长得像记事本的按钮)

只需这三步,环境已齐;正式开始前,先熟悉两个概念:

均线交叉天然属于需要 回测表现 的策略,因此我们选用 strategy


第一步:初始化策略基本参数

把编辑器里的默认 study() 替换为下边代码块,我们先搭好框架:

//@version=3
strategy("简易均线策略", shorttitle="SimpleMA", overlay=true,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=100,
         initial_capital=50000,
         pyramiding=0,
         commission_type=strategy.commission.percent,
         commission_value=0.075)
参数说明建议值理由
overlay=true在价格主图上绘制,方便观察 移动平均线和价格均线与价格直观对齐
initial_capital=50000用 5 万 USD 作为回测起点适合 BTC 等高价资产
commission_value=0.075交易所费率 0.075 %参考 Binance BN​​B 折扣费率
pyramiding=0禁止加仓均线交叉策略通常一次性进出

第二步:输入动态参数,让策略可调

硬编码周期数不利于后期优化。借助 input(),让用户直接在图形界面调整数值:

source  = input(close,  title="K 线价格来源")
fastLen = input(5,      title="快均线周期", minval=1,  step=1)
slowLen = input(25,     title="慢均线周期", minval=2,  step=1)

👉 想知道如何进一步优化输入间隔避免过度拟合?点击查看数值网格寻优思路


第三步:定义两条 SMA

fastMA = sma(source, fastLen)
slowMA = sma(source, slowLen)
plot(fastMA,  color=color.blue,  linewidth=2, title="F-SMA")
plot(slowMA,  color=color.red,   linewidth=2, title="S-SMA")

第四步:创建进出场的“触发器”

Pine Script 提供一行命令:

只需布尔变量即可:

longCondition  = crossover(fastMA, slowMA)
shortCondition = crossunder(fastMA, slowMA)

第五步:让策略“动起来”——执行开仓

if longCondition
    strategy.entry("多仓", strategy.long)

if shortCondition
    strategy.entry("空仓", strategy.short)

这五句代码是全部自动化核心:出现信号即即时虚拟下单。


策略如何玩转?

  1. 点击 Save → Add to Chart
  2. 短暂编译后,图表出现蓝、红两条 SMA
  3. 右上方齿轮图标可调快慢均线参数
  4. “Strategy Tester” 面板呈现:胜率、净利润、夏普比率等

试着把慢线从 25 改成 37,看看 盈利因子 有何变化,培养“调参手感”。


真实场景扩展:增加风控与过滤

当用于实战,还需 移动止损、波动率过滤、滑点模拟 等。以下为思路简要:


常见问答(FAQ)

Q1:为什么版本号要写 //@version=3
A:TradingView 向下兼容,旧策略不移除原标记仍可运行。语法差别不大,初学建议从 v3 开始。

Q2:回测数据可靠吗?是否包含未来函数?
A:只要不用 valuewhen() 在未完成 bar 上取值,就不会引入未来信息。回测结果受限于网络 K 线和手续费假设,不能完全等于真实环境。

Q3:如何把信号推送到 Discord/Telegram?
A:先用 strategy.entry 生成 alertcondition() 绑定告警,再通过第三方 webhook 转发即可。

Q4:为什么盈亏曲线显示资金突然变大?
A:可能打开了 复利模式;可以在 strategy() 参数中把 default_qty_type 改为固定手数验证。

Q5:实盘能直接挂吗?
A:需要搭建 信号桥接 或下单券商 API,目前 Pine Script 原生仅提供 模拟盘


小结与下一步

通过 30 行代码,你已拥有 可复制、可扩展、可回测 的均线交叉策略。下一步你可以:

  1. 加入 RSI 背离过滤,降低回撤
  2. 使用 分批加仓/金字塔式 替代一次性 100 % 交易
  3. 将参数导出到 CSV / Notion 数据库 做全球资产轮动测试

用 Pine Script 做 量化交易 就是这么简单——所见即所得,改一行即可对结果产生即时影响。祝你交易顺利,探索愉快!