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

如何基于看涨倒锤子Pinbar代码实现看跌倒锤子K线形态识别

基于现有代码实现看跌倒锤子形态的方案

核心逻辑调整说明

原有看涨倒锤子的判断规则为:小实体、实体位于K线中点以下、上影线长度≥实体的指定倍数、无有效下影线。
看跌倒锤子为完全反向的判断逻辑,在保留小实体、实体不为0的基础要求外,规则调整为:

  • 实体位于K线中点以上
  • 下影线长度≥实体的指定倍数
  • 无有效上影线

修改后的完整Pine Script v5代码

//@version=5
indicator("倒锤子形态(看涨+看跌)", overlay = true)

isInvertedHammer() =>
    len = 14 // 计算实体平均值的EMA周期
    shadowPercent = 5.0 // 影线最小占比阈值
    shadowEqualsPercent = 100.0
    dojiBodyPercent = 5.0
    factor = 2.0 // 影线长度需要达到实体的倍数
    
    bodyHi = math.max(close, open)
    bodyLo = math.min(close, open)
    body = bodyHi - bodyLo
    bodyAvg = ta.ema(body, len)
    smallBody = body < bodyAvg
    longBody = body > bodyAvg
    upShadow = high - bodyHi
    dnShadow = bodyLo - low
    hasUpShadow = upShadow > shadowPercent / 100 * body
    hasDnShadow = dnShadow > shadowPercent / 100 * body
    whiteBody = open < close
    blackBody = open > close
    rangehl = high - low
    isInsideBar = bodyHi[1] > bodyHi and bodyLo[1] < bodyLo
    bodyMiddle = body / 2 + bodyLo
    shadowEquals = upShadow == dnShadow or (math.abs(upShadow - dnShadow) / dnShadow * 100) < shadowEqualsPercent and (math.abs(dnShadow - upShadow) / upShadow * 100) < shadowEqualsPercent
    isDojiBody = rangehl > 0 and body <= rangehl * dojiBodyPercent / 100
    doji = isDojiBody and shadowEquals
    
    // 原有看涨倒锤子逻辑
    isInvertedHammerBullish = smallBody and body > 0 and bodyHi < hl2 and upShadow >= factor * body and not hasDnShadow
    // 新增看跌倒锤子逻辑
    isInvertedHammerBearish = smallBody and body > 0 and bodyLo > hl2 and dnShadow >= factor * body and not hasUpShadow
    
    [isInvertedHammerBullish, isInvertedHammerBearish]

[bullishSig, bearishSig] = isInvertedHammer()

// 绘制看涨信号,显示在K线下方
plotshape(bullishSig, title = "看涨倒锤子", style = shape.labelup, location = location.belowbar, color = color.new(color.blue, 30), text = "多", textcolor = color.white, size = size.normal)
// 绘制看跌信号,显示在K线上方
plotshape(bearishSig, title = "看跌倒锤子", style = shape.labeldown, location = location.abovebar, color = color.new(color.red, 30), text = "空", textcolor = color.white, size = size.normal)

关键修改点说明

  • 函数返回值从单一看涨信号调整为同时返回看涨、看跌两个信号
  • 看跌判断条件将原看涨的bodyHi < hl2(实体上沿低于K线中点)改为bodyLo > hl2(实体下沿高于K线中点)
  • 看跌判断条件将原看涨的upShadow >= factor * body(上影线长度达标)改为dnShadow >= factor * body(下影线长度达标)
  • 看跌判断条件将原看涨的not hasDnShadow(无有效下影线)改为not hasUpShadow(无有效上影线)
  • 调整信号标签的显示位置和样式,更符合常规使用习惯

补充:如果你需要的是同样保留长上影线特征的看跌倒锤子形态(即常说的射击之星),只需将看跌判断条件替换为以下代码即可:

isInvertedHammerBearish = smallBody and body > 0 and bodyLo > hl2 and upShadow >= factor * body and not hasDnShadow

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:15:03