2021-04-23
3 min read
量化交易——MACD交易方案
热度: loading...
百度百科如下定义:
MACD称为异同移动平均线,是从双指数移动平均线发展而来的,由快的指数移动平均线(EMA12)减去慢的指数移动平均线(EMA26)得到快线DIF,再用2×(快线DIF-DIF的9日加权移动均线DEA)得到MACD柱。MACD的意义和双移动平均线基本相同,即由快、慢均线的离散、聚合表征当前的多空状态和股价可能的发展变化趋势,但阅读起来更方便。MACD的变化代表着市场趋势的变化,不同K线级别的MACD代表当前级别周期中的买卖趋势。
简单来说,MACD指标是由两线一柱组合起来形成,快速线(白色线)为DIF,慢速线(黄色线)为DEA,柱状图为MACD。
基本交易逻辑:
1.当DIF和DEA均大于0(即在图形上表示为它们处于零线以上)并向上移动时,一般表示为行情处于多头行情中,可以买入开仓或多头持仓;
2.当DIF和DEA均小于0(即在图形上表示为它们处于零线以下)并向下移动时,一般表示为行情处于空头行情中,可以卖出开仓或观望。
3.当DIF和DEA均大于0(即在图形上表示为它们处于零线以上)但都向下移动时,一般表示为行情处于下跌阶段,可以卖出开仓和观望;
4.当DIF和DEA均小于0时(即在图形上表示为它们处于零线以下)但向上移动时,一般表示为行情即将上涨,股票将上涨,可以买入开仓或多头持仓。
量化交易逻辑:
#MACD判断买点
def macd_buy_flag_function(bar,dea_sub_dif_current):
if len(bar) < 100: # 如果K线数组长度太小,就直接返回跳过
return
macd = TA.MACD(bar, 12, 26, 9) # 计算MACD值
dif = macd[0][-2] # 获取DIF的值
dea = macd[1][-2] # 获取DEA的值
# macd买入指标判断 DEA-DIF最大时买入
dea_sub_dif_new = dea-dif
if dea_sub_dif_new > 20 and (dea_sub_dif_new - dea_sub_dif_current) < 0:
macd_buy_flag = True # 交易标志位置1
else:
macd_buy_flag = False
dif_buy_current = dif
dea_sub_dif_current = dea_sub_dif_new #当前DEA-DIF记为历史
return macd_buy_flag,dif_buy_current,dea_sub_dif_current
#MACD判断卖点
def macd_sell_flag_function(bar,dif_sub_dea_current,dif_buy_current):
if len(bar) < 100: # 如果K线数组长度太小,就直接返回跳过
return
macd = TA.MACD(bar, 12, 26, 9) # 计算MACD值
dif = macd[0][-2] # 获取DIF的值
dea = macd[1][-2] # 获取DEA的值
# macd卖出指标判断 dif-dea最大时卖出
dif_sub_dea_new = dif-dea
# dif上升超过30 DIF-DEA达到波峰 关键调节点dif-dif_buy_current
# if (dif-dif_buy_current)>20 and dif_sub_dea_new > 0 and (dif_sub_dea_new - dif_sub_dea_current) < 0:
if dif_sub_dea_new > 20 and (dif_sub_dea_new - dif_sub_dea_current) < 0:
macd_sell_flag = True
else:
macd_sell_flag = False
dif_sub_dea_current = dif_sub_dea_new#当前DIF-DEA记为历史
return macd_sell_flag,dif_sub_dea_current
未来研究方向:
- 不同K线级别MACD交易策略融合
请到客户端“主题--自定义配置--valine”中填入ID和KEY