MACD指标精讲PART1:MACD指标入门及使用法则

MACD指标精讲PART1:MACD指标入门及使用法则MACD MovingAverag 指标称为指数平滑异同移动平均线指标 是由 GeralApple 所创造 用来跟踪股价运行趋势 判断股票买卖时机的技术分析

大家好,欢迎来到IT知识分享网。

一、MACD指标入门

1.1、MACD指标的特点

(1)MACD指标来源于股价的指数移动平均线EMA,具有均线指标稳定/能追随趋势的特点,可以对市场动能做出客观的反映。同时,MACD指标去掉了均线有时频繁发出假信号的缺陷,使得指标在对中长期趋势的把握上准确率较高,深受趋势型投资者的欢迎。
(2)MACD指标实际上围绕两个离差值进行分析,是市场动能最直接的反映。两个离差值,一个是DIFF线,是快慢均线的差值,可以理解为股价上涨或下跌的速度;另一个是MACD柱线,是快慢DIFF线的差值(DIFF-DEA),可以理解为股价上涨或下跌的加速度
(3)MACD指标的滞后性:该指标剔除了股价短期上下波动的影响,主要反映市场中长期趋势,对股价短期走势的反映往往较为滞后,远不如K线形态那样及时。
(4)MACD指标不适合超短线投资者使用,不适合在盘整行情中使用。在盘整行情中,MACD指标一般会围绕着零轴上下运动,频繁发出交易信号,这些信号大多属于无效信号。


1.2、DIFF和DEA线

(1)DIFF线与DEA线的计算过程

(2)DIFF线和DEA线的用法

DIFF值 DIFF位置 DEA值 DEA位置 市场状态 操作
大于0 向上移动 大于0 向上移动 上涨动能强劲,股价处于多头行情 做多或持股待涨
小于0 向上移动 小于0 向上移动 上涨动能正在增加,可能会出现上涨走势,但是否反转还需要继续观察 少量买入股票或观望
大于0 向下移动 大于0 向下移动 下跌动能逐步增加,股价可能出现下跌趋势,但是否反转还需要继续观察 卖出部分股票或观望
小于0 向下移动 小于0 向下移动 下跌动能强劲,股价处于下跌趋势 持币观望

1.3、MACD柱线

(1)MACD柱线的由来

(2)MACD柱线的用法

柱线是对DIFF线变化快慢程度(DIFF线与DEA线的差值)的一种度量,而DIFF线则是对股价变动快慢程度的一种度量,因此可以把柱线看作为股价涨跌的加速度,并由此来理解它的各种用法。

MACD柱颜色 MACD柱趋势 市场状态 操作
红色 持续发散 表明上涨动能较强,股市处于急速上涨行情中 持股待涨或短线买入
红色 持续收敛 表明上涨动能开始衰减,投资者要警惕下跌趋势形成 当MACD柱变色或柱线与股价顶背离,就可离场
MACD柱颜色 MACD柱趋势 市场状态 操作
绿色 持续发散 表明市场正处于急速下跌阶段 持币观望或卖出股票
绿色 持续收敛 表明市场下跌动能衰减 等柱线变色或者柱线与股价出现底背离的时候,少量进行长线战略建仓,等上涨趋势确定后,再大举入场

二、MACD指标的作用和使用法则

2.1、四大作用

2.1.1判断股价涨跌趋势

DIFF状态 市场状态 操作
由下向上穿过零轴 上涨趋势已经初步形成 分批建仓
穿过零轴后冲高回落在零轴得到支撑,再次向上 上涨趋势已经彻底形成 买入
由上向下穿过零轴 下跌趋势已经初步形成 部分卖出
向下穿过后反弹确认,之后再次下跌 下跌趋势已经彻底形成 卖出
DIFF状态 股价状态 市场状态 操作
DIFF线与股价底背离 股价突破前期重要阻力位 表明上涨趋势已经初步形成,有时股价突破之后会有一个回抽确认过程,这是上涨趋势彻底形成的标志 买入
DIFF线与股价顶背离 股价跌破前期重要支撑位 表明下跌趋势已经初步形成,有时股价跌破之后会有一个反弹确认过程,这是下跌趋势彻底形成的标志 卖出

2.1.2 寻找买卖点

买卖点是指技术指标所发出的关于买进和卖出股票的信号。利用MACD指标寻找买卖点,可以有多种方法,常见的有DIFF线和DEA线与股价的背离、DIFF线和DEA线的交叉、MACD柱的背离、DIFF线和DEA线的形态等。

2.1.3寻找转支撑/阻力位

寻找支撑/阻力位是MACD指标的另一个重要作用,它主要通过以下两个方法来实现:

