В Pinescript 4 все еще нет серий для int typecasting? - PullRequest
1 голос
/ 08 июля 2019

Я пытаюсь использовать ряд как целое число.Pinescript 4 отсутствует, но до сих пор нет способа сделать это:

//@version=4 
study("Test Script", overlay=true) 

l = 1 
l := nz(l[1]) + 1 
l := l>20?1:l 
ma = sma(close, l) 
plot(ma, linewidth=4, color=color.black) 

Я также пытался использовать «var».На этот раз ошибок нет, но не работает, как ожидалось

//@version=4 
study("Test Script", overlay=true) 

var l = 1 
l := l>=20?1:l+1 
ma = sma(close, l) 
plot(ma, linewidth=4, color=color.black)

есть предложения?

1 Ответ

0 голосов
/ 09 июля 2019

Я дважды проверил, но не смог найти способ привести серию к целому числу.

К счастью, в вашем случае вы можете написать собственную функцию SMA, чтобы обойти ограничение целочисленного литерала стандартной функции sma().

//@version=4 
study("Test Script", overlay=true) 
moving_sma(source_series, length) =>
    if length == 1.0 // if length is 1 we actually want the close instead of an average
        source_series
    else // otherwise we can take the close and loop length-1 previous values and divide them to get the moving average
        total = source_series
        for i = 1 to length - 1
            total := total + source_series[i]
        total / length

sma_length = 1.0
sma_length := nz(sma_length[1]) == 0.0 ? 1.0 : sma_length[1]
if sma_length < 20
    sma_length := sma_length + 1
else
    sma_length := 1

plot(moving_sma(close, sma_length), linewidth=4, color=color.yellow)
...