我可以使用 hline 来获取动态值吗?

问题描述 投票:0回答:2

我正在交易视图上开发一个指标。我的愿望是对我收到的动态值进行(ohcl)计算并使用地平线。对于动态值,推荐使用new.line函数,我也使用它,但是我不能像hline那样直接将价格写入右侧的价格栏,这在绘制图表时不太好。标签选项等。这不是很令人鼓舞。有针对这个的解决方法吗?我正在分享我的示例代码脚本。

yuksek = request.security(syminfo.tickerid, currentTF, high[1], lookahead=barmerge.lookahead_on)
dusuk = request.security(syminfo.tickerid, currentTF, low[1], lookahead=barmerge.lookahead_on)
kapanis = request.security(syminfo.tickerid, currentTF, close[1], lookahead=barmerge.lookahead_on)


pp = (yuksek + dusuk + kapanis) / 3
r1 = 2 * pp - dusuk
r2 = pp + yuksek - dusuk
r3 = yuksek + 2 * (pp - dusuk)
s1 = 2 * pp - yuksek
s2 = pp - (yuksek - dusuk)
s3 = dusuk - 2 * (yuksek - pp)


var line_pp = line.new(na, na, na, na, width=1, color=color.black)
var label_pp = label.new(na, na, '', style=label.style_label_down, color=color.black, textcolor=color.white, size=size.small)

var line_r1 = line.new(na, na, na, na, width=1, color=color.green)
var label_r1 = label.new(na, na, '', style=label.style_label_down, color=color.green, textcolor=color.white, size=size.small)

var line_r2 = line.new(na, na, na, na, width=1, color=color.green)
var label_r2 = label.new(na, na, '', style=label.style_label_down, color=color.green, textcolor=color.white, size=size.small)

var line_r3 = line.new(na, na, na, na, width=1, color=color.green)
var label_r3 = label.new(na, na, '', style=label.style_label_down, color=color.green, textcolor=color.white, size=size.small)

var line_s1 = line.new(na, na, na, na, width=1, color=color.red)
var label_s1 = label.new(na, na, '', style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)

var line_s2 = line.new(na, na, na, na, width=1, color=color.red)
var label_s2 = label.new(na, na, '', style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)

var line_s3 = line.new(na, na, na, na, width=1, color=color.red)
var label_s3 = label.new(na, na, '', style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)


if barstate.islast
    line.set_xy1(line_pp, bar_index - 0, pp)
    line.set_xy2(line_pp, bar_index + 1, pp)
    line.set_extend(line_pp, extend.right)
    label.set_xy(label_pp, bar_index + 30, pp)
    label.set_text(label_pp, 'Karar Seviyesi ▪ ' + str.tostring(pp, format.mintick))

    line.set_xy1(line_r1, bar_index - 0, r1)
    line.set_xy2(line_r1, bar_index + 1, r1)
    line.set_extend(line_r1, extend.right)
    label.set_xy(label_r1, bar_index + 30, r1)
    label.set_text(label_r1, 'Direnç ▪ ' + str.tostring(r1, format.mintick))

    line.set_xy1(line_r2, bar_index - 0, r2)
    line.set_xy2(line_r2, bar_index + 1, r2)
    line.set_extend(line_r2, extend.right)
    label.set_xy(label_r2, bar_index + 30, r2)
    label.set_text(label_r2, 'Direnç ▪ ' + str.tostring(r2, format.mintick))

    line.set_xy1(line_r3, bar_index - 0, r3)
    line.set_xy2(line_r3, bar_index + 1, r3)
    line.set_extend(line_r3, extend.right)
    label.set_xy(label_r3, bar_index + 30, r3)
    label.set_text(label_r3, 'Direnç ▪ ' + str.tostring(r3, format.mintick))

    line.set_xy1(line_s1, bar_index - 0, s1)
    line.set_xy2(line_s1, bar_index + 1, s1)
    line.set_extend(line_s1, extend.right)
    label.set_xy(label_s1, bar_index + 30, s1)
    label.set_text(label_s1, 'Destek ' + str.tostring(s1, format.mintick))

    line.set_xy1(line_s2, bar_index - 0, s2)
    line.set_xy2(line_s2, bar_index + 1, s2)
    line.set_extend(line_s2, extend.right)
    label.set_xy(label_s2, bar_index + 30, s2)
    label.set_text(label_s2, 'Destek ' + str.tostring(s2, format.mintick))

    line.set_xy1(line_s3, bar_index - 0, s3)
    line.set_xy2(line_s3, bar_index + 1, s3)
    line.set_extend(line_s3, extend.right)
    label.set_xy(label_s3, bar_index + 30, s3)
    label.set_text(label_s3, 'Destek: ' + str.tostring(s3, format.mintick))

我尝试画线但失败了。

pine-script pine-script-v5 tradingview-api
2个回答
0
投票

您不能在本地范围内使用

hline()
,也不能将其与动态值一起使用。

通常的解决方法是使用

line
label
。但是,您表示您正在寻找不同的解决方案。

一种解决方案可能是用

plot()
绘制它们并使用
show_last=1
这样你就不会有历史记录和
trackprice=true
这样它将是一条水平虚线。

然后,在图表设置中,您可以从

Name
下拉菜单中选择
value
Indicators and financials
。这样,它就会在价格刻度上标记出价值和名称。

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vitruvius

//@version=5
indicator("My script", overlay=true)

currentTF = timeframe.period
yuksek = request.security(syminfo.tickerid, currentTF, high[1], lookahead=barmerge.lookahead_on)
dusuk = request.security(syminfo.tickerid, currentTF, low[1], lookahead=barmerge.lookahead_on)
kapanis = request.security(syminfo.tickerid, currentTF, close[1], lookahead=barmerge.lookahead_on)

pp = (yuksek + dusuk + kapanis) / 3
r1 = 2 * pp - dusuk
r2 = pp + yuksek - dusuk
r3 = yuksek + 2 * (pp - dusuk)
s1 = 2 * pp - yuksek
s2 = pp - (yuksek - dusuk)
s3 = dusuk - 2 * (yuksek - pp)

plot(r1, "R1", color.red, show_last=1, trackprice=true)
plot(s1, "S1", color.green, show_last=1, trackprice=true)

Kolay 明胶。


0
投票

感谢您的评论。不幸的是我无法得到我想要的。我使用 barstate.islast 删除历史点。这次,右侧价格栏中包含的点被删除。我想我唯一的机会是使用 new.line...

© www.soinside.com 2019 - 2024. All rights reserved.