程序化交易DIY

为了不盯盘:用AHK实现了 从新浪获取实时股价、从网易获取历史股价,然后计算当日的MA5 MA10(MA是前复权的)等,能简单的判断是否破MA5,发通知到钉钉、也可以进一步驱动下单软件自动买卖。

 

声明:仅供学习交流,不建议用作交易实战。

如需生产中使用,建议购买 正规量化服务

如 https://quantapi.10jqka.com.cn/age=home 。

原始需求:

盘中用某日14:55股价跌破MA5指标作为卖出策略,交易日内驱动自动卖出交易。

分解需求:

一、定时14:55,从新浪获取当日股价x

1、定时功能 

计划任务 算法 表达 cron (Quartz cron 语法) https://blog.csdn.net/liuyukuan/article/details/6709554

Quartz的cron表达式  https://blog.csdn.net/liuyukuan/article/details/50444004

[AHK]定时运行脚本  https://blog.csdn.net/liuyukuan/article/details/107596986

[ahk]定时获取上证指数成交量 https://blog.csdn.net/liuyukuan/article/details/78360045

2、股价获取 

从网上获取有股价:
①从新浪获取最新价格
②从网易获取历史价格

[AHK]新浪实时股票数据接口 https://blog.csdn.net/liuyukuan/article/details/53129458

二、计算MA5的值y

1、以14:55的价格作为当日收盘价,参与MA5计算

2、从网易获取前4日收盘价,参与MA5计算

三、判断(x<y) 则用AutoHotkey驱动交易软件自动填单卖出

1、 [AHK]华泰通达信版 买入填单  https://blog.csdn.net/liuyukuan/article/details/53186308

2、 [AHK]同花顺交易卖出填单工具  https://blog.csdn.net/liuyukuan/article/details/52909592

问题与挑战:

通过计算的方法来获得实时均线,这个是最方便、最快捷的,相比其他的OCR等要可靠的多,但理想很丰满,现实很骨感,唯一遗憾的是中国的开源的生态不行,交易接口没公开也算可以理解,关键是连数据接口都没有公开的,特别是实时数据接口,网上的很多获取数据接口计算均线的方法都是收盘后的,盘中的几乎没见到。

通达信预警的方法在2点55分实时输出均线的当时价格,这个是最简单的,但是可能有的时候会有点延迟的,且依赖于本地的通达信软件。

本文探讨的是从网上公开的数据接口来获得数据进行计算。

