楼主: 唉人好累66
1936 6

[交易策略] 【干货分享】从零开始学量化:18MACD策略 [推广有奖]

  • 0关注
  • 35粉丝

讲师

53%

还不是VIP/贵宾

-

威望
1
论坛币
1525 个
通用积分
1.0049
学术水平
11 点
热心指数
14 点
信用等级
11 点
经验
3640 点
帖子
214
精华
0
在线时间
105 小时
注册时间
2016-9-24
最后登录
2019-7-14

唉人好累66 发表于 2017-8-8 10:18:58 |显示全部楼层
1.策略原理及逻辑
   1.1指标定义
指数平滑异同移动平均线(Moving Average Convergence / Divergence, MACD)是股票交易中一种常见的技术分析工具,由Gerald Appel于1970年代提出,用于研判股票价格变化的强度、方向、能量,以及趋势周期,以便把握股票买进和卖出的时机。MACD指标由一组曲线与图形组成,通过收盘时股价或指数的快变及慢变的指数移动平均值(EMA)之间的计算出来。“快”指更短时段的EMA,而“慢”则指较长时段的EMA,最常用的是12及26日EMA。
   1.2指标计算公式
1).差离值(DIF值):
先利用收盘价的指数移动平均值(12日/26日)计算出差离值。

2).讯号线(DEM值,又称MACD值):
  • 计算出DIF后,会再画一条“讯号线”,通常是DIF的9日指数移动平均值
  • 〖公式〗

3).柱形图或棒形图(histogram / bar graph):
  • 接着,将DIF与DEM的差画成“柱形图”(MACD bar / OSC)。
  • 〖公式〗

简写为

示例图:


上表为收市价图表(OHLC chart),
下表的绿线是差离值(DIF),红线是讯号线(DEM),白色区块柱形图(MACD bar / OSC)是两者的差(D-M)。
   1.3指标解读
MACD其实就是两条指数移动平均线——EMA(12)和EMA(26)——的背离和交叉,EMA(26)可视为MACD的零轴,但是MACD呈现的讯息噪声较均线少。
MACD是一种趋势分析指标,不宜同时分析不同的市场环境。以下为三种交易讯号:
  • 差离值DIF值)与讯号线DEM值,又称MACD值)相交;
  • 差离值与零轴相交;
  • 股价与差离值的背离。
差离值(DIF)形成“快线”,讯号线(DEM)形成“慢线”。
当差离值(DIF)从下而上穿过讯号线(DEM),为买进讯号;相反若从上而下穿越,为卖出讯号。买卖讯号可能出现频繁,需要配合其他指标(如:RSI、KD)一同分析。
棒形图MACD bar / Oscillator,OSC)的作用是显示出“差离值”与“讯号线”的差,同时将两条线的走势具体化,以利判断差离值和讯号线交叉形成的买卖讯号,例如正在下降的棒形图代表两线的差值朝负的方向走,趋势向下;靠近零轴时,差离值和讯号线将相交出现买卖讯号。
棒形图会根据正负值分布在零轴(X轴)的上下。棒形图在零轴上方时表示走势较强,反之则是走势较弱。
差离值由下而上穿过零轴代表市场气氛利好股价,相反由上而下则代表利淡股价。差离值与讯号线均在零轴上方时,被称为多头市场,反之,则被称为空头市场。
当股价创新低,但MACD并没有相应创新低(牛市背离),视为利好(利多)讯息,股价跌势或将完结。相反,若股价创新高,但MACD并没有相应创新高(熊市背离),视为利淡(利空)讯息。同样地,若股价与棒形图不配合,也可作类似结论。
MACD是一种中长线的研判指标。当股市强烈震荡或股价变化巨大(如送配股拆细等)时,可能会给出错误的信号。所以在决定股票操作时,应该谨慎参考其他指标,以及市场状况,不能完全信任差离值的单一研判,避免造成损失。
   1.4策略逻辑
  • DIF、DEA均为正,DIF向上突破DEA,买入
  • DIF、DEA均为负,DIF向下跌破DEA,卖出


2.策略代码
  2.1配置文件【macd_stock.ini】(提示ini配置文件,需要保存成UTF8格式)

  1. [strategy]
  2. username=
  3. password=
  4. ;回测模式
  5. mode=4
  6. td_addr=localhost:8001
  7. strategy_id=
  8. ;订阅代码注意及时更新
  9. subscribe_symbols=

  10. [backtest]
  11. start_time=2014-03-01 09:00:00
  12. end_time=2016-03-18 16:00:00

  13. initial_cash=1000000

  14. transaction_ratio=1

  15. commission_ratio=0.0003

  16. ;滑点比率,默认=0(无滑点)
  17. slippage_ratio=0.00246


  18. price_type=1

  19. bench_symbol=SHSE.000016

  20. [para]
  21. bar_type=86400

  22. long_term=26
  23. short_term=12
  24. macd_term=9

  25. #止盈止损
  26. ;是否固定止盈止损
  27. is_fixation_stop=0
  28. ;是否移动止盈
  29. is_movement_stop=1

  30. ;移动盈利开始比率及固定盈利比率
  31. stop_fixation_profit=0.20
  32. ;亏损比率
  33. stop_fixation_loss=0.068

  34. ;移动止盈比率
  35. stop_movement_profit=0.068

  36. hist_size=60

  37. openlong_signal=2

  38. open_vol=2000

  39. ##############################################################
  40. # logger settings
  41. ##############################################################
  42. [loggers]
  43. keys=root

  44. [logger_root]
  45. level=INFO
  46. handlers=console,file

  47. [handlers]
  48. keys=console,file

  49. [handler_file]
  50. class=handlers.RotatingFileHandler
  51. args=('mack_stock.log','a',1000,5)
  52. formatter=simple

  53. [handler_console]
  54. class=StreamHandler
  55. args = (sys.stdout,)
  56. formatter=simple

  57. [formatters]
  58. keys = simple

  59. [formatter_simple]
  60. format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
  61. datefmt=
