【问题标题】:Need Label to Show every time Condition is true每次条件为真时都需要显示标签
【发布时间】:2021-02-10 00:43:05
【问题描述】:

我做了一个简单的 MACD 指标,当 MACD 历史线超过或低于 0 时,它会放置一个标签。问题是它只在最近发生的 2 次放置标签(一个用于短期,一个用于长期)... 而不是每次它以前也发生过。即我在图表上有一个符号...我将指标放在...它将显示最近的“立即销售”标签(当最近的卖出条件发生时)和“立即购买”标签的标签最近的买入条件发生了......但它不会显示之前买入或卖出条件为真的所有时间的标签。我附上了图片,你可以看到。正如您在图像中看到的......它仅显示最近条件为真的标签......但正如您所看到的, histLine(彩色条)在 0 线的上方和下方交叉了很多次,但是没有为那些显示标签。如果你能给我一些关于如何解决这个问题的指导 - 将不胜感激。其他指标会在每次发生时显示……当前、最近和过去——所有时间范围内……这就是我想做的。

代码如下:

//@version=4
study("mwgMACD")
src = input(title="Source", type=input.source, defval=ohlc4) [macdLine, signalLine, histLine] = macd(src, 12, 26, 5)

col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

//plot(macdLine, color=color.green)
//plot(signalLine, color=color.red)
//plot(histLine, color=color.white, style=plot.style_histogram)

plot(histLine, title="Histogram", style=plot.style_columns, color=(histLine>=0 ? (histLine[1] < histLine ? col_grow_above : col_fall_above) : (histLine[1] < histLine ? col_grow_below : col_fall_below) ), transp=0 )

ShowCross = input(title="Show Cross", type=input.bool, defval=true)

conditionBuy1 = histLine[1] < 0 and histLine > 0
//conditionBuy2 = histLine crossed over 0

conditionSell2 = histLine[1] > 0 and histLine < 0

if ShowCross and crossover(histLine, 0)
    var label1 = label.new(bar_index, na, text="BUY NOW")
    label.set_x(label1, 0)
    label.set_xloc(label1, time, xloc.bar_time)
    label.set_color(label1, color.green)
    label.set_size(label1, size.small)
    label.set_textcolor(label1,color.white)

if ShowCross and crossunder(histLine, 0)
    var label2 = label.new(bar_index, na, text="SELL NOW")
    label.set_x(label2, 0)
    label.set_xloc(label2, time, xloc.bar_time)
    label.set_color(label2, color.red)
    label.set_size(label2, size.small)
    label.set_textcolor(label2,color.white)

这是一张图片,您可以看到我在说什么:https://i.stack.imgur.com/Gx224.png

【问题讨论】:

    标签: pine-script


    【解决方案1】:

    迈克 G.

    以下代码略有不同,但我相信它可以实现您的目标

    //@version=4
    study("StackOverFlow")
    src = input(title="Source", type=input.source, defval=ohlc4) 
    
    [macdLine, signalLine, histLine] = macd(src, 12, 26, 5)
    
    col_grow_above = #26A69A
    col_grow_below = #FFCDD2
    col_fall_above = #B2DFDB
    col_fall_below = #EF5350
    col_macd = #0094ff
    col_signal = #ff6a00
    
    
    plot(histLine, title="Histogram", style=plot.style_columns, color=(histLine>=0 ? (histLine[1] < histLine ? col_grow_above : col_fall_above) : (histLine[1] < histLine ? col_grow_below : col_fall_below) ), transp=0 )
    
    ShowCross = input(title="Show Cross", type=input.bool, defval=true)
    
    conditionBuy1 = histLine[1] < 0 and histLine > 0
    conditionSell2 = histLine[1] > 0 and histLine < 0
    
    
    Buy = crossover(histLine, 0)
    plotshape(ShowCross and Buy, location=location.top, style=shape.labeldown, color=color.green, size=size.tiny, text="Buy", textcolor=color.white, transp=0, offset=0)
    
    Sell = crossunder(histLine, 0)
    plotshape(ShowCross and Sell,  location=location.bottom, style=shape.labelup, color=color.red, size=size.tiny, text="Sell", textcolor=color.white, transp=0, offset=0)
    

    可能有帮助的示例链接 https://uk.tradingview.com/script/elLlG7Rj-blackcat-L1-MACD-with-Overbought-and-Oversold-Detection/

    【讨论】:

    • 哇 - 它工作...感谢您的快速帮助。我怎么做才能让它就像我的标签一样 - 即。说买或卖,我的代码中阻止它做我需要它做的事情......即。发出买入或卖出信号的时间不只是最近发生的吗?
    • 任何人都知道如何使用标签而不是绘图形状来做到这一点?他提供的代码确实像我需要的那样在整个时间范围内显示了信号......但它并没有用标签完成......我希望用我的示例图像显示的标签来完成它(尽管我的图像只产生出于某种原因最近发生的买卖……而不是每次条件为真时)。我试图让它显示条件为真的每一次出现......但使用标签来显示买入或卖出信号。
    • Mike G,根据您的脚本,我个人对标签的了解不足,但我已经更新了上面的答案以使用 plotshape style=shape.labelup/down 中的标签设置。希望对您有所帮助。
    • 在我的答案中添加了一个链接到可能有帮助的脚本。
    【解决方案2】:

    运算符var 创建一个全局变量,您需要为每个标签创建自己的变量。这是您想要的脚本。

    //@version=4
    study("Help (mwgMACD)")
    src = input(title="Source", type=input.source, defval=ohlc4) 
    
    [macdLine, signalLine, histLine] = macd(src, 12, 26, 5)
    
    col_grow_above = #26A69A
    col_grow_below = #FFCDD2
    col_fall_above = #B2DFDB
    col_fall_below = #EF5350
    col_macd = #0094ff
    col_signal = #ff6a00
    
    //plot(macdLine, color=color.green)
    //plot(signalLine, color=color.red)
    //plot(histLine, color=color.white, style=plot.style_histogram)
    
    plot(histLine, title="Histogram", style=plot.style_columns, color=(histLine>=0 ? (histLine[1] < histLine ? col_grow_above : col_fall_above) : (histLine[1] < histLine ? col_grow_below : col_fall_below) ), transp=0 )
    
    ShowCross = input(title="Show Cross", type=input.bool, defval=true)
    
    conditionBuy1 = histLine[1] < 0 and histLine > 0
    //conditionBuy2 = histLine crossed over 0
    
    conditionSell2 = histLine[1] > 0 and histLine < 0
    
    if ShowCross and crossover(histLine, 0)
        label.new(bar_index, 0, text="BUY NOW", textcolor=color.white, size=size.small, color=color.green)
        // label.set_x(label1, 0)
        // label.set_xloc(label1, time, xloc.bar_time)
        // label.set_color(label1, color.green)
        // label.set_size(label1, size.small)
        // label.set_textcolor(label1,color.white)
    
    if ShowCross and crossunder(histLine, 0)
        label.new(bar_index, 0, text="SELL NOW", textcolor=color.white, size=size.small, color=color.red)
    //     label.set_x(label2, 0)
    //     label.set_xloc(label2, time, xloc.bar_time)
    //     label.set_color(label2, color.red)
    //     label.set_size(label2, size.small)
    //     label.set_textcolor(label2,color.white)
    

    【讨论】:

    • 如果您的答案是完整的,请使用article 的建议。
    猜你喜欢
    • 1970-01-01
    • 2013-08-14
    • 2022-08-17
    • 2022-01-21
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多