簡體   English   中英

Pinescript security function for color boolean with mutable variable

[英]Pinescript security function for colour boolean with mutable variable

我在將珊瑚趨勢指標顏色代碼繪制到我的 15 分鍾 21EMA 證券 function 時遇到問題。由於珊瑚趨勢指標顏色代碼有一個可變變量,我無法解決它。 這是我的下一級編碼,哈哈。

我會發帖

  • 代碼
  • 截圖
  • 問題
  • 我試過的解決方案

代碼:

//@version=5

indicator(title='CT Indi', shorttitle='', overlay=true)


sm = input(21, title='Smoothing Period')
cd = input(0.4, title='Constant D')

di = (sm - 1.0) / 2.0 + 1.0
c1 = 2 / (di + 1.0)
c2 = 1 - c1
c3 = 3.0 * (cd * cd + cd * cd * cd)
c4 = -3.0 * (2.0 * cd * cd + cd + cd * cd * cd)
c5 = 3.0 * cd + 1.0 + cd * cd * cd + 3.0 * cd * cd
i1 = 0.0
i1 := c1 * request.security(syminfo.tickerid, "15", close) + c2 * nz(i1[1])
i2 = 0.0
i2 := c1 * i1 + c2 * nz(i2[1])
i3 = 0.0
i3 := c1 * i2 + c2 * nz(i3[1])
i4 = 0.0
i4 := c1 * i3 + c2 * nz(i4[1])
i5 = 0.0
i5 := c1 * i4 + c2 * nz(i5[1])
i6 = 0.0
i6 := c1 * i5 + c2 * nz(i6[1])

bfr = -cd * cd * cd * i6 + c3 * i5 + c4 * i4 + c5 * i3

bfrC = bfr > nz(bfr[1]) ? color.white : bfr < nz(bfr[1]) ? #056656 : na

plot(request.security(syminfo.tickerid, "1", ta.ema(close, 315)), title='15m 21 EMA', color=bfrC, linewidth=2)

截圖:

在此處輸入圖像描述

問題:

從 15 分鍾時間范圍的屏幕截圖(右下角)可以看出:根據代碼中的規則繪制 21 EMA 並更改顏色。 這很棒。 現在我想把它帶到其他時間范圍(尤其是較低的時間范圍)。 在頂部和左下角,我們找到 5 分鍾和 10 分鍾圖表,那里繪制了 15 分鍾 21 EMA。 但顏色變化與 15 分鍾時間范圍內的不同。 它接管了當前時間范圍的信息(因此這里是 5 分鍾和 10 分鍾)? 如何將可變變量循環到安全 function 到顏色布爾值?

我嘗試的解決方案:

所以我想如果我將創建顏色開關的那條線也放入安全 function 中,事情就會起作用:

plot(request.security(syminfo.tickerid, "1", ta.ema(close, 315)), title='15m 21 EMA', color=request.security(syminfo.tickerid, "15", bfrC), linewidth=2)

但后來我得到了“不能使用可變變量作為參數......”的評論。 似乎應該使用function() => 但是我如何將它用於那種顏色 boolean?

更新

當我將答案中的這段代碼復制到 Pinescript 中時,我得到了特定時間范圍內的常規 21 EMA,並且着色不是我想要的(15 分鍾)。

我自己取得了一些進步。 但我被困在兩者之間的空間。 這是代碼:

//@version=5

indicator(title='CT Indi', shorttitle='', overlay=true)


sm = input(21, title='Smoothing Period')
cd = input(0.4, title='Constant D')

di = (sm - 1.0) / 2.0 + 1.0
c1 = 2 / (di + 1.0)
c2 = 1 - c1
c3 = 3.0 * (cd * cd + cd * cd * cd)
c4 = -3.0 * (2.0 * cd * cd + cd + cd * cd * cd)
c5 = 3.0 * cd + 1.0 + cd * cd * cd + 3.0 * cd * cd
i1_func() =>
    i1 = 0.0
    i1 := c1 * request.security(syminfo.tickerid, "15", close) + c2 * nz(i1[1])
i2_func() =>
    i2 = 0.0
    i2 := c1 * i1_func() + c2 * nz(i2[1])
i3_func() =>
    i3 = 0.0
    i3 := c1 * i2_func() + c2 * nz(i3[1])
i4_func() =>
    i4 = 0.0
    i4 := c1 * i3_func() + c2 * nz(i4[1])
i5_func() =>
    i5 = 0.0
    i5 := c1 * i4_func() + c2 * nz(i5[1])
i6_func() =>
    i6 = 0.0
    i6 := c1 * i5_func() + c2 * nz(i6[1])

bfr = -cd * cd * cd * request.security(syminfo.tickerid, "15", i6_func()) + c3 * request.security(syminfo.tickerid, "15", i5_func()) + c4 * request.security(syminfo.tickerid, "15", i4_func()) + c5 * request.security(syminfo.tickerid, "15", i3_func())

b1 = bfr > nz( bfr[1] )
b2 = bfr < nz( bfr[1] )

bfrC = b1 ? color.white : b2 ? #056656 : na

plot(request.security(syminfo.tickerid, "1", ta.ema(close, 315)), title='15m 21 EMA', color=bfrC, linewidth=2)

我正在尋找一種着色 (bfrC) 與前一個相同的解決方案。 所以,在我看來, where : na類似於: bfrC[1] 這一行: bfrC = b1? color.white: b2? #056656: na bfrC = b1? color.white: b2? #056656: na

在此處輸入圖像描述

任何解決方案? 謝謝!!

您必須在全局 scope 中使用request.security() function,然后才使用它。

你可以這樣做:

//@version=5

indicator(title='CT Indi', shorttitle='', overlay=true)

myTickerClose = request.security(syminfo.tickerid, "15", close)

sm = input(21, title='Smoothing Period')
cd = input(0.4, title='Constant D')

di = (sm - 1.0) / 2.0 + 1.0
c1 = 2 / (di + 1.0)
c2 = 1 - c1
c3 = 3.0 * (cd * cd + cd * cd * cd)
c4 = -3.0 * (2.0 * cd * cd + cd + cd * cd * cd)
c5 = 3.0 * cd + 1.0 + cd * cd * cd + 3.0 * cd * cd
i1 = 0.0
i1 := c1 * myTickerClose + c2 * nz(i1[1])
i2 = 0.0
i2 := c1 * i1 + c2 * nz(i2[1])
i3 = 0.0
i3 := c1 * i2 + c2 * nz(i3[1])
i4 = 0.0
i4 := c1 * i3 + c2 * nz(i4[1])
i5 = 0.0
i5 := c1 * i4 + c2 * nz(i5[1])
i6 = 0.0
i6 := c1 * i5 + c2 * nz(i6[1])

bfr = -cd * cd * cd * i6 + c3 * i5 + c4 * i4 + c5 * i3

bfrC = bfr > nz(bfr[1]) ? color.white : bfr < nz(bfr[1]) ? #056656 : na

ema21 = ta.ema(myTickerClose, 21)

plot(ema21, title='15m 21 EMA', color=bfrC, linewidth=2)

已解決,為了能夠在聲明變量時引用變量的先前值:首先初始化變量並使用 re-assign.= 運算符。

改變

bfrC = b1 ? color.white : b2 ? #056656 : na

bfrC = color(na)
bfrC := b1 ? color.white : b2 ? #056656 : nz(bfrC[1])

成功了!

暫無
暫無

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

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