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

如何用Pine Script计算随机指标金叉/死叉所需的收盘价?

计算Stochastic金叉/死叉所需的目标收盘价(Pine Script v5)

可以通过反向推导Stochastic指标的公式,计算出当前K线需要收盘的目标价格,从而触发金叉或死叉。以下是修改后的完整代码及关键逻辑说明:

关键逻辑推导

Stochastic %K的核心公式为:

%K = 100 * (Close - 周期内最低低) / (周期内最高高 - 周期内最低低)

变形后可解出目标收盘价:

目标Close = (%K目标值 * (周期最高高 - 周期最低低)) / 100 + 周期最低低

而金叉/死叉的临界点是新的%K等于新的%D(%D为%K的SMA),据此推导出%K的目标值:

%K目标值 = 前periodD-1个%K的总和 / (periodD - 1)

修改后的完整代码

//@version=5
indicator("Stochastic 交叉目标价格", overlay=false)

periodK = input.int(14, title="%K周期", minval=1)
periodD = input.int(3, title="%D周期", minval=1)
smoothK = input.int(3, title="%K平滑周期", minval=1)

// 计算Stochastic %K和%D
k = ta.stoch(close, high, low, periodK, smoothK)
d = ta.sma(k, periodD)

// 绘制指标线和区间
plot(k, title = "%K", color = color.blue)
plot(d, title = "%D", color = color.orange)
h0 = hline(80, "上轨", color = color.white)
h1 = hline(20, "下轨", color = color.white)
fill(h0, h1, color=color.rgb(33,150,243,90), title = "背景填充")

// 计算目标收盘价的核心逻辑
var float target_close = na
if periodD > 1
    // 计算前periodD-1个%K的总和
    sum_k_prev = ta.sum(k[1], periodD - 1)
    // 计算交叉临界点的%K目标值
    target_k = sum_k_prev / (periodD - 1)
    // 获取periodK周期内的最高高和最低低
    highest_h = ta.highest(high, periodK)
    lowest_l = ta.lowest(low, periodK)
    
    // 避免除以0的情况(区间无波动)
    if highest_h != lowest_l
        target_close := (target_k * (highest_h - lowest_l)) / 100 + lowest_l
    else
        target_close := close

// 判断潜在交叉情况
potential_golden = k < d and periodD > 1
potential_death = k > d and periodD > 1

// 绘制目标价格标签
var label cross_label = na
if barstate.islast
    // 清除旧标签
    label.delete(cross_label)
    // 金叉目标价格
    if potential_golden
        cross_label := label.new(bar_index, 50, "金叉目标价:\n" + str.tostring(target_close, "#.####"), 
            style=label.style_label_center, textcolor=color.white, color=color.green, size=size.small)
    // 死叉目标价格
    else if potential_death
        cross_label := label.new(bar_index, 50, "死叉目标价:\n" + str.tostring(target_close, "#.####"), 
            style=label.style_label_center, textcolor=color.white, color=color.red, size=size.small)

代码说明

  • 修正了原代码中未使用smoothK参数的问题,将其整合到ta.stoch函数中用于平滑%K
  • 处理了periodD=1的边界情况(此时%D等于%K,无交叉可能)
  • 避免了区间无波动时的除以0错误
  • 仅在当前K线有潜在金叉/死叉机会时,显示对应的目标收盘价标签
  • 标签会自动更新到最后一根K线,且仅保留最新标签

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:47:45