【问题标题】:Tring to make an RSI indicator that works on different time scales in Pine script尝试在 Pine 脚本中制作一个在不同时间尺度上工作的 RSI 指标
【发布时间】:2021-01-13 03:27:04
【问题描述】:

好的,我的代码是这样的:

rsilength = input(14, title="RSI Length", type=input.integer)
//200 SMA
sma = sma(close, input(200))
rsiset = rsi(close, rsilength)
rsiW = security(syminfo.tickerid, "W", rsiset)  // 1 Week
rsiD = security(syminfo.tickerid, "D", rsiset)  // 1 Day
rsi4h = security(syminfo.tickerid, "240", rsiset) // 4h

if rsi4h == rsiset
    sma := sma(close, input(1200))
if rsiD == rsiset
    sma := sma(close, input(200))
if rsiW == rsiset
    sma := sma(close, input(29))

我正在尝试让 sma 图正确显示在每日、4 小时和每周图表上。

它正在工作。 SMA 线在所有 3 个时间框架上都绘制得很好。但我收到警告

应在每次计算时调用函数“sma”以保持一致性。建议从这个范围中提取调用。

有没有办法写相同的东西而不收到警告? RSI 也可以正常工作(我在代码的下方使用它们。唯一困扰我的是 ifs 中每个 sma 的 3 个警告

【问题讨论】:

    标签: pine-script trading


    【解决方案1】:
    //@version=4
    study("My Script")
    
    var int     myInput = 1
    
    rsilength   = input(14, title="RSI Length", type=input.integer)
    
    sma         = sma(close, input(200))
    
    rsiset      = rsi(close, rsilength)
    rsiW        = security(syminfo.tickerid, "W",   rsiset) // 1 Week
    rsiD        = security(syminfo.tickerid, "D",   rsiset) // 1 Day
    rsi4h       = security(syminfo.tickerid, "240", rsiset) // 4h
    
    if rsi4h == rsiset
        myInput := input(1200, "input rsi4h")
    else if rsiD == rsiset
        myInput := input( 200, "input rsiD")
    else if rsiW == rsiset
        myInput := input(  29, "input rsiW")
    
    sma := sma(close, myInput)
    
    plot(sma)
    

    【讨论】:

    • 我看到你设置了 rsilength = input(20)。我把它设置得更高,而忽略了在我的代码中添加它。对于那个很抱歉。现在会修复它。
    • 更新了我的答案以反映您的rsilength 输入参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2015-04-09
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多