【问题标题】:All-time-high not plotting correctly in Pine Script在 Pine Script 中无法正确绘制历史最高记录
【发布时间】:2021-03-15 20:45:11
【问题描述】:

我正在尝试创建一个脚本,将给定交易品种的历史最高价显示为交易视图上的一条水平线。我已经想出了如何搜索历史最高点,但是当我尝试显示它时,它似乎显示了以前的历史最高点。我添加了诊断输出,这似乎显示了我希望绘制的线的价格,但在实际图表上它绘制得更低。我做错了什么?

// © dickymoore

//@version=4
study("All-time-high", overlay=true)

// input
Athlw = input(title="All-time-high line widths", type=input.integer, defval=4, minval=0, maxval=4)
Athlc = input(title="All-time-high line color", type=input.color, defval=color.new(color.fuchsia,50))
years = input(title="Years back to search for an ATH", type=input.integer, defval=6,minval=0, maxval=100)


seriesForAth=security(syminfo.tickerid,"M",high,barmerge.gaps_off,barmerge.lookahead_off)
highestHigh = highest(seriesForAth,(12*years))


// Draw lines from the previous highs and lows
newSession = change(time('D'))
count = barssince(newSession)

var line AllTimeHigh = na

if (newSession)
    AllTimeHigh  := line.new(x1=bar_index[1],y1=highestHigh,
                 x2=bar_index,y2=highestHigh, extend=extend.both, color=Athlc,width=Athlw)
    
    line.delete(id = AllTimeHigh[1]) 
         
         
//diagnostics

f_print(_text) =>
    var _label = label.new(bar_index, na, _text, xloc.bar_index, yloc.price, color(na), label.style_none, color.gray, size.large, text.align_left)
    label.set_xy(_label, bar_index, highest(10)[1])
    label.set_text(_label, _text)
f_print("Diagnostics \n" + "\nHigh = " + tostring(highestHigh))

【问题讨论】:

    标签: pine-script


    【解决方案1】:

    这样更简单,更紧凑。

    //@version=4
    study("All-time-high", "ATH", overlay=true)
    
    // input
    Athlw = input(title="All-time-high line widths", type=input.integer, defval=4, minval=0, maxval=4)
    Athlc = input(title="All-time-high line color", type=input.color, defval=color.new(color.fuchsia,50))
    years = input(title="Years back to search for an ATH", type=input.integer, defval=6,minval=0, maxval=100)
    
    var float   highestHigh = 0
    var line    allTimeHigh = line.new(na, na, na, na, extend=extend.both, color=Athlc, width=Athlw)
    
    if high > highestHigh
        highestHigh := high
    
    line.set_xy1(allTimeHigh, bar_index-1, highestHigh)
    line.set_xy2(allTimeHigh, bar_index,   highestHigh)
    

    编辑 1
    想一想,我们不需要在每个酒吧移动线路。
    我们可以移动最后一根柱子上的线。

    //@version=4
    study("All-time-high", "ATH", overlay=true)
    
    // input
    Athlw = input(title="All-time-high line widths", type=input.integer, defval=4, minval=0, maxval=4)
    Athlc = input(title="All-time-high line color", type=input.color, defval=color.new(color.fuchsia,50))
    years = input(title="Years back to search for an ATH", type=input.integer, defval=6,minval=0, maxval=100)
    
    var float   highestHigh = 0
    var line    allTimeHigh = line.new(na, na, na, na, extend=extend.both, color=Athlc, width=Athlw)
    
    if high > highestHigh
        highestHigh := high
    
    if barstate.islast
        line.set_xy1(allTimeHigh, bar_index-1, highestHigh)
        line.set_xy2(allTimeHigh, bar_index,   highestHigh)
    

    【讨论】:

    • 这么快的反应和写得很好的脚本。非常感谢!
    • 在我的答案中添加了编辑 1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 2017-01-29
    • 2019-09-04
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    相关资源
    最近更新 更多