我試圖用這個代碼計算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}$
我怎么能解決這個問題?
謝謝。