如何正确计算加密货币价格的BBP(布林带百分比)?

时间:2018-11-10 06:04:00

标签: python pandas finance ta-lib

我尝试通过此代码计算python中的BBP(布林带百分比)。但是,我的BBP函数为inf返回了-infbbp。令人困惑的是,当我使用一些像ETH这样的硬币收盘价时,此函数返回正确的bbp数字(不是inf)。

这是我的python代码:

import requests
import json 
import pandas as pd
import numpy as np
from talib import RSI, BBANDS

def BBP(price, close):
    up, mid, low = BBANDS(close, timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)
    bbp = (price['close'] - low) / (up - low)
    print(up[-1])
    print(mid[-1])
    print(low[-1])
    print(bbp.iloc[-1])
    return bbp

r = requests.get('https://min-api.cryptocompare.com/data/histohour?fsym=SALT&tsym=BTC&limit=900&s=Binance&aggregate=5')
j = r.json()

price = pd.DataFrame(j['Data'])
price = price.sort_values(by='time', ascending=False)
price = price.iloc[::-1]
price = price.dropna()
close = price['close'].values

up, mid, low = BBANDS(close, timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)

rsi = RSI(close, timeperiod=14)
bbp = BBP(price, close)

price.insert(loc=0, column='RSI',value=rsi)
price.insert(loc=0, column='BBP',value=bbp)

print(price.head(30))

如果我在请求API中使用ETH而不是SALT,则代码可以正常工作,但以其他价格较低的硬币,BBP函数将{{1 }}列在价格数据框中。

这是inf返回值的示例:

BBP

我该如何解决?

谢谢。

1 个答案:

答案 0 :(得分:0)

这就是我使用BBANDS:

的方式
upperband, middleband, lowerband = talib.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=talib.MA_Type.T3)

我将收盘价(及其他价格)乘以1000000,因为我随后对其进行了缩放。也许是因为收盘价太低。