【2022·合辑】Python量化从入门到精通
引言 公众号“Python金融量化”历经四年,量化量化累计万+关注,源码p源依然坚持文字输出,学习计划管理系统源码这背后离不开广大读者的量化量化支持,特别是源码p源知识星球圈友的贡献,累计付费人数已达+。学习公众号以原创内容为动力,量化量化今年的源码p源一大成就在于基于公众号沉淀和网上资源开发了qstock量化分析包,包括数据获取、学习可视化、量化量化选股和量化回测四大模块。源码p源qstock面向读者开源,学习直接通过“pip install qstock”进行安装,或通过“pip install –upgrade qstock”进行更新,部分策略功能仅对知识星球会员开放。 学习是一个逐步积累的过程,通过梳理过去四年发布的多篇原创文章,形成四大框架:Python入门篇、金融数据篇、量化分析篇和策略回测篇。以下将详细介绍各部分内容。Python入门篇
这一部分主要围绕Python金融量化入门学习路径、量化资源,以及numpy、pandas、matplotlib等量化常用库的入门和应用。推荐使用Anaconda作为编译软件,内置Jupyter notebook和Spyder,其中Jupyter在交互式编程与数据分析上功能强大。公众号文章皆基于Jupyter编写。类似淘宝的源码1.1 Python金融量化入门
1.2 Python量化资源大合集
1.3 NumPy入门与应用
1.4 Pandas数据处理详解
1.5 Matplotlib与Seaborn可视化
1.6 Sklearn机器学习基础
1.7 Pyecharts股票可视化分析
金融数据篇
本部分涉及使用Python获取股票行情、上市公司基本面、宏观经济以及财经新闻等数据,进行可视化分析。使用Postgresql搭建本地量化分析数据库,介绍qstock免费开源库在线获取行情数据、板块资金流数据、宏观基本面和财经新闻数据。2.1 Python获取交易数据
2.2 上市公司数据概览
2.3 Python量化选股初探
2.4 财经十大关键词解析
2.5 Python财经数据可视化
2.6 文本挖掘与财经分析
2.7 Python量化财经新闻分析
2.8 自建量化分析数据库
2.9 Python面向对象编程与股票数据管理
量化分析篇
本部分深入探讨A股市场分析、金融统计、蒙特卡洛模拟、时间序列建模、TA-Lib技术分析、投资组合、多因子模型、基本面量化分析等。内容涵盖数据探索性分析、时间序列专题、技术分析、投资组合分析、多因子模型、债券与期权分析、比特币量化、基本面量化等。3.1 股票分析入门
3.2 A股指数图谱分析
3.3 A股沉浮启示录
3.4 股市趋势与拐点研究
3.5 A股数据挖掘案例
3.6 机器学习分析股票市场结构
3.7 股票涨停板探索性分析
3.8 时间序列日期处理
3.9 时间序列自相关性与平稳性
3. 金融时间序列模型
3. ARCH与GARCH模型应用
3. 机器学习预测效果与非平稳性
3. Markov区制转换模型分析
3. 统计套利量化
3. 股市牛熊分析
3. TA-Lib技术分析
3. TA-Lib技术分析案例
3. 量价关系分析
3. Python量化股票情绪指标
3. 动量指标量化回测
3. Python量化强势股寻找
3. Python量价形态选股
3. 牛股价量分析
3. Heikin Ashi蜡烛图可视化
3. 趋势预测方法
3. 价格噪音量化应用
3. 交易系统与市场分析
3. 多因子量化选股模型
3. 单因子测试框架
3. 量化回测
3. 固定收益与衍生品分析
3. 债券与期权定价分析
3. 比特币交易者分析
3. 股票财务指标打分系统
3. 高管增持股价影响
3. 领涨板块与题材龙头股
策略回测篇
本部分聚焦于量化策略的评价指标、指数定投、机器学习、海龟交易法、均值回归策略等,以及backtrader回测系统的运用和qstock量化回测。4.1 量化投资方法论
4.2 量化策略评价与风险指标
4.3 证券收益分析
4.4 事件驱动量化回测
4.5 Pyfolio量化回测图表
4.6 指数定投策略分析
4.7 如何实现基金定投收益最大化
4.8 使用Logistic回归预测指数涨跌
4.9 RNN深度学习预测股票价格
4. 均值回归策略回测
4. 海龟交易法则应用
4. 月份效应与A股择时策略
4. 北向资金预测大盘涨跌
4. ADX和MACD趋势策略回测
4. 龙虎榜个股交易策略
4. qstock量化回测应用
4. 均线排列价格动量策略
4. 价格动量策略回测
4. 机器学习预测交易信号
4. 神经网络构建量化交易策略
4. backtrader入门与使用
4. backtrader进阶指南
4. backtrader高级应用
4. 回测股票因子数据
4. 股票组合量化回测
4. 海龟交易策略回测
4. 回测技术指标自定义
4. Ichimoku云图策略回测
4. 隔夜持仓与日内交易比较
结语
回顾过去,展望未来,扫描搜题源码曾国藩的“物来顺应,未来不迎,当时不杂,既过不恋”作为结语,寄予读者以智慧与启示。公众号“Python金融量化”致力于分享Python金融量化应用知识,提供丰富资源、视频资料、PDF文档、文章源码以及与博主交流的平台。加入知识星球,获取更多内容,与作者互动交流。vn.py全实战进阶课程学习笔记(零)
刚接触量化投资,对量化投资充满兴趣,在闲暇时间进行学习,只能进行少量资金实践。现阶段的计划是阅读 vn.py 的源码,学习其架构机制,通过分享笔记加深理解。如果有不对的地方,欢迎指正。分享的仓库:github.com/PanAndy/quan...
觉得内容有收获,欢迎关注公众号,获取更多资源。学习过程中,我也收集了一些量化、技术的视频及书籍资源,欢迎大家关注公众号亚里随笔获取。
本系列博客是对 vnpy 官方课程《 vn.py全实战进阶课程》的学习整理,旨在梳理课程内容,介绍源码实现,079怀旧手机源码并参考《 vnpy项目文档》。实验操作也将根据课程进行,力求复现过程,用截图记录。
以下记录了配置 vnpy 回测与实盘环境的相关内容。
MySQL 数据库配置
初次接触 vnpy 使用 sqlite 数据库,但在 UI 界面加载数据时较为卡顿,可能是数据库问题。重新安装 vnpy 时,选择配置 mysql 数据库。
配置流程包括:安装 mysql、创建数据库、vnpy 数据库配置。整体配置流畅,未遇报错。
MySQL 安装与创建数据库
从 MySQL 官网下载 windows 版本安装包,一路默认安装。记住 root 账户密码,其他设置默认。
安装完成后,自动启动 MySQL WorkBench,连接数据库时输入 root 密码创建连接。需手动创建 vnpy 数据库。
在数据库管理界面,点击创建新数据库按钮,输入 vnpy 作为名称,完成数据库创建。
vnpy 数据库配置
数据库创建后,启动 VN Trader,配置数据库相关字段,保存配置后重启 VN Trader。配置成功后,解压kernel源码重名数据库使用无误。
刷新 MySQL WorkBench,确认数据库表结构已创建。同时,检查 C:\Users\xxx\.vntrader\vt_setting.json 文件,验证配置更新。
rqdata 数据服务配置
申请了 天的 rqdata 试用账号,计划购买数据服务。参考官方文档《 vn.py 快速入门7 - 历史数据回测优化》进行配置。
申请试用权限
通过米筐量化平台申请,获得 天免费试用权限。注意,教育专区申请只能在校园网内使用,个人使用时需关注申请方式。
参数配置
收到授权邮件后,获取试用账号和密码。在 vnstation 配置表单中填写,重启 vnstation 完成配置。
simnow 仿真环境配置
首次配置 simnow 仿真环境,参考 vnpy 官方《 vn.py 快速入门2 - 国内期货CTP》。主要记录配置步骤,确保无意外。
准备账号
通过上期技术官方获取的 simnow 仿真交易环境账号。完成注册与登录,注意手机号验证与注册时间。
接口登录与合约查询
启动 VN Trader Pro,连接 CTP 接口,配置连接信息。使用合约查询功能查看合约。订阅行情,注意价格显示与更新频率。
交易下单与委托成交
进行买卖下单与委托操作,关注资金与持仓变化。了解平仓规则与资金管理。
实盘交易准备
熟悉仿真环境后,准备使用 CTP 进行实盘交易。注意实盘交易与仿真环境的差异。
通达信量化擒龙先手!主附图/选股指标源码分享
通达信量化擒龙先手!主附图/选股指标源码分享
一. 指标简介:
二. 主图指标源码
MA5:MA(C,5);
MA:MA(C,);
MA:MA(C,);
MA:MA(C,);
DIF1:=EMA(CLOSE,)-EMA(CLOSE,);
DEA1:=EMA(DIF1,9);
AAA1:=(DIF1-DEA1)*2*;
AAA上:=IF(AAA1>REF(AAA1,1),AAA1,DRAWNULL);
AAA下:=IF(AAA1
买:=;
入:=AAA1-REF(AAA1,1);
正大:=CROSS(入,买);
DIF:=EMA(CLOSE,)-EMA(CLOSE,);
DEA:=EMA(DIF,);
AAA:=(DIF-DEA)*2*;
牛股:=CROSS(AAA-REF(AAA,1),);
正大牛股:=正大 AND 牛股;
HSL:=V/CAPITAL*>5;
S1:=IF(NAMELIKE('S'),0,1);
S2:=IF(NAMELIKE('*'),0,1);
Z3:=NOT(INBLOCK('近期解禁'));
Z4:=NOT(INBLOCK('拟减持'));
Z5:=NOT(INBLOCK('股东减持'));
Z6:=NOT(INBLOCK('基金减持'));
Z7:=NOT(INBLOCK('即将解禁'));
Z8:=IF(CODELIKE(''),0,1);
Z9:=IF(CODELIKE('8'),0,1);
去掉:=S1 AND S2 AND Z3 AND Z4 AND Z5 AND Z6 AND Z7 AND Z8 AND Z9;
AA:=MA(CLOSE,8);
BB:=((ATAN((AA - REF(AA,1))) * 3.) * );
均线:=MA(CLOSE,);
均线:=MA(CLOSE,);
均线:=MA(CLOSE,);
天马:=((((((OPEN <= 均线) AND ((均线 - REF(均线,1)) > 0))
AND (CLOSE > 均线)) AND (BB > 1)) AND ((CLOSE / OPEN) > 1.)));
{ 股价必涨}
AA:=IF(CLOSE/REF(CLOSE,1)>1. AND HIGH/CLOSE<1. AND IF(CLOSE>REF(CLOSE,1),,0)>0, , 0);
SS:=MA((LOW+HIGH+CLOSE)/3,5)>REF(MA((LOW+HIGH+CLOSE)/3,5),1) AND REF(MA((LOW+HIGH+CLOSE)/3,5),1)
SC:=LHHV(MA((LOW+HIGH+CLOSE)/3,5),) AND C>REF(C,1) AND C>O;
MR:=SC AND COUNT(SS,2);
BB:=MR AND NOT(REF(MR,1));
股价必涨:=AA OR BB OR 天马;
{ 抄底}
二十日换手率:=BETWEEN(SUM(HSCOL,),,);{ 意思是 日换手率介于---之间}
DFO:=(C-REF(C,1))/REF(C,1)*<-5;
AAO:=BARSLAST(DFO);
突破:=CROSS(C,REF(O,AAO));
抄底:=二十日换手率 AND 突破;
三.副图指标源码:
DIF1:=EMA(CLOSE,)-EMA(CLOSE,);
DEA1:=EMA(DIF1,9);
AAA1:=(DIF1-DEA1)*2*;
AAA上:=IF(AAA1>REF(AAA1,1),AAA1,DRAWNULL);
AAA下:=IF(AAA1
买:=;
入:=AAA1-REF(AAA1,1);
正大:=CROSS(入,买);
DIF:=EMA(CLOSE,)-EMA(CLOSE,);
DEA:=EMA(DIF,);
AAA:=(DIF-DEA)*2*;
牛股:=CROSS(AAA-REF(AAA,1),);
正大牛股:=正大 AND 牛股;
HSL:=V/CAPITAL*>5;
S1:=IF(NAMELIKE('S'),0,1);
S2:=IF(NAMELIKE('*'),0,1);
Z3:=NOT(INBLOCK('近期解禁'));
Z4:=NOT(INBLOCK('拟减持'));
Z5:=NOT(INBLOCK('股东减持'));
Z6:=NOT(INBLOCK('基金减持'));
Z7:=NOT(INBLOCK('即将解禁'));
Z8:=IF(CODELIKE(''),0,1);
Z9:=IF(CODELIKE('8'),0,1);
去掉:=S1 AND S2 AND Z3 AND Z4 AND Z5 AND Z6 AND Z7 AND Z8 AND Z9;
AA:=MA(CLOSE,8);
BB:=((ATAN((AA - REF(AA,1))) * 3.) * );
均线:=MA(CLOSE,);
均线:=MA(CLOSE,);
均线:=MA(CLOSE,);
天马:=((((((OPEN <= 均线) AND ((均线 - REF(均线,1)) > 0))
AND (CLOSE > 均线)) AND (BB > 1)) AND ((CLOSE / OPEN) > 1.)));
{ 股价必涨}
AA:=IF(CLOSE/REF(CLOSE,1)>1. AND HIGH/CLOSE<1. AND IF(CLOSE>REF(CLOSE,1),,0)>0, , 0);
SS:=MA((LOW+HIGH+CLOSE)/3,5)>REF(MA((LOW+HIGH+CLOSE)/3,5),1) AND REF(MA((LOW+HIGH+CLOSE)/3,5),1)
SC:=LHHV(MA((LOW+HIGH+CLOSE)/3,5),) AND C>REF(C,1) AND C>O;
MR:=SC AND COUNT(SS,2);
BB:=MR AND NOT(REF(MR,1));
股价必涨:=AA OR BB OR 天马;
{ 抄底}
二十日换手率:=BETWEEN(SUM(HSCOL,),,);{ 意思是 日换手率介于---之间}
DFO:=(C-REF(C,1))/REF(C,1)*<-5;
AAO:=BARSLAST(DFO);
突破:=CROSS(C,REF(O,AAO));
抄底:=二十日换手率 AND 突破;
四. 选股指标源码
指标源码内容与前文一致,仅包含主图和副图指标源码,用于量化分析股票。指标包括移动平均线、MACD、股价波动判断、换手率分析等,通过设置条件筛选出具有投资潜力的股票。使用时根据具体市场情况和策略进行调整。注意:指标的有效性需结合市场情况综合判断,不应单一依赖。
vn.py学习笔记(八)vn.py utility、BarGenerator、ArrayManager源码阅读
在量化投资的探索中,作者对vn.py产生了浓厚的兴趣,并投身于相关学习。目前,作者主要专注于vn.py在A股市场量化策略的学习,面临的主要技术难点包括获取和维持日线数据、实现自动下单交易、开发全市场选股程序、编写选股策略回测程序,以及运用机器学习进行股票趋势预测。作者计划通过阅读vn.py源码,深入了解其架构机制,并通过分享形式记录学习心得,以便更好地理解vn.py。
相关github仓库地址:github.com/PanAndy/quan...
如有收获,请关注公众号以支持作者。同时,作者也收集了一些量化投资和技术相关的视频及书籍资源,欢迎关注公众号亚里随笔获取。
本文将重点探讨vn.py/trader/utility.py中的内容,主要包括工具函数、BarGenerator和ArrayManager。工具函数部分相对容易理解,主要是对通用功能进行封装。BarGenerator是K线合成器,负责根据实时tick数据合成1分钟K线,并进一步合成n分钟K线。ArrayManager是指标计算辅助类,负责维护一定量的历史数据,以供计算sma、ema、atr等常见指标。BarGenerator和ArrayManager是本次学习的重点。
工具函数部分主要提供合约代码转换、路径读取、json文件读写、数值位数设置、日志等功能,主要是对基本功能进行封装,没有复杂的算法。
BarGenerator类用于从tick数据中生成1分钟bar数据,也可以用于从1分钟的bar数据中合成x分钟或x小时的bar。BarGenerator的主要函数包括update_tick、update_bar、update_bar_minute_window、update_bar_hour_window、on_hour_bar和generate。
ArrayManager是一个时间序列容器,用于按时间序列缓存bar数据,提供技术指标的计算。ArrayManager提供的函数分为四类:init函数、update_bar、@property函数和技术指标函数。
TFlite 源码分析(一) 转换与量化
TensorFlow Lite 是 Google 推出的用于设备端推断的开源深度学习框架,其主要目的是将 TensorFlow 模型部署到手机、嵌入式设备或物联网设备上。它由两部分构成:模型转换工具和模型推理引擎。
TFLite 的核心组成部分是转换(Converter)和解析(interpreter)。转换主要负责将模型转换成 TFLite 模型,并完成优化和量化的过程。解析则专注于高效执行推理,在端侧设备上进行计算。
转换部分,主要功能是通过 TFLiteConverter 接口实现。转换过程涉及确定输入数据类型,如是否为 float、int8 或 uint8。优化和转换过程主要通过 Toco 完成,包括导入模型、模型优化、转换以及输出模型。
在导入模型时,`ImportTensorFlowGraphDef` 函数负责确定输入输出节点,并检查所有算子是否支持,同时内联图的节点进行转换。量化过程则涉及计算网络中单层计算的量化公式,通常针对 UINT8(范围为 0-)或 INT8(范围为 -~)。量化功能主要通过 `CheckIsReadyForQuantization`、`Quantize` 等函数实现,确保输入输出节点的最大最小值存在。
输出模型时,根据指定的输出格式(如 TensorFlow 或 TFLite)进行。TFLite 输出主要分为数据保存和创建 TFLite 模型文件两部分。
量化过程分为选择量化参数和计算量化参数两部分。选择量化参数包括为输入和权重选择合适的量化参数,这些参数在 `MakeInitialDequantizeOperator` 中计算。计算参数则使用 `ChooseQuantizationParamsForArrayAndQuantizedDataType` 函数,该函数基于模板类模板实现。
TFLite 支持的量化操作包括 Post-training quantization 方法,实现相关功能的代码位于 `tools\optimize\quantize_model.cc`。
量化投资之工具篇:Backtrader从入门到精通(3)Cerebro代码详解
在深入理解backtrader的工具使用中,Cerebro作为核心控制器,其代码详解至关重要。它负责整个系统的协调和管理,虽然看似复杂,但实质上是将任务分发给其他组件如策略、数据源和分析器。让我们通过源代码解析来逐步揭示其工作原理。
首先,Cerebro的初始化主要设置公共属性,并接受一系列参数,这些参数在元类中统一处理,通过**kwargs传递。初始化过程中,实际上并未做太多工作,而是为后续操作准备了基础结构。
数据源的添加是通过cerebro.adddata方法,它可以处理普通数据和resample/replay数据,这个过程涉及对数据源的筛选和处理后加入到Cerebro的datas列表中。
策略的添加同样简单,只是将策略类及参数存储在strats容器中,策略会在run时实例化。
Cerebro的run函数是整个流程的驱动器,它根据传入的参数,按照时间驱动数据运行,同时协调策略、分析器和观察者等组件协同工作。run函数的代码复杂,但关键在于它如何管理和调度各个组件。
最后,Cerebro通过plot方法实现可视化输出,其自身并不直接进行绘图,而是调用plotter模块来完成。
总的来说,虽然Cerebro的代码看起来复杂,但实际上它的作用是连接各个组件,提供一个框架让策略和数据处理得以高效执行。理解Cerebro的工作原理后,后续理解其他部件如data feeds的运作就更为顺畅了。下文我们将转向数据类的解析,进一步探讨数据的管理与驱动机制。
2024-11-30 09:29
2024-11-30 08:58
2024-11-30 08:34
2024-11-30 06:52
2024-11-30 06:52