zwQuant
帮助文件
v25kx
1 ZW 量化策略分析开源软件 zwQuant 帮助文件v2.5 作者:ZW=智王+字王 2016.05.01 zw 网站:http:/ QQ 群:124134140(AI 量化,足彩大数据、云字库、zwPython)技术 Blog: 量化、足彩大数据、字库)网盘下载:http:/ zw 量化,python 量化第一品牌 2 前言前言.3 ZWQUANT 简介简介.5 高效简单.5 目录结构.7 ZWQUANT 安装与更新.7 STKLIB内存数据库.7 ZWQT 量化家族成员量化家族成员.9 回溯案例回溯案例 对标测试对标测试.12 案例 1,投资回报参数.12 案例 2,VWAP策略.14 ZWQUANT 模块文件说明模块文件说明.17 ZWSYS 系统变量与类定义.18 ZWTOOLS常用(非量化)工具函数.18 ZWQTBOX常用“量化”工具函数集.19 ZWQTDRAW.PYW量化绘图工具函数.20 ZWBACKTEST回溯测试工具函数,.20 ZWSTRATEGY策略工具函数.20 ZW_TALIB金融函数模块.21 DEMO 示例程序示例程序.24 DEMO案例文件目录.24 案例 1,投资回报参数.24 案例 2,均线策略.25 案例 3,均线交叉策略.25 案例 4,VWAP策略.25 案例 5,BBANDS布林带策略.25 3 测试测试版版前言前言 这个世界,聪明人太多了。金融行业,更加如此。既然,大家都是聪明人。zw,只能选择充当“愚人”了。于是,便有了今天,4 月 1 日,zwQuant 愚人版的发布。zwQuant 愚人版,目前只是 Beta 阶段的测试版本。正是 zw 开源组,广大成员,100%零报酬,“愚人”般的无私奉献。国内 python 量化,从几颗孤零零的小草,仅用不到一年的时间,形成了燎原之势。zw 的口号,向来是:我们只谈原创。令人欣喜的是,zwQT,成功地,将这个口号,从字库行业“传承”到 py 量化领域。zwQuant,可能是,全球第一套100%自主开发、纯 python、中文量化策略分析系统。正式名称是:zw Quant 量化策略分析及回溯测试系统,简称:zwQT 量化系统。虽然,zwQT 是骨头版、高度简化的量化分析、回溯测试系统,只提供策略分析,回溯测试功能。不过,却也是一套全功能、全开源、专业级、纯Python 量化策略分析系统,可以直接用于实盘操作。为保证 zwQT 回溯测试数据的准确性,zwQT,采用业界领先的pyAlgoTrad(简称PAT),进行了多场合、多策略的对标测试。对标测试时,全部采用同一源数据源、同一量化策略。绝大部分案例中,在回报率、夏普指数、回缩周期等方面,均取得了一致的测试结果。个别数据略有差异的,是因为程序架构和数据定义等方面差别导致,也都可以接受的范围之内。高效简单 zwQT 优先基于 pandas 进行开发,整体架构简单清晰,全部代码不到一千行,全面涵盖了数据导入、策略分析、回溯分析、绘图统计等各个环节。zwQT 首创的 dataPre 数据预处理计算,借助 pandas 和 numpy 高度优化的运算模块,即使不采用其他优化策略,整体回溯速度,比目前 python 同类量化系统,快 5-10 倍。支持单只、多只股票回溯测试,类似股票池,股票数目上不封顶,仅受硬件和内存限制。量化策略,基于传统过程函数,采用1+1 模式:策略分析+数据预处理,编写难度,比目前事件模式,简化一个数量级;并且,支持多策略联动分析。策略函数、绘图输出,均采用准模版编程,用户可自行扩充,不断增加策略函数库、绘图模版库。技术支持 zwQT 量化系统是 100%全免费、全功能、全开源,纯 python 版本的量化策略分析系统。全部代码,去掉注解,不到一千行,而且 zw 提供了数十页的中文用户手册。具有实盘经验、以及 python 编程经验的用户,完全可以自己学习。不过 python 与量化,毕竟都是专业学科,而且属于新兴项目。在学习中碰到问题,属于正常现象,不是几句话可以说清楚的。由于精力有限,zw 不提供任何 QQ 等方面的技术指导,请大家谅解。4 人只有在绝境中才能更好的认识上帝。圣经说:“当上帝关了这扇门,一定会为你打开另一扇门。”对于学习有困难的用户,可以选择报读:zw 量化实盘魔鬼训练营 http:/ zw 量化培训初级班,将近一半的课程,都在讲解 zwQT 实盘策略操作。商业合作 zwQT 虽然是骨头版本的量化软件,但架构先进、扩充简单。配合不同的数据源,可以支持分钟、tick 等中、高频交易,也可用于外汇期货、贵重金属等其他金融产品。欢迎有关企业,在 zwQT 的基础上,采用 oem 等各种方式合作,进行二次开发。版权许可 zwQT 量化系统的开发,虽然100%是由 zw 私人承担的。但 zwQT 的授权方式,采用的是,比 BSD 授权模式更为宽松的:MIT 授权模式。MIT 授权模式,基本上使用者可以”为所欲为”,除了不要自称是:zwQuant 的原创者。5 zwQuant 简介简介 zwQuant,可能是,全球第一套100%自主开发的、纯 python 的、中文量化策略分析系统。zwQuant,正式名称是:zw Quant 量化策略分析及回溯测试系统,简称:zwQT 量化系统。虽然,zwQT 是骨头版、高度简化版的量化分析、回溯测试系统,只提供策略分析,回溯测试功能。不过,却也是一套全功能的、全开源的、纯Python 量化策略分析系统,可以直接用于实盘操作。数据源方面,配合 tushare、zwDat 数据包以及 zw 开源数据下载程序:down_stk,可以完成单日 A股、每股数据的日交易数据更新、去重。分钟、tick 数据,用户可参考以上程序,自己编写、添加相关数据。股票以外,其他金融产品、外汇期货、贵重金属等,请自己添加历史数据和数据源。策略方面,zw_talib 函数已经发布,大家借助 talib 或其他专业金融函数库,编写策略,对 zw策略库进行扩充。业务方面,zwQT 可根据用户需要,以及硬件运行环境,按天、小时、分钟,生成推荐数据,辅助用户人工下单,或则采用 csv 文件,导入第三方交易软件下单。高效简单 zwQT 优先基于 pandas 进行开发,整体架构简单清晰,全部代码不到一千行,全面涵盖了数据导入、策略分析、回溯分析、绘图统计等各个环节。zwQT 首创的 dataPre 数据预处理计算,借助 pandas 和 numpy 高度优化的运算模块,即使不采用其他优化策略,整体回溯速度,比目前 python 同类量化系统,回溯测试速度,快 5-10 倍。支持单只、多只股票回溯测试,类似股票池,股票数目上不封顶,仅受硬件和内存限制。量化策略,基于传统过程函数,采用 1+1 模式:策略分析函数+策略数据预处理函数,编写难度,比目前事件模式,简化一个数量级;并且,支持多策略联动分析。策略函数、绘图输出,均采用准模版编程,用户可自行扩充,不断增加策略函数库、绘图模版库。骨灰级玩家与骨头版操作系统 骨灰级玩家,百度百科词条 指对某游戏废寝忘食深入研究终至无上境界,凡与此游戏相关的问题无不精通,再小白的菜鸟都能带的玩家。骨灰级玩家远远超过了老鸟级玩家,因为他们两者生活在完全不同的环境中。老鸟级玩家玩游戏是出于兴趣爱好,骨灰级玩家玩游戏则是出于生存的需要;老鸟级玩家必须自己掏钱买游戏,骨灰级玩家则无需掏自己的腰包;老鸟级玩家得保证一定的精力对付第二天的工作与学习,骨灰级玩家则不必担心,因为他们的职业就是玩游戏,写评论。许多杂志都很乐于采用他们写的游戏攻略,许多游戏公司都很愿意向他们免费提供自己的最新游戏,包括一些硬件公司也不断向他们推荐自己的最新游戏控制器,希望他们在撰写游戏评论时能顺带提上一笔。骨头版 windows 系统 6 骨头版 windows 系统,是指高度简化,而又保留了系统核心功能的 windows 操作系统。(骨头版系统,与嵌入式系统不同)以最常见的骨头版 xp 系统为例,世界上最小的 XP 系统,只有 15M。不过,常用的是 TinyXP 极其衍生版本。TinyXP 是个非常小的精简 WinXP,压缩包只有 80M,解压只占400M硬盘空间.包括WINDOWS、Documents and settings 和 Program Files 三个文件夹.只需 40M 内存,因为结构简单,运行速度非常快.骨头版 xp 有什么用呢?对于游戏工作室、网络工作室而言,骨头版 xp 配合虚拟机,可以十倍、百倍提高单机的运行效率。借助骨头版 xp 和大内存、SSD 的PC、服务器,一台单机可以同时启动数十个、甚至上百个虚拟机,单机挂载数百个 QQ,网页游戏,或则同时登录上百个 ID,登录网站、论坛、微信、QQ 群,开展各种网络推广业务、刷屏等。有趣的是,应用和制作骨头版 xp 的,往往都是一些骨灰级的电脑高手,或者说:电脑极客。zwQuant 开源量化软件开源量化软件 软件工程的奇迹 一个人、30 天、1000 行代码,作为“零对象”软件开发的提倡者,zw 也是这样身体力行。zwQuant,是 python 量化领域,首套第三代、基于矩阵运算架构的量化回溯系统。zwQuant 全部开发过程,均是由 zw 一个人,利用 zwPython 平台,没有借助任何其他开发工具。zwQuant 的开发,全部代码,不到一千行,从开发到 4 月 1 日测试版发布,全部周期不到 30 天。zwQT 优先基于 pandas 进行开发,整体架构简单清晰,全面涵盖了各个环节,如数据导入、策略分析、回溯分析、绘图统计等。zwQT 首创的 dataPre 数据预处理计算,借助 pandas 和 numpy 高度优化的运算模块,即使不采用其他优化策略,整体回溯速度,比目前python同类量化系统,回溯测试速度,快 5-10 倍。支持单只、多只股票回溯测试,类似股票池,股票数目上不封顶,仅受硬件和内存限制。量化策略,基于传统过程函数,采用 1+1 模式:策略分析函数+策略数据预处理函数,编写难度,比目前事件模式,简化一个数量级;并且,支持多策略联动分析。策略函数、绘图输出,均采用准模版编程,用户可以自行扩充,不断增加策略函数库、绘图模版库。支持 tick 和分时数据,可用于股票实盘,期货外货、贵重金属等项目,仅需修改数据源,无需修改其他程序,即可直接使用。7 目录结构 zwQuant 的文件目录结构如下:未来随版本变化,目录结构可能会有变化,请用户自己注意 期中,各个目录说明如下:demo,zwQT 演示程序目录 source,zwQT 源码程序 down_stk,zwDat 股票数据下载程序 zwta,zw_talib 金融函数库 需注意的是,:zw_talib 虽然是个独立的项目,在source 目录下,也有 zw_talib.py 的复制文件,内容相同,如果日后,zw_talib升级,用户可以自己 copy,覆盖 source 目录下的同名文件:zwDat 股票数据下载程序,因为源码较多,也是zwQuant 的独立衍生项目,自成一个目录。zwQuant 安装与更新 zw 量化工具箱 zwQuant 的全部源码,位于目录:x:zwPythonzwQuantsource(x是硬盘盘符)zwQuant 开源量化工具箱,与 zwPython 进行了集成处理,可直接import 使用,支持 Python3.5。升级时,解压覆盖zwPython目录下的 zwQuant 子目录即可,注意,不要有双重:zwQaunt 子目录。移植时,或使用其他Python环境,可以把 zwQuant 目录下的脚本文件,全部 copy 到自己的代码工作目录即可。移植时注意,zwSys.py 代码里面,有关的数据文件目录设置。如果采用 zwDat 作为数据源,zwDat 与 zwPython 必须位于同一个硬盘根目录下。强烈建议使用 SSD 固态硬盘,可提高 3-5 倍运行效率。stkLib 内存数据库 在 zwSys.py 当中,定义以下两个全局变量,用于保存股票数据源 stkLib=#全局变量,相关股票的交易数据,内存股票数据库 stkLibCode=#全局变量,相关股票的交易代码,内存股票数据库 8 其中,stkLib 常用字典格式,保存了所有相关的股票数据。stkLib 字典,每项 key 值,就是股票代码,对应的赋值,就是对应股票的历年交易数据,类似 zwDat 的 csv 交易数据文件,采用 pandas 的 DataFrame 格式。如统计沪深 300,就是沪深 300 指数内的 300 只股票代码。stkLibCode,是列表格式,是 stkLib 当中股票的代码。采用 stkLib,而不是 mySQL数据库,是为了简化程序结构,而且,stkLib 数据赋值,直接采用 pandas 的 DataFrame数据格式,中间无需进行格式转化,效率上,不会低于数据库,未来实盘测试,如果数据量大,影响整体效率,我们再做优化处理。理论上,32 位 python,单个字典变量的数据上限是 2G。64 位版本 python,已经不受此限制,数据上限,几乎近于无限。一线数据分析工程表明,十亿级别以下的数据,都可以用字典变量存储,配合 pandas 直接分析,效率比 Spark、hadoop 更高,而且极其方便。stkLib 的数据,全部位于内存,可以看成一个 pandas 版本的:内存内存数据库数据库。如果采用 zw 的 GPU 工作站和全内存运算模式,即使不用 GPU 加速,32G 以上的用户,即使加载 zwDat 股票数据源的历年股票数据(约 6G),也可以全部导入内存,进行全内存计算。内存的速度,比 SSD 要快 50-100 x,比硬盘快近千倍,对于 IO 密集型的数据分析项目,整体效率可以提高10-20 x,一般的数据分析项目,也可以提高 3-5x。【参见参见】zw10 倍速大数据与全内存计算倍速大数据与全内存计算 http:/ zw开源量化开源量化 GPU 超算工作站草案超算工作站草案 http:/ 9 zwQT 量化家族成员量化家族成员 zwQT 量化项目,经过 zw 开源组团队成员的不断,项目不断增加。目前,zwQT 量化家族,包括以下项目:zwPython,业界领先 python 数据分析、量化回溯开发平台,绿色版本,开箱即用 zwQuant,业界首套第三代、基于矩阵运算的量化回溯测试系统 zwDat,国内首个大型的免费开源金融数据包,数据量超过300G,提供 tick 级分笔数据 zw-down,zw 金融数据下载程序,提供源码,支持中国 A股、美股数据下载、更新、去重、追加;并提供 tick 数据下载,tick 与分时数据转换程序 zw-talib,zw 版 talib 金融函数包,与 pandas 无缝集成,直接调用 zw 开源团队,目前以有上百位活跃成员,目前以完成的项目,包括:py 量化项目总览、seabborn中文指南、zwQuant 系列程序的函数级中文注解等 zw 系列开源课件,业内首个专业户的量化开源课件系列,目前已经推出十多不作品 zw 量化入门十讲,国内首个专业的 python 量化入门教学课件系列,包括pdf 图文课件、高清视频、及配套的教学代码 .欢迎大家加入:欢迎大家加入:py 量化 QQ 总群:124134140,千人大群 zwPython 量化&大数据 zw 开源量化团队 QQ 群:533233771(开发群,面向技术人员)zw 量化网站:http:/,py 量化,网络第一品牌 zw 量化网站 http:/ 10 zwDat 大型开源金融数据包,总数据超过 300G,提供 tick 级别的分笔数据 zw 系列开源文库 11 zwPython,工业级 python 数据分析、量化回溯开发平台 zw 量化入门十讲,国内首个专业的 python 量化入门教学课件系列,包括 pdf 图文课件、高清视频、及配套的教学代码 12 回溯案例回溯案例对标测试对标测试 为保证 zwQT 回溯测试数据的准确性,zwQT,采用目前业界领先的 pyAlgoTrad(简称PAT),进行了多场合、多策略的对标测试。对标测试时,全部采用同一源数据源、同一量化策略。绝大部分案例中,在回报率、夏普指数、回缩周期等方面,均取得了一致的测试结果。个别数据略有差异的,是因为程序架构和数据定义等方面差别导致,也都可以接受的范围之内。案例 1,投资回报参数 以下是 pat 案例,源自QSTK 作业一。zw 课件脚本文件名:k402_compinv01.py pyAlgoTrade 的 demo,原文件名:compinv-1.py 原案例,运行结果如下:(需 python2.7 环境)runfile(E:/zwPython/zw_k30/k402_compinv01.py,wdir=E:/zwPython/zw_k30)DEBUG:broker.backtesting:Not enough volume to fill egan market order 1 for 81266 share/s 2011-01-03 00:00:00 broker.backtesting DEBUG Not enough volume to fill egan market order 1 for 81266 share/s DEBUG:broker.backtesting:Not enough volume to fill aeti market order 4 for 297810 share/s 2011-01-03 00:00:00 broker.backtesting DEBUG Not enough volume to fill aeti market order 4 for 297810 share/s 最终资产价值 Final portfolio value:$1524087.19 年收益 Anual return:52.41%平均日收益率 Average daily return:0.17%日收益率方差 Std.dev.daily return:0.0122 夏普指数 Sharpe ratio:2.28 最大回撤率 Max.drawdown:11.47%最长回撤时间 Longest drawdown duration:82 days,0:00:00 2470.005510 2480.001400 249-0.017165 2500.010841 251-0.004488 dtype:float64 tmpdret010.csv zw 版的案例脚本文件名:zq020_k402inv.py 运行结果如下:(py35 环境)13 交易总次数:2 交易总盈利:524087.19 盈利交易数:2 盈利交易金额:524087.19 亏损交易数:0 亏损交易金额:0.00 最终资产价值 Final portfolio value:$1524087.19 最终现金资产价值 Final cash portfolio value:$795739.26 最终证券资产价值 Final stock portfolio value:$728347.93 累计回报率 Cumulative returns:52.41%平均日收益率 Average daily return:0.175%日收益率方差 Std.dev.daily return:0.0121 夏普比率 Sharpe ratio:2.020,(0.05 利率)无风险利率 Risk Free Rate:0.05 夏普比率 Sharpe ratio:2.279,(0 利率)最大回撤率 Max.drawdown:11.4729%最长回撤时间 Longest drawdown duration:82 回撤时间(最高点位)Time High.drawdown:2011-12-27 回撤最高点位 High.drawdown:1540988.216 回撤最低点位 Low.drawdown:1514537.859 时间周期 Date lenght:362(Day)14 时间周期(交易日)Date lenght(weekday):252(Day)开始时间 Date begin:2011-01-03 结束时间 Date lenght:2011-12-30 项目名称 Project name:inv01 策略名称 Strategy name:tim0Trade zwQT 与 pat 案例的回溯数据完全一致。案例 2,vwap 策略 下面,我们再看一个略为复杂的案例。vwap 策略,又叫成交量加权平均价策略,主要用于机构、庄家大资金进货、出货操作。不过,目前,也有人,用于作为小资本的量化投资策略。zwQuant 的 demo 案例,脚本文件名:zq050_k408vwap.py zw 课件版对应的 pat 示例源码文件名:k408_vwap_momentum.py,pat 原示例文件名:vwap_momentum.py zw 课件版对应的 pat 示例源码文件名,主要是改为本地数据源,增加了绘图输出、结果统计,运行结果与pat原版程序一样的。为方便起见,我们采用 zw 课件版对应的pat 示例源码,运行结果如下:最终资产价值 Final portfolio value:$1441776.00 累计回报率 Cumulative returns:44.18%夏普比率 Sharpe ratio:0.89 最大回撤率 Max.drawdown:11.54%最长回撤时间 Longest drawdown duration:153 days,0:00:00 4970.000058 15 498-0.000497 4990.000037 5000.000000 5010.000000 dtype:float64 tmpk408vwap_dret.csv zw 版的案例脚本文件名:zq050_k408vwap.py 运行结果如下:交易总次数:234 交易总盈利:441776.00 盈利交易数:137 盈利交易金额:1706656.98 亏损交易数:97 亏损交易金额:-1264880.98 最终资产价值 Final portfolio value:$1441776.00 最终现金资产价值 Final cash portfolio value:$1441776.00 最终证券资产价值 Final stock portfolio value:$0.00 累计回报率 Cumulative returns:44.18%平均日收益率 Average daily return:0.078%日收益率方差 Std.dev.daily return:0.0103 16 夏普比率 Sharpe ratio:0.895,(0.05 利率)无风险利率 Risk Free Rate:0.05 夏普比率 Sharpe ratio:1.199,(0 利率)最大回撤率 Max.drawdown:11.5174%最长回撤时间 Longest drawdown duration:153 回撤时间(最高点位)Time High.drawdown:2012-09-19 回撤最高点位 High.drawdown:1576163.027 回撤最低点位 Low.drawdown:1441776.005 时间周期 Date lenght:729(Day)时间周期(交易日)Date lenght(weekday):502(Day)开始时间 Date begin:2011-01-03 结束时间 Date lenght:2012-12-31 项目名称 Project name:vwap 策略名称 Strategy name:vwap 对比一下,两者数据完全一致。17 zwQuant 模块文件说明模块文件说明 zwQuant 的主模块,全部源码,位于目录:(x是硬盘盘符)x:zwPythonzwQuantsource 主要有以下模块:zwBacktest.py,zw 量化分析:回溯测试工具函数,zwQTBox.py,zw 常用“量化”工具函数集 zwQTDraw.py,zw 量化分析:绘图工具函数 zwStrategy.py,zw 量化分析:策略工具函数 zwSys.py,zw 量化初始化和系统模块,主要定义基础数据类、全局路径、全局变量等 zwTools.py,zw 常用(非量化)工具函数集 zw_talib.py,zw 版的 talib 函数封装,主要基于 pandas 进行移植 zwBacktest.py pandas_talib.py 参见:https:/ https:/ zwQuant 最常用的三个模块是:zwSys.py,zw 量化初始化和系统模块,主要定义基础数据类、全局路径、全局变量等 zwTools.py,zw 常用(非量化)工具函数集 zwQTBox.py,zw 常用“量化”工具函数集 zwQuant 模块默认缩写方式为:import zwSys as zw import zwTools as zwt import zwQTBox as zwx import zwBacktest as zwbt import zwQTDraw as zwdr import zwStrategy as zwsta import zw_talib as zwta 以上为 zwQuant 的默认缩写方式,缩写全部是小写字母,建议大家统一采用,以上的缩写方式。18 zwSys 系统变量与类定义 zwSys 是 zw 量化初始化和系统模块,主要定义基础数据类、全局路径、全局变量等。zwSys 定义了三个类class:zwXBar、zwDatX,zwQuantX。其中,zwXBar 和 zwDatX 类很简单,都只有一个类函数:zwXBar 为数据包类,Bar 是量化交易的传统数据单位,记录每笔交易;类函数 prXBar,输出当前 Bar 变量的数据。zwDatX,设置各个数据目录;类函数 prDat,输出其他相关的目录信息。zwSys 相对复杂的是类 zwQuantX,定义了 zwQuant 量化交易所需的各种变量参数,以及相关的类函数:类函数包括:qxTimSet,设置时间参数 qxTim0SetVar,回溯测试时间点开始,初始化相关参数 qxTim9SetVar,回溯测试时间点结束,整理相关数据 qxIDSet,生成订单流水号编码 ID prQxUsr,输出用户变量保存的数据 prQLibr,输出各种回溯交易测试数据,一般用于结束时 zwTools 常用(非量化)工具函数 函数说明 iff2(kflag,x1,x0):二选一函数,如果 kflag为 True,返回值是 x1;否则,返回值是 x0;iff3(v,k,xn1,x0,x1):三选一函数,如果 vk,返回值是 x1;listPr(lst):输出列表信息 listRd(fnam):读取列表数据 listWr(fnam,lst):保存列表数据 lst4dir(rss):目录文件生成列表数据 19 wait(n,mstr=):等待 n 秒 xdebug(xmod,mnam,fnam):输出调试信息 xin(xk,k0sgn,k9sgn):如果 xk 位于(x0sgn,x9sgn)间,不含等于,返回True;否则,返回值是 x0;xinEQ(d,k0,k9):如果 xk 位于(x0sgn,x9sgn)间,包含等于,返回True;否则,返回值是 x0;xobj2str(xobj,xnamLst):对象属性指,根据属性列表,生成字符串 zwQTBox 常用“量化”工具函数集 函数说明 cross_Mod(qx,ksma):均线交叉策略,判断均线向上、向下趋势 df2cnstk(df0):股票数据格式转换,转换为中国 A股格式 df2yhaoo(df0):股票数据格式转换,转换为 Yahoo 格式 df2zw(df0):股票数据格式转换,转换为 zw 格式 df2zwAdj(df0):股票数据格式转换,转换为 zw 增强版格式,带 adj close downKMax(dlow,dhigh):计算最大回缩率 down_stk_cn010(qx,xtyp=D):中国 A股数据下载子程序 down_stk_yahoo010(qx,ftg):yahoo 美股数据下载子程序 qxObjSet(xtim,stkVal,dcash,dret):设置 xtrdLib 单次交易节点数据 sharpe_rate(rets,rfRate,ntim=252):计算夏普指数 stkGetPrice(qx,ksgn):获取当前价格 stkGetPrice9x(qx,ksgn):获取首个、末个交易日数据 stkGetVars(qx,ksgn):获取股票代码,指定字段的数据 stkLibGetTimX(xcod):返回指定股票代码首个、末个交易日时间数据 stkLibName8Code(xcod):根据股票代码,返回股票中文、英文/拼音缩写名称 stkLibPr():输出股票数据 stkLibRd(xlst,rdir):读取指定的股票数据,可多只股票 stkLibSet8XTim(dtim0,dtim9):根据时间段,切割股票数据 stkValCalc(qx,xdicts):计算 xdicts 内所有的股票总价值 stk_col_renLow(dat):股票数据格式转换,转换小写列名称 stk_copy_OHLC(dat0):复制股票 OHLC 数据 xbarGet8Tim(xcod,xtim):根据指定股票代码。时间,获取数据包 xbarGet8TimExt(xcod,xtim):根据指定股票代码。时间,获取数据包及股票数据 xbarPr(bars):输出数据包数据 xbarUsrStkNum(qx,xcod):返回用户持有的 xcod 股票数目 xbarUsrUpdate(qx):更新用户数据 xedit_zwXDat(df):编辑用户数据格式 xtrd2xusr(qx,b2):添加交易数据到用户数据 xtrdChkFlag(qx):检查是不是有效交易 xtrdLibAdd(qx):添加交易到 xtrdLib xtrdObjSet(qx):设置交易节点数据 zwRetPr(qx):输出、计算回报率 zwRetTradeCalc(qx):输出、计算交易数据 20 zwQTDraw.pyw 量化绘图工具函数 zwQT 绘图模块库很简单,采用的也是1+1 模式。一个函数设置绘图环境,一个函数生成绘图。目前只有一个三合一的绘图模版:quant3x,用户可以参考相关代码,自行添加 dr_quant3x_init(qx,w,h):初始化绘图环境,w、h 是图形大小尺寸 dr_quant3x(qx,ktop2,kbot,kmidlst,midSgn0=):绘制图形 dr_quant3x(qx,ktop2,kbot,kmidlst,midSgn0=):数据格式 zw 版 3x三合一,回溯测试绘图函数【输入】qx,全局量化参数变量 ktop2,Top 顶部成交量股票代码 kbot,Bot 底部绘图列名称,一般是val,资产总价值;数据源为:qx.qxLib kmidlst,Mid 中部绘图列名称列表,为符合表格 子列表元素 1,为股票代码 xcod,其他列名称,为格式为:xcod1,nam1,nam2,.,xcod2,nam1,nam2,.,xcod3,nam1,nam2,.注意,kmidlst 数据源为:stkLibxcod,包含预处理扩充的数据列 midSgn0,中部绘图区图标前缀 其中,“”为特殊符号,表示对应的股票代码【输出】无 zwBacktest 回溯测试工具函数,zwQT 回溯测试模块,目前很简单,只有三个脚本函数。未来,会根据需要,增加不同时间周期、不同数据源的回溯测试函数 函数说明:bt_init:设置回溯测试参数 zwBackTest100(qx):回溯测试只函数,单一股票,单一时间点的测试 zwBackTest(qx):回溯测试主程序 zwStrategy 策略工具函数 zw 量化策略分析函数,采用 1+1 模式,每个策略一组两个函数。其中一个为策略数据初始化函数、一个为策略分析函数。这种 1+1 策略函数组模式,是 zwQT 独创的,具有策略编写简单、逻辑清晰、运行效率极高。用户可参考相关源码,自行编写、扩充策略函数库。21 目前有以下策略函数:sta_dataPre0 xtim(qx,xnam0):策略参数设置子函数 BBANDS_dataPre(qx,xnam0,ksgn0):布林带数据预处理函数 BBANDS_sta(qx):布林带策略分析函数 CMA_dataPre(qx,xnam0,ksgn0):均线交叉策略数据预处理函数 CMA_sta(qx):均线交叉策略分析函数 SMA_dataPre(qx,xnam0,ksgn0):简单均线策略数据预处理函数 SMA_sta(qx):简单均线策略分析函数 VWAP_dataPre(qx,xnam0,ksgn0):vwap 数据预处理函数 VWAP_sta(qx):vwap 成交量加权平均价策略分析函数 zw_talib 金融函数模块 zw_talib 是个独立开源项目,是基于 pandas 的 talib 函数封装,属于 zwQaunt(简称 zwQT,zw 量化)项目的衍生项目。zw_talib 无需安装 zwQaunt,模块和demo,均可独立运行 zwtalib 首批函数名称 ACCDIST(df,n):集散指标(A/D)Accumulation/Distribution,是由价格和成交量的变化而决定的 ADX(df,n,n_ADX):#adx,中文全称:平均趋向指数,ADX 指数是反映趋向变动的程度,而不是方向的本身;英文全称:Average Directional Index 或者 Average Directional Movement Index ATR(df,n):ATR,均幅指标(Average True Ranger),取一定时间周期内的股价波动幅度的移动平均值,主要用于研判买卖时机 BBANDS(df,n):布林带.Bollinger Bands BBANDS_UpLow(df,n):zw 改进版的布林带 talib 函数 CCI(df,n):CCI 顺势指标(Commodity Channel Index),CCI 指标,是由美国股市分析家唐纳德 蓝伯特(Donald Lambert)所创造的,是一种重点研判股价偏离度的股市分析工具。COPP(df,n):估波指标(Coppock Curve),又称“估波曲线”,通过计算月度价格的变化速率的加权平均值来测量市场的动量,属于长线指标。估波指标由 EdwinSedgwickCoppock 于 1962 年提出,主要用于判断牛市的到来。该指标用于研判大盘指数较为可靠,一般较少用于个股;再有,该指标只能产生买进讯号。依估波指标买进股票后,应另外寻求其他指标来辅助卖出讯号。估波指标的周期参数一般设置为 11、14,加权平均参数为 10,也可以结合指标的平均线进行分析 Chaikin(df):佳庆指标(Chaikin Oscillator),是由马可蔡金(Marc Chaikin)提出的,聚散指标(A/D)的改良版本。DONCH(df,n):奇安通道指标,Donchian Channel,该指标是由 Richard Donchian 发明的,是有 3条不同颜色的曲线组成的,该指标用周期(一般都是 20)内的最高价和最低价来显示市场的波动性;当其通道窄时表示市场波动较小,反之通道宽则表示市场波动比较大。EMA(df,n):指数平均数指标(Exponential Moving Average,EXPMA或 EMA),指数平均数指标也叫EX