Pine Script实现EMA13/50金叉前高量标注及alertcondition设置咨询
Pine Script v4 需求实现方案
核心逻辑说明
原有代码已经实现了基础高量柱标注、EMA13上穿EMA50金叉标注功能,以下针对两个问题给出具体修改方案:
问题1:标注金叉前1~2根K线内的高量柱
不需要使用offset参数,通过历史值引用的方式即可实现:
- 判定规则:如果当前K线是高量柱,且后续1~2根K线出现EMA13上穿EMA50信号,则当前K线符合标注要求
- 所有判定基于真实计算值,没有视觉偏移,可直接用于后续逻辑调用
问题2:编写符合要求的alertcondition
触发时机为金叉出现的当下,只要金叉前2根K线内存在至少1根符合规则的高量柱就触发,直接拼接历史值引用的判定条件即可。
完整修改后代码
//@version=4 study(title="High volume with EMA13/50", shorttitle="High vol EMA13/50", overlay = true ) EMA13 = input(13, minval=1) EMA50 = input(50, minval=1) xPrice = close xEMA13 = ema(xPrice, EMA13) xEMA50 = ema(xPrice, EMA50) plot(xEMA13, color=color.red, title="EMA 13") plot(xEMA50, color=color.purple, title="EMA 50") // 高量柱判定 smalength=input(21, "length", minval=1) avrg=sma(volume,smalength) volu1 = volume > avrg*1.5 and close>open colu1=#006400 color = volu1 ? colu1 : na barcolor(color) plotshape(volu1 ? low : na, title="普通高量柱", text="High\nVolume\n", style=shape.labelup, location=location.belowbar, color=colu1, textcolor=color.white, size=size.tiny) // EMA金叉判定 EMA13crossesoverEMA50 = crossover(xEMA13, xEMA50) plotshape(EMA13crossesoverEMA50 ? low : na, title="EMA金叉", text="EMA(13,50)\nCrossover\n", style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, size=size.tiny) // ========== 问题1实现代码 ========== // 判定当前高量柱是否属于金叉前1~2根范围内的标的 high_vol_before_cross = volu1 and (EMA13crossesoverEMA50[1] or EMA13crossesoverEMA50[2]) // 用橙色特殊样式标注符合要求的高量柱,可自行修改样式参数 plotshape(high_vol_before_cross ? low*0.995 : na, title="金叉前高量柱", text="Pre-Cross\nHigh Vol\n", style=shape.labelup, location=location.belowbar, color=color.orange, textcolor=color.black, size=size.small) // ========== 问题2实现代码 ========== // 报警触发条件:金叉发生 且 前2根K线内存在符合规则的高量柱 alert_condition = EMA13crossesoverEMA50 and (volu1[1] or volu1[2]) alertcondition(alert_condition, title="金叉前2根内存在高量柱", message="EMA13上穿EMA50,且前2根K线内出现符合规则的高量柱")
内容的提问来源于stack exchange,提问作者HalSkyTrader
相关产品推荐
相关产品推荐

