失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > MA EMA MACD BOLL KDJ指标计算

MA EMA MACD BOLL KDJ指标计算

时间:2021-09-13 16:45:41

相关推荐

MA EMA MACD BOLL KDJ指标计算

MA、EMA、MACD、BOLL、KDJ指标计算

# encoding:utf-8import osimport sysimport pandas as qh_pdimport timeimport datetimeimport talibif __name__ == "__main__":print("本文件引用")qh_path = os.path.abspath(os.path.join(os.getcwd(), "..")) # 返回当前工作目录 先到达 QH_网络配置 的父文件夹路径sys.path.append(qh_path) # 添加自己指定的搜索路径else:print("外文件引用")qh_path = os.path.abspath(os.path.join(os.getcwd(), "..")) # 返回当前工作目录 先到达 QH_网络配置 的父文件夹路径sys.path.append(qh_path) # 添加自己指定的搜索路径import QH_Stock_Treasure_Box.qh_parameter_chuanru as qh_chcan # 传入参数qh_pd.set_option('display.max_columns', None)qh_pd.set_option('display.width',1000)def Qh_Target_MA(qh_df,qh_close = "收盘价",qh_timeperiod = 5):"""计算MA指标, 作者:阙辉:param qh_df::param qh_close::param qh_timeperiod::return:"""qh_cloumn = "MA_{}".format(qh_timeperiod)qh_df[qh_cloumn] = talib.MA(qh_df[qh_close], timeperiod=qh_timeperiod, matype=0)return qh_dfdef Qh_Target_EMA(qh_df,qh_close = "收盘价",qh_timeperiod = 5):"""计算EMA指标, 作者:阙辉:param qh_df::param qh_close::param qh_timeperiod::return:"""qh_cloumn = "EMA_{}".format(qh_timeperiod)qh_df[qh_cloumn] = talib.EMA(qh_df[qh_close], timeperiod=qh_timeperiod)return qh_dfdef Qh_Target_MACD(qh_df,qh_close = "收盘价",qh_fastperiod=12, qh_slowperiod=26, qh_signalperiod=9):"""计算MACD指标, 作者:阙辉:param qh_df::param qh_close::param qh_fastperiod::param qh_slowperiod::param qh_signalperiod::return:"""qh_diff = "DIFF_{}".format(qh_slowperiod)qh_dea = "DEA_{}".format(qh_slowperiod)qh_macd = "MACD_{}".format(qh_slowperiod)qh_df[qh_diff], qh_df[qh_dea], qh_df[qh_macd] = talib.MACD(qh_df[qh_close], fastperiod=qh_fastperiod,slowperiod=qh_slowperiod, signalperiod=qh_signalperiod)qh_df[qh_macd] = qh_df[qh_macd] * 2 # 修正macdreturn qh_dfdef Qh_Target_BOLL(qh_df,qh_close = "收盘价",qh_timeperiod=20, qh_nbdev=2):"""计算BOLL指标, 作者:阙辉:param qh_df::param qh_close::param qh_timeperiod::param qh_nbdev::return:"""qh_uuper = "UPPER_{}".format(qh_timeperiod)qh_mid = "MID_{}".format(qh_nbdev)qh_lower = "LOWER_{}".format(qh_nbdev)qh_df[qh_uuper], qh_df[qh_mid], qh_df[qh_lower] = talib.BBANDS(qh_df[qh_close], timeperiod=qh_timeperiod,nbdevup=qh_nbdev, nbdevdn=qh_nbdev, matype=0)return qh_dfdef Qh_Target_KDJ(qh_df,qh_hig = "最高价",qh_low = "最低价",qh_close = "收盘价",qh_fastk=9, qh_slowk=3,qh_slowd=3):"""计算KDJ指标, 作者:阙辉:param qh_df::param qh_hig::param qh_low::param qh_close::param qh_fastk::param qh_slowk::param qh_slowd::return:"""qh_K = "K_{}".format(qh_fastk)qh_D = "D_{}".format(qh_fastk)qh_J = "J_{}".format(qh_fastk)qh_df[qh_K], qh_df[qh_D] = talib.STOCH(qh_df[qh_hig],qh_df[qh_low],qh_df[qh_close],fastk_period=qh_fastk,slowk_period=qh_slowk,slowk_matype=1,slowd_period=qh_slowd,slowd_matype=1)qh_df[qh_J] = 3 * qh_df[qh_K] - 2 * qh_df[qh_D]return qh_dfdef Qh_Target_KDJ_CN(qh_df,qh_hig = "最高价",qh_low = "最低价",qh_close = "收盘价",qh_fastk_period=9,qh_slowk_period=3,qh_fastd_period=3):"""计算KDJ指标 作者:阙辉:param qh_higt::param qh_low::param qh_close::param qh_fastk_period::param qh_slowk_period::param qh_fastd_period::return:"""QH_K = "QH_K_{}".format(qh_fastk_period)QH_D = "QH_D_{}".format(qh_fastk_period)QH_J = "QH_J_{}".format(qh_fastk_period)qh_df[qh_low] = qh_df[qh_low].astype("float64")qh_df[qh_low] = qh_df[qh_low].fillna(0)QH_MinLow = qh_df[qh_low].rolling(qh_fastk_period, min_periods=qh_fastk_period).min() # 最低价QH_MinLow.fillna(value=qh_df[qh_low].expanding().min(), inplace=True) # 填充空值 NaNqh_df[qh_hig] = qh_df[qh_hig].astype("float64")qh_df[qh_hig] = qh_df[qh_hig].fillna(0)QH_MaxHigh = qh_df[qh_hig].rolling(qh_fastk_period, min_periods=qh_fastk_period).max() # 最高价QH_MaxHigh.fillna(value=qh_df[qh_hig].expanding().max(), inplace=True) # 填充空值 NaNqh_df[qh_close] = qh_df[qh_close].astype("float64")qh_df[qh_close] = qh_df[qh_close].fillna(0)# RSV 公式:RSV = (收盘价 - 最低价)/(最高价 - 最低价) * 100 n日RSV=(Cn-Ln)÷(Hn-Ln)×100QH_RSV = (qh_df[qh_close] - QH_MinLow) / (QH_MaxHigh - QH_MinLow) * 100QH_RSV = QH_RSV.fillna(0)# 当日K值=2/3×前一日K值+1/3×当日RSVqh_df[QH_K] = QH_RSV.ewm(adjust=False, alpha=1 / qh_slowk_period).mean()# 当日D值=2/3×前一日D值+1/3×当日K值qh_df[QH_D] = qh_df[QH_K].ewm(adjust=False, alpha=1 / qh_fastd_period).mean()# J=3D—2Kqh_df[QH_J] = 3 * qh_df[QH_K] - 2 * qh_df[QH_D]return qh_dfif __name__ == "__main__":qh_code = "SZ000001"qh_times = "天"qh_fuquan = "不复权"qh_chaxun_id = "QH_ChaXun_00016"#获取sqlqh_sql0 = qh_chcan.Qh_CX_Sql_DB(qh_path,qh_chaxun_id = qh_chaxun_id,qh_sql0 ="",qh_ret_sql = True)qh_sql = qh_sql0.format(qh_code,qh_times,qh_fuquan)#查询数据qh_list_sql_ = qh_chcan.Qh_CX_Sql_DB(qh_path,qh_chaxun_id = qh_chaxun_id,qh_sql0 = qh_sql,qh_ret_sql = False,qh_filed = True)qh_list_sql_filed = qh_list_sql_[1][1][0] #股票代码qh_list_sql = qh_list_sql_[1][1][1:] #股票历史行情数据qh_df_stock = qh_pd.DataFrame(qh_list_sql,columns=qh_list_sql_filed)qh_df_stock = Qh_Target_MA(qh_df_stock,qh_close = "收盘价",qh_timeperiod = 5)qh_df_stock = Qh_Target_EMA(qh_df_stock, qh_close="收盘价", qh_timeperiod=20)qh_df_stock = Qh_Target_MACD(qh_df_stock, qh_close="收盘价", qh_fastperiod=12, qh_slowperiod=26, qh_signalperiod=9)qh_df_stock = Qh_Target_BOLL(qh_df_stock, qh_close="收盘价", qh_timeperiod=20, qh_nbdev=2)# qh_df_stock = Qh_Target_KDJ(qh_df_stock, qh_hig="最高价", qh_low="最低价", qh_close="收盘价", qh_fastk=9, qh_slowk=3, qh_slowd=3)qh_df_stock = Qh_Target_KDJ_CN(qh_df_stock, qh_hig="最高价", qh_low="最低价", qh_close="收盘价", qh_fastk_period=9, qh_slowk_period=3,qh_fastd_period=3)print(qh_df_stock)

计算结果

KDJ

BOLL

MACD

如果觉得《MA EMA MACD BOLL KDJ指标计算》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。