代码之家  ›  专栏  ›  技术社区  ›  FIreRavage

为什么脚本计算错误?

  •  0
  • FIreRavage  · 技术社区  · 2 年前

    我正在写一个脚本,比较两个符号之间%差异的演变,但我不明白为什么计算错误。

    这是脚本:

    //@version=4
    study(title="Compare", shorttitle="Compare")
    rocPeriod = input(1, minval = 1)
    Max = input(defval = 5, type = input.float)
    Min = input(defval = -5, type = input.float)
    showLines = input(true)
    showDelta = input(true)
    sym1 = input(defval = "BINANCE:BTCUSDT", type = input.symbol)
    sym2 = input(defval = "BINANCE:ETHUSDT", type = input.symbol)
    
    perc_change = roc(close, rocPeriod)
    res = ""
    
    s1 = security(sym1, res, perc_change)
    s2 = security(sym2, res, perc_change)
    delta = s1 - s2
    
    var float cumulativeDelta = 0.0
    if barstate.isfirst
        cumulativeDelta == delta
    else
        cumulativeDelta := cumulativeDelta + delta
    
    plot(showLines ? s1 : na, "s1", color.orange)
    plot(showLines ? s2 : na, "s2", color.blue)
    hline(0)
    plot(showDelta ? delta : na, "delta", delta > 0 ? color.lime : color.red, 1, plot.style_columns)
    plot(cumulativeDelta, title = "CD", color= color.fuchsia)
    
    bgcolor(cumulativeDelta >= Max ? color.red : na, transp=50)
    bgcolor(cumulativeDelta <= Min ? color.green : na, transp=50)
    

    起初,一切都很顺利,脚本识别第一个条形图并设置值“cumulativeDelta”=“delta”,然后正确执行第一次计算。然而,在几小节之后,“累积增量”的结果开始略有错误(例如:0.31+0.20=0.52),然后,随着小节的相继,这种差异只会变得更加明显,直到它导致最终结果与现实之间的重大差异。

    错误在哪里?提前感谢您的帮助

    0 回复  |  直到 2 年前
        1
  •  0
  •   FIreRavage    2 年前

    我通过将s1和s2值取整,然后根据这些取整值进行计算,解决了这个问题