如何基于看涨倒锤子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
相关产品推荐
相关产品推荐

