You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pine Script跨双标的套利策略实现问题求助(附v4测试代码)

解决方案:Pine Script 双标的切换套利策略实现

核心问题说明

  • Pine Script v4 中 strategy.entry 的 symbol 参数本身有效,但需满足策略设置允许多资产交易,且标的格式需符合平台要求(如美股直接用代码"MSFT",部分市场需带交易所前缀)。
  • Pine Script v5 移除了 strategy.entry 的 symbol 参数,需改用 strategy.order 配合跨标的数据获取来实现。

Pine Script v4 修正实现

关键修正点

  1. 在策略编辑界面的「设置→交易选项」中开启「允许多符号交易」。
  2. 直接使用平台标准标的代码,避免自定义拼接字符串导致格式错误。
  3. 优化信号逻辑,确保触发唯一性。

完整代码

//@version=4
strategy(title="AAPL-MSFT 切换套利策略", shorttitle="AAPL-MSFT Arb", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, margin_long=100, margin_short=100)

// 基于主图标的AAPL计算SAR指标
sar_val = sar(0.02, 0.03, 0.2)
plot(sar_val, color=color.blue, title="Parabolic SAR")

// 定义切换信号
buy_aapl_signal = crossunder(close, sar_val) and sar_val > close // 切换至AAPL
buy_msft_signal = crossover(close, sar_val) and sar_val < close // 切换至MSFT

// 执行仓位切换
if buy_aapl_signal
    strategy.close_all(comment="平所有仓位")
    strategy.entry("持有AAPL", strategy.long, qty=100, comment="买入AAPL") // 主图标的无需指定symbol

if buy_msft_signal
    strategy.close_all(comment="平所有仓位")
    strategy.entry("持有MSFT", strategy.long, symbol="MSFT", qty=100, comment="买入MSFT") // 指定目标标的

Pine Script v5 实现方案

核心思路

v5中通过request.security跨标的获取主标的(AAPL)的指标数据生成信号,再用strategy.order直接指定标的代码执行交易,同时需开启策略的多资产权限。

完整代码

//@version=5
strategy(title="AAPL-MSFT 切换套利策略", shorttitle="AAPL-MSFT Arb", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, margin_long=100, margin_short=100)

// 定义主标的(AAPL),用于计算SAR指标
main_ticker = "AAPL"
// 跨标的获取AAPL的收盘价和SAR指标
[main_close, main_sar] = request.security(main_ticker, timeframe.period, [close, ta.sar(0.02, 0.03, 0.2)])

// 绘制SAR指标(基于AAPL)
plot(main_sar, color=color.blue, title="Parabolic SAR (AAPL)")

// 定义切换信号
buy_aapl_signal = ta.crossunder(main_close, main_sar) and main_sar > main_close
buy_msft_signal = ta.crossover(main_close, main_sar) and main_sar < main_close

// 执行仓位切换
if buy_aapl_signal
    strategy.close_all(comment="平所有仓位")
    strategy.order("持有AAPL", strategy.long, qty=100, comment="买入AAPL") // 交易主标的

if buy_msft_signal
    strategy.close_all(comment="平所有仓位")
    strategy.order("持有MSFT", strategy.long, qty=100, comment="买入MSFT", symbol="MSFT") // 交易目标标的

通用注意事项

  • 必须开启策略的「允许多符号交易」权限,否则跨标的交易指令会被系统忽略。
  • 标的代码需严格匹配TradingView平台的标准格式(可通过搜索标的获取正确代码)。
  • 若需按资金比例下单,可将qty参数替换为qty=strategy.equity / target_close(需提前获取对应标的收盘价)。

内容的提问来源于stack exchange,提问作者Papa Stanley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:43:17