复制代码
  2.2策略文件【macd_stock.py】(代码过长无法上传,详细代码见证经社——
                  http://zjshe.cn/q/forum.php?mod=viewthread&tid=96&page=1&extra=#pid142)
   2.3股票池文件【stock_pool.csv】


3.代码涉及的函数代码
    3.1 python函数及package

功能函数原型参数返回值
参数名含义
sys提供了一系列有关Python运行环境的变量和函数。



sys.argv[0]当前程序名
sys.argv获取当前正在执行的命令行参数的参数列表(list)。sys.argvsys.argv[1]第一个参数
sys.argv[2]第二个参数
arrow标准的时间日期库。
ta-lib被广泛应用的金融市场数据分析的库
pandasPython Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的
numpy一套用于支持科学计算的python第三方库
time返回当前时间的时间戳time.time()

返回当前时间的时间戳
len返回对象(字符、列表、元组等)长度或项目个数。len(s)s对象返回对象长度。
append用于在列表末尾添加新的对象。list.append(obj)obj添加到列表末尾的对象。该方法无返回值,但是会修改原来的列表。
      3.2掘金接口函数

功能函数原型参数
参数名类型说明
on_bar响应Bar事件,收到Bar数据后本函数被调用。on_bar(bar)barbarbar数据
open_long异步开多仓,以参数指定的symbol、价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口open_long(exchange, sec_id, price, volume)exchangestring交易所代码, 如上交所SHSE
sec_idstring证券代码,如浦发银行600000
pricefloat委托价,如果price=0,为市价单,否则为限价单
volumefloat委托量
close_long异步平多仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。close_long(exchange, sec_id, price, volume)exchangestring交易所代码, 如上交所SHSE
sec_idstring证券代码,如浦发银行600000
pricefloat委托价,如果price=0,为市价单,否则为限价单
volumefloat平仓量
open_short异步开空仓,以参数指定的symbol、价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口open_short(exchange, sec_id, price, volume)exchangestring交易所代码, 如上交所SHSE
sec_idstring证券代码,如浦发银行600000
pricefloat委托价,如果price=0,为市价单,否则为限价单
volumefloat委托量
close_short异步平空仓接口,以参数指定的exchange, 证券代码sec_id, 价和量下单。如果价格为0,为市价单,否则为限价单。策略类和交易服务类都提供该接口。close_long(exchange, sec_id, price, volume)exchangestring交易所代码, 如上交所SHSE
sec_idstring证券代码,如浦发银行600000
pricefloat委托价,如果price=0,为市价单,否则为限价单
volumefloat平仓量
get_last_n_dailybars提取单个代码的最新n条DailyBar数据, 策略类和行情服务类都提供该接口。get_last_n_dailybars(symbol, n, end_time='')symbolstring证券代码, 带交易所代码以确保唯一,如SHSE.600000
nint提取的数据条数
end_timestring指定截止时间, 如2015-10-30 15:00:00
get_dailybars提取指定时间段的历史Bar数据,支持单个代码提取或多个代码组合提取。策略类和行情服务类都提供该接口。get_dailybars(symbol_list, begin_time, end_time)symbol_liststring证券代码, 带交易所代码以确保唯一,如SHSE.600000,同时支持多只代码
begin_timestring开始日期, 如2015-10-19
end_timestring结束日期, 如2015-10-30
get_position查询当前策略指定symbol(由交易所代码和证券ID组成)和买卖方向的持仓信息。策略类和交易服务类都提供该接口。get_position(exchange, sec_id, side);exchangestring交易所代码
sec_idstring证券代码
sideint买卖方向






stata SPSS
jiangshucen 发表于 2017-8-9 00:41:58 |显示全部楼层
收藏了,有空再好好研究下,谢谢
回复

使用道具 举报

唉人好累66 发表于 2017-8-9 10:16:39 |显示全部楼层
jiangshucen 发表于 2017-8-9 00:41
收藏了,有空再好好研究下,谢谢
不用谢呀~一起努力~后续会持续更新干货和python视频教程大全,希望继续关注呀
回复

使用道具 举报

jiangshucen 发表于 2017-8-9 13:14:28 |显示全部楼层
有点高深看不懂啊,虽然很想学习量化,但是感觉无从下手
回复

使用道具 举报

唉人好累66 发表于 2017-8-9 13:48:15 |显示全部楼层
jiangshucen 发表于 2017-8-9 13:14
有点高深看不懂啊,虽然很想学习量化,但是感觉无从下手
我也是刚刚才开始学习~选择了掘金量化这个平台还挺好用的你可以试一下,ps:我也上传了python教学视频可以好好看看,讲的很清楚呢
回复

使用道具 举报

ml_pku 发表于 2017-8-10 10:35:39 |显示全部楼层
学习学习
回复

使用道具 举报

唉人好累66 发表于 2017-8-11 09:09:31 |显示全部楼层
ml_pku 发表于 2017-8-10 10:35
学习学习
加油加油一起努力!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2019-7-17 23:18