当使用TA-Lib中的BBANDS函数为我的框架中的收盘价列生成上、中、下波段值时,它只返回了几行包含相应值的行,而大多数行都有NaN值。
df = pd.read_csv("3131.csv", parse_dates=True, index_col="datetime")
df["upper_band"], df["middle_band"], df["lower_band"] = talib.BBANDS(df["close"], timeperiod=10)
字符串
上面是用于查找各个波段值的函数,下面是我的csv文件的一些示例行。
datetime,open,high,low,close,volume
1996-01-01,15.859429,15.944529,15.754989,15.917452,48051995.0
1996-01-02,15.87877,15.956133,15.677626,15.793671,77875009.0
1996-01-03,16.052837,16.783918,15.87877,15.913584,96602936.0
1996-01-04,15.762726,15.813012,15.553845,15.766594,100099436.0
1996-01-05,15.704703,15.704703,15.5229,15.658285,76935930.0
1996-01-08,15.62734,15.638945,14.876918,15.031645,86288584.0
型
前9行应该有NaN值,但在第1900行之后,所有行都有NaN值。有没有办法一次计算所有行的BBAND值?
1条答案
按热度按时间rvpgvaaj1#
我认为问题出在你的CSV文件里(可能有缺失值)。布林线是用SMA计算的(简单移动平均线),所以它是在一个滑动期内计算的。根据你的
timeperiod
(例如20天,10天)配置,它计算。如果您的时间段是10天,它不能像预期的那样计算前9天。您也可以检查它(通过使用data.iloc[9]
=>第10天,BBAND计算;但data.iloc[8]
=>第9天,BBAND是NaN
),铃带(BBAND)公式(时间周期:20天):
字符串
参考号:https://school.stockcharts.com/doku.php?id=technical_indicators:bollinger_bands
下面的代码在使用
yfinance
获取数据后工作:代码:
型
输出量:
型