簡體   English   中英

Pine-Script - 不能在 PLOTSHAPE 上使用 IF,解決方案?

[英]Pine-Script - can't use IF on PLOTSHAPE, solutions?

我試圖讓我的指標在穿過 RSI 上的高線(例如在 80)時顯示一個圓圈,但不會在接下來的 80 或更高的柱線/點上做更多的圓圈,除非它穿過下線(例如在 30) 首先。 然后我希望它在穿過 30 時放置一個圓圈,但不再在后續條上放置更多(與 80 基本相同)。

我正在嘗試使用“plotshape”,但是如果不能將“plotshape”放在更復雜的 IF 語句/函數中,我就無法使其工作。 但是“plotshape”不能在 IF 語句中使用,所以我完全被卡住了。 在 C++ 或類似的簡單中,但不是在 Pine Script 中。

這段代碼基本上用於標記交叉點,但我不知道如何停止它標記后面的條。

//@version=5
indicator(title='title', shorttitle='RSI', overlay=false)

green  = color.new(color.green,  0)
red    = color.new(color.red,    0)
yellow = color.new(color.yellow, 0)

top_line = input(title='Default bull-line', defval=80.0)
bot_line = input(title='Default bear-line', defval=30.0)

src = input(title='RSI Source', defval=close)
len = input(title='RSI Length', defval=13)
rsi = ta.rsi(src, len)
plot(rsi, color=yellow)

var int A = na
var int B = na

if rsi >= top_line and rsi[1] < top_line
    A := 0

plotshape(rsi >= top_line and rsi[1] < top_line and A == 0, location=location.top,    color=green, style=shape.circle, text='')

if rsi >= top_line and rsi[1] >= top_line
    A := 1

if rsi <= bot_line and rsi[1] > bot_line
    B := 0

plotshape(rsi <= bot_line and rsi[1] > bot_line and B == 0, location=location.bottom, color=red,   style=shape.circle, text='')

if rsi >= bot_line and rsi[1] >= bot_line
    B := 1


plot(top_line, title='bullish', color=green)
plot(bot_line, title='bearish', color=red)

您可以使用ta.barssince()函數阻止它在交叉后標記以下柱線。

crossoverCondition = ...
crossover = ta.barssince(crossoverCondition) == 1

bgcolor(crossover ? color.green : na)

另外,就像你說的,你不能在 if 語句下使用 plotshape 。 你必須使用條件顏色。 前任:

plot(close, color=close > ta.ema(close, 200) ? color.green : na)

我需要做的就是在代碼中添加一個計數器而不是一個標志來完成這項工作。

if rsi >= top_line
    A := A + 2
    B := 0

if rsi <= bot_line
    B := count2 + 2
    A := 0

然后顯然對關聯的表達式稍加修改

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM