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