一、量化不复权,交易不赚钱(详细解读参见,邢不行的文章  https://blog.csdn.net/xingbuxing_py/article/details/109615874 )

因分红或送股导致除权,会造成价格的大幅下挫,如果直接用会造成策略或者回测有问题。

程序化交易DIY

xx药业4月17日暴跌39.29%标题

程序化交易DIY

xx科技4月9日暴跌46.83%

 

上面两只股票在一天内的跌幅都远超过了A股10%的限制。暴跌的当天发生了什么/p>

 

查一下这两家企业在当天的公告:

 

xx药业公告

分红:每10股派1.35元。

转增:每10股转增6股。

 

xx科技公告

分红:每10股派5元。

转增:每10股转增8股。

以什么作为修正的基准呢/strong>

前复权将除权日之前的价格向下调整以使得价格连续,后复权就是将除权日之后的价格向上调整以使得价格连续。

如果我们以分红送股后的股价作为基准,将分红送股前的股价整体往下移动,对股价进行修正,这个过程就被称为前复权

 

程序化交易DIY

如上图所示,在复权前,涨跌幅为-46.8%,将分红送股前的K线整体向下移动后,涨跌幅被修正为-3.3%。

 

后复权也是通过移动股价来实现价格修复的,只不过后复权是将分红送股后的K线整体向上移动

程序化交易DIY

如上图所示,复权前的涨跌幅为-46.8%,将分权送股后的K线整体向上移动后,涨跌幅被修正为-3.3%。

 

看到这你应该明白什么是前复权后复权了,前复权其实就是对分红送股前的股价进行修正,后复权是对分红送股后的股价修正。

 

并且细心的同学已经发现,不管是前复权还是后复权,它们修复的其实是分红、送股当天的涨跌幅,而不是股价,准确的涨跌幅才是复权的核心所在。

 

收盘价并不能简单作为前收盘价的(会有价格的断崖下跌),如下图所示,在分红或送股当日收盘后交易所会计算一个除权后的收盘价的(26.9)而不是(48.92)。(感谢邢不行的扫盲视频。  量化投资中,如何最准确的计算前后复权价 https://www.bilibili.com/video/BV1of4y1i7hv )

程序化交易DIY

1、从网易获取的历史数据是未复权的。

江苏银行(600919)历史交易数据_股票行情_网易财经,”http://quotes.money.163.com/trade/lsjysj_600919.htmlear=2020&season=4″

如下,2021年12月8日是除权日,收盘价5.93是未复权的,如果复权应该是5.62 。

程序化交易DIY

如果有复权因子(可以从新浪爬取 http://finance.sina.com.cn/realstock/company/sh600919/qianfuquan.js ),那么利用以下公式可以计算前复权的前(一日)收盘价,稍复杂我未用此法

程序化交易DIY

后复权同理

程序化交易DIY

网易的历史数据是提供了涨跌额、涨跌幅的,可以据此计算出前收盘价的。(会比用复权因子计算容易些,且多个数据源的除权因子都没有一个固定统一的数值,复权往往有些差异,不如都用网易一家的数据)。用前复权来计算前收盘价,就是先以末日收盘价为基准,反推以前的价格。(前收盘价=收盘价-涨跌额

程序化交易DIY

二、爬虫的编写,从网页解析出table/tr/td结构化数据。

获取的网页源代码是非结构化的,需要先提取需要解析的部分,再通过xpath等工具来结构化解析。

 

三、程序的稳定可靠。

1、数据获取尽量不直接依赖程序或从屏幕OCR等,宜直接从API直接获取数据。

2、尽量不用模拟键盘鼠标操作,宜直接用控件句柄操纵等。

3、如果为了保险,还得加上网上数据获取成功的检测机制。(如果有独立VPS运行通达信,通达信的数据每天设置好定时下载盘后数据,直接从通达信程序中获取数据,延迟小、可靠性高)

通达信的day解析出的内容,也是不复权的 

 [python]解析通达信盘后数据获取历史日线数据 https://blog.csdn.net/liuyukuan/article/details/53560278

[AHK]通达信数据导出功能的消息号是33233 https://blog.csdn.net/liuyukuan/article/details/107570616

程序化交易DIY

想复权的话,还是得从网易获取涨跌幅、或从新浪获取复权因子

 


阶段性成果

一、日期:2021年2月16日

通过新浪和网易获取股票数据,并计算前复权的MA5/MA10  

程序化交易DIY

此截图是2021年2月18日 11:30

程序化交易DIY

下载请猛戳:计算最新的MA_前复权_V3.14159.zip   

二、日期:2021年2月18日

增加定时功能,每5分钟处理一次(改成 仅下午2:55执行一次也是非常容易的 )

说明:

1、运行“开盘时间每5分钟自动执行.exe”会常驻内存并在开盘时间每间隔5分钟去调用“执行一次.exe”。
2、“执行一次.exe”程序会扫描目录下6位数字命名的可执行文件并执行。
3、每个股票的监控须复制 “000001.exe” 并以想要监控的股票代码命名,扩展名必须是.exe。
4、“xxxxxx.exe”运行时更新对应的“xxxxxx.txt”内容。首次会自动创建“xxxxxx.txt”。

解压缩后是这些文件:

程序化交易DIY

下载请猛戳:每5分钟输出一次MA值.zip 

 

来源:liuyukuan

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月13日
下一篇 2021年1月13日

相关推荐