BOLL很容易计算,但有时候会考虑到布林上下轨的角度问题。话不多说,直接上主代码。
def BOLL(klinedata, N=20, K=2): dataframe = dict({'time': [i["time_str"] for i in klinedata], "open": [i["open"] for i in klinedata], "close": [i["close"] for i in klinedata], "low": [i["low"] for i in klinedata], "high": [i["high"] for i in klinedata] }) df = pd.DataFrame(dataframe) # 处理数据 tmp2 = round(df['close'].rolling(N).std(ddof=0), 2) df['mid'] = round(df['close'].rolling(N).mean(), 2) df['upper'] = round(df['mid'] + K * tmp2, 2) df['lower'] = round(df['mid'] - K * tmp2, 2) df['mid_angle'] = np.arctan((df.mid / df.mid.shift(1) - 1) * 100) * 180 / 3.1415926 # 中轨角度 df['upper_angle'] = np.arctan((df.upper / df.upper.shift(1) - 1) * 100) * 180 / 3.1415926 # 上轨角度 df['lower_angle'] = np.arctan((df.lower / df.lower.shift(1) - 1) * 100) * 180 / 3.1415926 # 下轨角度 return df
其中klinedata是在币安/火币/okex交易所获取的K线,
币圈量化研究,欢迎一起探讨。+V:13699885251