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

Pine Script策略问题:多单触发失效及MACD柱色识别需求

问题1:开单条件与预期不符的修正

你需要的开多单条件是hist₂ < hist₁且hist < hist₁(零轴下连续两个柱体比前一根柱体更小),但当前代码里的条件hist[2] > hist[1] and hist[1] < hist是零轴下柱体先缩小后放大的形态,和需求完全相反。

修正后的开单条件代码:

if hist < 0 and hist[2] < hist[1] and hist < hist[1]
    strategy.entry("long", strategy.long, 100)  
    label.new(bar_index, hist, "N")

额外注意点:

  • Pine Script中hist[n]代表n根K线前的柱体值,hist[1]是上一根K线柱体,hist[2]是前两根K线柱体。
  • 若开单位置仍不符合预期,检查策略执行模式:默认是strategy.close_on_close,即信号触发后在下一根K线开盘价成交。如需在当前K线收盘价成交,可修改为strategy.entry("long", strategy.long, 100, close=close),或在策略开头添加strategy("My Strategy", overlay=false, close_entries_rule=strategy.close_entries_rule.all)调整模式。
问题2:识别不同颜色的MACD柱

MACD柱的颜色由两个维度决定:是否在零轴上方、当前柱体相比前一根是增长还是缩小。可将颜色判断逻辑提取为变量,直接用于交易逻辑:

// 定义对应不同颜色柱体的判断变量
is_dark_green = hist >= 0 and hist[1] < hist  // 深绿柱(零轴上且柱体增长)
is_light_green = hist >= 0 and hist[1] >= hist // 浅绿柱(零轴上且柱体缩小)
is_light_red = hist < 0 and hist[1] < hist      // 浅红柱(零轴下且柱体增长)
is_dark_red = hist < 0 and hist[1] >= hist     // 深红柱(零轴下且柱体缩小)

// 示例交易逻辑:深绿柱开多,深红柱开空
if is_dark_green
    strategy.entry("long_green", strategy.long)
if is_dark_red
    strategy.entry("short_red", strategy.short)

这些变量完全对应你代码里的颜色配置:

  • col_grow_above(深绿)→ is_dark_green
  • col_fall_above(浅绿)→ is_light_green
  • col_grow_below(浅红)→ is_light_red
  • col_fall_below(深红)→ is_dark_red
完整修正代码示例
fast_length = input(title="Fast Length", defval=25)
slow_length = input(title="Slow Length", defval=100)
signal_length = input.int(title="Signal Smoothing",  minval = 1, maxval = 50, defval = 9)
src = input(title="Source", defval=close)
sma_source = input.string(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
// Plot colors
col_grow_above = input(#26A69A, "Above   Grow", group="Histogram", inline="Above")
col_fall_above = input(#B2DFDB, "Fall", group="Histogram", inline="Above")
col_grow_below = input(#FFCDD2, "Below Grow", group="Histogram", inline="Below")
col_fall_below = input(#FF5252, "Fall", group="Histogram", inline="Below")
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal

// 新增:柱体颜色判断变量
is_dark_green = hist >= 0 and hist[1] < hist
is_light_green = hist >= 0 and hist[1] >= hist
is_light_red = hist < 0 and hist[1] < hist
is_dark_red = hist < 0 and hist[1] >= hist

hline(0, "Zero Line", color=color.new(#787B86, 50))
plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? 
col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)))

// 修正后的开单条件
if hist < 0 and hist[2] < hist[1] and hist < hist[1]
    strategy.entry("long", strategy.long, 100)  
    label.new(bar_index, hist, "N")

// 可选:基于颜色变量的交易逻辑示例
// if is_dark_green
//     strategy.entry("long_green", strategy.long)
// if is_dark_red
//     strategy.entry("short_red", strategy.short)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:10:34