关键词:Pine Script、移动平均线交叉、策略回测、加密货币交易、TradingView、自动化交易、SMA、策略编写、量化交易、技术指标
为什么要用 Pine Script?
对 量化交易 入门者来说,打造第一个交易策略的最大门槛是语言和平台。Pine Script 依托 TradingView,无需下载安装,写几行代码就能在百万级 K 线上 即时回测。本文手把手带你用 SMA 均线交叉 组合出首支策略,全程只需 15 分钟。
如果你只想要“开箱即用”的策略预览,👉 立刻浏览可直接复制的高完整度源码示例,三分钟就能看到数值跑起来的效果。
新手装备清单
- 打开 TradingView
- 任意选择一张 BTC、ETH 或其他加密货币的图表
- 窗口底部找到 “Pine Editor”(长得像记事本的按钮)
只需这三步,环境已齐;正式开始前,先熟悉两个概念:
- study:侧重 可视化 和 预警,不能回测盈亏
- strategy:侧重 回测,可统计胜率、最大回撤、盈亏比等
均线交叉天然属于需要 回测表现 的策略,因此我们选用 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 BNB 折扣费率 |
| 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)sma()自带平滑和高效计算,无需自己循环- 再画线:
plot(fastMA, color=color.blue, linewidth=2, title="F-SMA")
plot(slowMA, color=color.red, linewidth=2, title="S-SMA")第四步:创建进出场的“触发器”
Pine Script 提供一行命令:
crossover(fastMA, slowMA)→ 金叉 多头crossunder(fastMA, slowMA)→ 死叉 空头
只需布尔变量即可:
longCondition = crossover(fastMA, slowMA)
shortCondition = crossunder(fastMA, slowMA)第五步:让策略“动起来”——执行开仓
if longCondition
strategy.entry("多仓", strategy.long)
if shortCondition
strategy.entry("空仓", strategy.short)这五句代码是全部自动化核心:出现信号即即时虚拟下单。
策略如何玩转?
- 点击 Save → Add to Chart
- 短暂编译后,图表出现蓝、红两条 SMA
- 右上方齿轮图标可调快慢均线参数
- “Strategy Tester” 面板呈现:胜率、净利润、夏普比率等
试着把慢线从 25 改成 37,看看 盈利因子 有何变化,培养“调参手感”。
真实场景扩展:增加风控与过滤
当用于实战,还需 移动止损、波动率过滤、滑点模拟 等。以下为思路简要:
- 用
strategy.exit()设置止损:止损点数 = 2×ATR - 采用
ta.atr()计算波动率,高于阈值不开仓 - 引入EMA 多重滤波,减少震荡区间假信号
常见问答(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 行代码,你已拥有 可复制、可扩展、可回测 的均线交叉策略。下一步你可以:
- 加入 RSI 背离过滤,降低回撤
- 使用 分批加仓/金字塔式 替代一次性 100 % 交易
- 将参数导出到 CSV / Notion 数据库 做全球资产轮动测试
用 Pine Script 做 量化交易 就是这么简单——所见即所得,改一行即可对结果产生即时影响。祝你交易顺利,探索愉快!