我试图用这个代码计算python中的BBP(Bollinger频带百分比)。然而,我的^{cd1>}函数返回^{{cd2>}或^{cd3>}用于^{cd4>}。当我使用一些硬币收盘价时,令人困惑的是,这个函数返回正确的^{cd4>}数字(而不是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中使用^{{cd5>}而不是^{{cd8>}代码工作正常,但在其他小价格货币中,^{cd1>}函数将为价格数据帧中的^{cd1>}列返回^{cd2>}。
这是^{cd8>}的返回值示例:
^{pr2}$
我怎么能解决这个问题?
谢谢。