指标 说明
零轴 当DIFF线在零轴下方运行时,零轴对其有重要的阻力作用;而一旦DIFF线突破零轴,零轴对它就具有重要的支撑作用。这种支撑和阻力作用在实战中往往构成重要买卖点。
DEA线 DEA线因为是DIFF线的9日移动平均线,所以对DIFF线具有一定的支撑、阻碍作用。MACD指标买卖点中,“拒绝金叉卖点”和“拒绝死叉买点”都是根据DEA线的支撑和阻力作用而来的。

投资者要注意的是,当DIFF线长时间围绕着零轴窄幅震荡时,表明在股价走势中,两条快慢均线正缠绕到一起,市场正处于盘整状态。那么DIFF线围绕零轴震荡的区间一旦被突破,也会有重要的支撑或阻碍作用。

2.2、使用技巧

2.2.1 趋势第一

MACD指标作为判断市场趋势的重要工具,在使用的过程中,首先要注意的就是利用该指标判断市场趋势。

DIFF DEA值 市场状态 操作
零轴上方 零轴上方 上涨趋势 持股待涨或逢低加仓
零轴附近波动 零轴附近波动 盘整状态 高抛低吸或持币观望
零轴下方 零轴下方 下跌趋势 持币观望

2.2.2 多周期共振

2.2.3参数的修改

对股价变动的反应滞后,买卖价位有时不太理想,这是MACD指标的一个缺陷,改变这种情况的方法之一就是通过改变指标参数,使得MACD指标对走势的反应变得灵敏一些。投资者可以在实际使用中自行验证,比如修改位5/34/5,5/10/30等。但修改参数虽然能让灵敏度提高,但可靠性会有所降低,需要综合考虑。

2.2.4 多指标配合

2.2.5形态法则

4、MACD指标实操练习

结合DIFF线/MACD柱线以及股价状态,我制定了如下策略,随机选择一些股票看看实战效果如何:

DEA状态 股价状态 MACD状态 市场状态 操作
向下移动 顶背离 由红转绿 下跌动能十分强劲 卖出
向上移动 底背离 由绿转红 上涨趋势形成 分批买入,底背离买入一次,MACD变色买入一次,DIFF穿过零轴买入一次,共三次

我们以海康威视的股票为例,先定义一个存储策略函数的py文件,代码如下:

import numpy as np import pandas as pd import talib from gm.api import * import datetime import matplotlib.pyplot as plt """ MACD指标 TALIB金融库中提供的MACD函数与国内实际使用的不同,因此转换为国内常用的形式; MACD称为异同移动平均线,是从双指数移动平均线发展而来的; 由快的指数移动平均线(EMA12)减去慢的指数移动平均线(EMA26)得到快线DIF,再用2×(快线DIF-DIF的9日加权移动均线DEA)得到MACD柱。 MACD的意义和双移动平均线基本相同,即由快、慢均线的离散、聚合表征当前的多空状态和股价可能的发展变化趋势,但阅读起来更方便。 MACD的变化代表着市场趋势的变化,不同K线级别的MACD代表当前级别周期中的买卖趋势。 """ def MACD_CN(close, fastperiod = 12, slowperiod = 26, signalperiod = 9): macdDIFF,macdDEA,macd = talib.MACDEXT(close,fastperiod = fastperiod,fastmatype=1,slowperiod = slowperiod,slowmatype =1,signalperiod =signalperiod,signalmatype =1) #平滑异同移动平均线(可控制移动平均算法) macd = macd * 2 return macdDIFF,macdDEA,macd """ MACD指标买入策略 策略1:当DEA大于0时,且MACD由绿转红的时刻触发买入操作; """ def MACD_strategy_buy_simple1(close, fastperiod=12, slowperiod=26, signalperiod=9,strategy_buy_num=1): macdDIFF, macdDEA, macd = MACD_CN(close, fastperiod=12, slowperiod=26, signalperiod=9) signal = 0 # 标志位,0代表无动作,1代表买入 #策略1:当DEA大于0时,且MACD由绿转红的时刻触发买入操作; if strategy_buy_num == 1: if macdDEA[-1] > 0 and macd[-1]*macd[-2] < 0: signal = 1; return signal """ MACD指标卖出策略 策略1:当DEA小于0时,且MACD由红转绿的时刻触发卖出操作; """ def MACD_strategy_sell_simple1(close, fastperiod=12, slowperiod=26, signalperiod=9,strategy_sell_num=1): macdDIFF, macdDEA, macd = MACD_CN(close, fastperiod=12, slowperiod=26, signalperiod=9) signal = 0 # 标志位,0代表无动作,1代表卖出 #策略1:当DEA小于0时,且MACD由红转绿的时刻触发卖出操作; if strategy_sell_num == 1: if macdDEA[-1] < 0 and macd[-1]*macd[-2] < 0: signal = 1 return signal 

之后再建立一个运行的主函数:

