首页 > 解决方案 > 在不满足条件的情况下触发警报 - 你能帮忙吗?需要 pinescript 帮助

问题描述

首先,我想说我是一个完全的外行,所以你需要帮助我,就像我用蜡笔写字一样。

话虽如此,我已尝试将警报添加到以前没有的指示器。我已经设法让他们以我想要的能力进入警报工具。但是,当相关标签(^ 或 v)打印在图表上时触发警报,并且当我创建警报(无论工具设置如何)时,它会发送警报,基本上没有条件,基本上在每根柱线收盘时如果这是选择的设置。

我遵循了类似的问题和答案,指示使用标志来完成此操作。但是,它没有按预期工作。我认为这可能是因为标志是根据执行它的 if 函数触发的,并且在“label.new”函数行中可能有一些我不完全理解的编码,在打印实际标签之前给它更多逻辑?

这是我得到的最接近的结果,我之前曾尝试使用标签本身,或者 if 逻辑本身作为警报条件函数的限定符。我已经包含了代码的照片,但还包括下面的复制粘贴。

更新:

  1. 正如建议的那样,我试图将标志定义为 var 变量。不幸的是,这根本没有改变警报的效果。

  2. 我一直在尝试按照建议从“循环”中提取绘图逻辑和警报。但是,恐怕我的无知可能会限制我遵循指示的能力。我已经尝试了本地和全球范围内的警报。仍然无法得到它。..................................................... ...

    h = input(8.,'Bandwidth')
     src = input(close,'Source')
     //----
     n = bar_index
     var ln = array.new_line(0) 
     var LONG = false
     var SHORT = false
     if barstate.isfirst
         for i = 0 to 499
             array.push(ln,line.new(na,na,na,na))
     //----
     float y2 = na
     float y1 = na
     float y1_d = na
     //----
     line l = na
     label lb = na
     if barstate.islast
         for i = 0 to min(499,n-1)
             sum = 0.
             sumw = 0.
             for j = 0 to min(499,n-1)
                 w = exp(-(pow(i-j,2)/(h*h*2)))
                 sum += src[j]*w
                 sumw += w
             y2 := sum/sumw
             d = y2 - y1
    
             l := array.get(ln,i)
             line.set_xy1(l,n-i+1,y1)
             line.set_xy2(l,n-i,y2)
             line.set_color(l,y2 > y1 ? #ff1100 : #39ff14)
             line.set_width(l,2)
    
             if d > 0 and y1_d < 0
                 label.new(n i+1,src[i],'▲',color=#00000000,style=label.style_label_up,textcolor=#39ff14,textalign=text.align_center)
                 LONG := true
             if d < 0 and y1_d > 0
                 SHORT := true
                 label.new(n-i+1,src[i],'▼',color=#00000000,style=label.style_label_down,textcolor=#ff1100,textalign=text.align_center)
             y1 := y2
             y1_d := d
     //--------- ALERTING 
    
    
     alertcondition(LONG,  title='BUY', message='LONG {{ticker}} TIMEFRAME {{interval}}')
     LONG := false //reset flag
     alertcondition(SHORT, title='Sell', message='SHORT {{ticker}} TIMEFRAME {{interval}}') 
     SHORT := false //reset flag
    

标签: pine-scripttradingview-api

解决方案


推荐阅读