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

如何在Pine Editor中实现上穿及价格高于标的的回测开平仓触发逻辑

Pine Script回测逻辑修复说明

问题根源

你现有的开仓条件要求「ETH收盘价上穿自身SMA、BTC价格上穿自身SMA两个动作同时发生在同一根K线」,该场景触发概率极低,和你预期的「两个品种价格同时高于对应均线即开多」逻辑不符,因此无法正常触发信号。

匹配需求的正确逻辑代码

直接匹配你描述的伪代码,保证每个满足条件的区间只触发一次交易信号的写法如下:

// 开多:当两个价格高于对应均线的条件从不满足变为满足时触发
EnterLong = ta.crossover(close > indicator1 and btc_price > indicatorbtc, true)
// 平多:当两个价格高于对应均线的条件从满足变为不满足时触发
ExitLong = ta.crossunder(close > indicator1 and btc_price > indicatorbtc, false)

如果你希望以上穿动作为开仓锚点,也可以使用以下写法:

// 任意一个品种上穿自身均线时,检查另一个品种已经满足价格高于均线的条件,就触发开多
EnterLong = (ta.crossover(close, indicator1) and btc_price > indicatorbtc) or (ta.crossover(btc_price, indicatorbtc) and close > indicator1)

完整可运行回测代码(Pine V5版本)

//@version=5
strategy("ETH-BTC共振多策略", overlay=true, initial_capital=10000, default_qty_type=strategy.cash, default_qty_value=1000, commission_value=0.1)

// 引入BTC日线收盘价
btc_price = request.security("BINANCE:BTCUSDT", "D", close)

// ETH均线参数与计算
smaInput = input.int(title="ETH_SMA周期", defval=20, minval=1)
indicator1 = ta.sma(close, smaInput)

// BTC均线参数与计算
btcsmaInput = input.int(title="BTC_SMA周期", defval=20, minval=1)
indicatorbtc = ta.sma(btc_price, btcsmaInput)

// 绘制指标线
plot(indicator1, title="ETH_SMA", color=color.red, linewidth=2)
plot(indicatorbtc, title="BTC_SMA", color=color.blue, linewidth=2)

// 交易逻辑
EnterLong = ta.crossover(close > indicator1 and btc_price > indicatorbtc, true)
ExitLong = ta.crossunder(close > indicator1 and btc_price > indicatorbtc, false)

// 执行交易
if EnterLong
    strategy.entry("Long", strategy.long)
if ExitLong
    strategy.close("Long")

版本适配说明

如果你使用Pine V4版本,做以下调整即可:

  • 将request.security改为security
  • 将input.int改为input.integer
  • 去掉所有ta.前缀,ta.crossover改为crossover,ta.sma改为sma

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:36:04