# coding=utf-8 from __future__ import print_function, absolute_import, unicode_literals from gm.api import * import datetime import numpy as np import talib import pandas as pd import MACD_strategy import pandas as pd import matplotlib.pyplot as plt ''' 示例策略仅供参考,不建议直接实盘使用。 行业轮动策略 逻辑:以场内ETF基金代表,按照月收益率进行排序,选择收益率最高的10只ETF基金进行买入,每月进行一次调仓换股 ''' def init(context): #股票代码 context.index = "SZSE.002415" #买入股票的标志位 context.buy_signal = 0 #卖出股票的MFI阈值 context.sell_signal = 0 # 每日定时任务 schedule(schedule_func=algo, date_rule='1d', time_rule='09:30:00') # schedule(schedule_func=algo_zhiyingzhisun, date_rule='1d', time_rule='09:31:00') #根据盈利亏损值止盈止损 def algo(context): # 当天日期 now_str = context.now.strftime('%Y-%m-%d') # 获取上一个交易日及上一周交易日 last_day = get_previous_n_trading_dates(exchange='SHSE', date=now_str, n=1)[0] # 获取历史交易数据 data = history_n(symbol=context.index, frequency="1d", count=100, end_time=last_day, fields="high, low, close, volume", fill_missing="last", adjust=ADJUST_PREV, df=True) # 从dataframe中提取数据 close = data["close"].values context.buy_signal = MACD_strategy.MACD_strategy_buy_simple1(close=close, fastperiod=12, slowperiod=26, signalperiod=9, strategy_buy_num=1) context.sell_signal = MACD_strategy.MACD_strategy_sell_simple1(close=close, fastperiod=12, slowperiod=26, signalperiod=9,strategy_sell_num=1) if context.buy_signal == 1: print("买入") order_target_percent(symbol=context.index, percent=1, order_type=OrderType_Market,position_side=PositionSide_Long) if context.sell_signal == 1: print("卖出") order_target_percent(symbol=context.index, percent=0, order_type=OrderType_Market,position_side=PositionSide_Long) def algo_zhiyingzhisun(context): now_str = context.now.strftime('%Y-%m-%d') print(now_str+"执行策略2") positions = get_position() for position in positions: symbol = position['symbol'] price = position["price"] #当前行情价格 vwap = position["vwap"] #持仓均价 # print(position) if (price - vwap)/vwap < -0.1: #当亏损大于10%,止损 order_target_percent(symbol=symbol, percent=0, order_type=OrderType_Market, position_side=PositionSide_Long) print(symbol+"止损"+now_str) elif (price - vwap)/vwap > 0.4: #当盈利大于30%,止盈 order_target_percent(symbol=symbol, percent=0, order_type=OrderType_Market, position_side=PositionSide_Long) print(symbol+"止盈"+now_str) def on_order_status(context, order): # 标的代码 symbol = order['symbol'] # 委托价格 price = order['price'] # 委托数量 volume = order['volume'] # 目标仓位 target_percent = order['target_percent'] # 查看下单后的委托状态,等于3代表委托全部成交 status = order['status'] # 买卖方向,1为买入,2为卖出 side = order['side'] # 开平仓类型,1为开仓,2为平仓 effect = order['position_effect'] # 委托类型,1为限价委托,2为市价委托 order_type = order['order_type'] if status == 3: if effect == 1: if side == 1: side_effect = '开多仓' else: side_effect = '开空仓' else: if side == 1: side_effect = '平空仓' else: side_effect = '平多仓' order_type_word = '限价' if order_type == 1 else '市价' print('{}:标的:{},操作:以{}{},委托价格:{},委托数量:{}'.format(context.now, symbol, order_type_word, side_effect, price, volume)) def on_backtest_finished(context, indicator): print('*' * 50) print('回测已完成,请通过右上角“回测历史”功能查询详情。') if __name__ == '__main__': ''' strategy_id策略ID,由系统生成 filename文件名,请与本文件名保持一致 mode实时模式:MODE_LIVE回测模式:MODE_BACKTEST token绑定计算机的ID,可在系统设置-密钥管理中生成 backtest_start_time回测开始时间 backtest_end_time回测结束时间 backtest_adjust股票复权方式不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST backtest_initial_cash回测初始资金 backtest_commission_ratio回测佣金比例 backtest_slippage_ratio回测滑点比例 backtest_match_mode市价撮合模式,以下一tick/bar开盘价撮合:0,以当前tick/bar收盘价撮合:1 ''' run(strategy_id='自己的策略ID', filename='MACD_strategy_test.py', mode=MODE_BACKTEST, token='自己的token码', backtest_start_time='2012-03-01 09:00:00', backtest_end_time='2024-08-01 15:00:00', backtest_adjust=ADJUST_PREV, backtest_initial_cash=, backtest_commission_ratio=0.0001, backtest_slippage_ratio=0.0001, backtest_match_mode=1) 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137614.html

(0)
上一篇 2025-06-19 14:10
下一篇 2025-06-19 14:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信