导图社区 零起点Tensorflow与量化交易
《零起点Tensorflow与量化交易》的结构整理,包含库文件:全局变量设置、TopQ极宽魔改版talib金融函数库v1.0;TICK数据回溯;LSTM与量化分析;RNN趋势预测;趋势预测等。
编辑于2021-11-16 11:11:20零起点Tensorflow与量化投资
数据
OHLC金融数据格式
例2-1
K线图
例2-2
Tick金融数据格式
例2-3
Tick数据与分时数据的转换
例2-4
TopDat数据
日线数据
例2-5
Tick数据
例2-6
数据下载
更新个股日线
例2-7
批量更新个股日线
例2-8
更新个股分时
例2-9
批量更新个股分时
例2-10
更新个股实时
例2-11
全部更新个股实时
例2-12
策略相关
均值计算与价格曲线图
例3-1
多因子策略和泛因子策略
均线因子
例3-2
时间因子
例3-3
分时时间因子
例3-4
TA-Lib金融指标
常用 的金融技术指标
K 线图模式识别函数
Top 极 宽版 TA-Lib 函数库
模块文件名是 : zpd一talib . py 。 Top 极 宽版 TA-Lib 函数库与 Pandas 无缝集成, 对 TA-L i b 函数进行了 二 次封装 , 提供了很多常用的金融指标函数,可以直接调用 。
TQ智能量化回溯系统
全 内存计算
增强版指数索引
例3-5
Al 版索引数据库
例3-6
股票池
例3-7
TQ_bar全局变量类
TQ bar 初始化
例3-8
TQ 版本日线数据
例3-9
大盘指数
指数日线数据
例3-10
TQ 版本指数 K 线图
例3-11
个股和指数曲线对照图
例3-12
TDS金融数据集
与 原始数据集对比, 大家会发现扩展后 的 TDS 衍 生数据集丰富 了很 多。 扩展后 的数据集虽然宇段很多 , 但大体可以 分为以 下几细 。 · 原始数据 ,包括 OHLC 数据 、 volume (成交量 )和 date ( 日期〉 。 . 拆分后 的时间 数据组 。 • avg 均值衍生数据 。 · 基于 avg 均值, 调 用 TA-Lib 函数生成的 MA 均 线衍生数据 。 · 基于 avg 均值 , 计算次日的 均值数据作为预测 数据,对应深度学习当中 的 结果 Y 数据集 。 鉴于数据规模和神经 网络模型训练、测试数据集 的基本要求 ,首期发布的 TDS 极 宽金融测试数据集 ,以控制数据集 的规模为 优先考虑指标 。 TDS 金融数据集在金融指标方面只保留了最基本的 MA 均线数据
TDS 衍生数据
例3-13
TDS 金融数据集的制作
例3-14
TDS 金融数据集 2.0
TDS 金融数据集 2 . 0 是升级版本 , 主要做了 以下变动。 .数据取消了随机排序模式 。 · 删除了 xtim 字段 。 它是数字格式的时间,不直观,而且已经有了 xy ear (年〉、 xmonth (月〉、 xday C 日)等独立的 时间字段 。 · 训 练数据集选择 2 017 年 以前的数据,测试数据集选择 2017 年前 9 个月的数据。 在后面的神经网络与量化分析的案例中,我们采用简单的 LSTM 模型,在 10% 的误差 宽容度范围内,经过 5000 次选代后 , 获得了 92% 的准确度,这个准确度远远 高于现有的其他案例 。
例3-15
读取 TDS 金融数据集
例3-16
趋势预测
人工智能与统计关联度分析
关联分析函数corr
Pearson 相关系数
统计学中, Pearson 相关系数通常用 r 或 ρ 表示,用来度量两个变量 X 束l Y 之 间的相关程度。其取值范围为 [- 1 ,十 l ], 其中, l 表示两个变量完全正相关, 0 表示无关, - 1 表示完全负相关。 当两个连续变量在散点图上的散点呈现直线趋势时,就可以认为 二者存在直线 相关趋势,也称为简单相关趋势。
Spearman 相关系数
Spearman 相 关系数对原始变量 的分布不作要求,属 于非参数统计方法,适用范 围要广些,主要用于解决与顺序数据相关的问题。 Spearman 相 关系数和 Kendall 相关系数都是等级相 关系数 , f![J 其值与两个相 关 变量 的具体值无关 ,而仅仅与其值之间的大小关系有关。 Spearman 相 关系数和 Pearson 相 关系数在算法上完全相同 。 • Pearson 相关系数是用原来的数值计算积差相关系数,而 Spearman 相关系数是 用原来数值的秩次计算积差相关系数。 • Spearman 相关系数的计算可以采用 Pearson 相关系数的计算方法,只需要把原 随机变量中的原始数据替换成其在随机变量中的等级顺序即可。 作为参数方法,积差相关分析有一定的适用条件,两个连续变量之间呈线性相 关时,使用 Pearson 相关系数 :不满足积差相关分析的适用条件时,大家可 以考虑 使用 Spearman 相关系数来解决问题。
Kendall 相关系数
Kendall (肯德尔) 相 关系 数,其英文 全 称为 Kendall tau rank correlation coefficient ,又称作 和谐系数,也是 一种 等级 相 关系数 ,是表示 多 列 等级变量相 关程 度 的一种方法。 Kendall 相关系数常用希腊字母 r ( tau )表示其值,是一个用 来测量两个随机变量 相关性的统计值 。 Kendall 相 关系数的 计算方法是 , 在所有的观察值对中,和谐的观察值对 数减去 不和:|谐的观察值对数,除以总 的观察值对数 。 Kendall 相 关系数是 一个用于反映分类变量相关性的指标,适用于两个分类变量 均为有序分类的情况,对相关的有序变量进行非参数相关检验 。 Kendall 相关系数的取值范围为[- 1,1 J , 当 T 为 l 时,表示两个随机变量拥有 一 致 的 等级相关性;当 T 为自 l 时,表示两个随机变量拥有完全相反的 等级相 关性; 当 T 为 0 时, 表示两个随 机变 量 是 相 互独立的 。 Kendall 检验是一个无参数的假设检验,它使用计算得到的相关系数去检验两个 随机变量的统计依赖性 。
open (开盘价)关联性分析
例4-01
数值顶测与趋势预测
数值预测
常见的传统预测算法如下 。 ·简易平均法 : 包括儿何平均法、 算术平均法和加权平均法 。 .移动平均法:包括简单移动平均法和加权移动平均法 。 ·指数平滑法:包括一次指数平滑法、 二次指数平滑法和三次指数平滑法 。 .线性回归法:包括一元线性回归法和二元线性回归法 。
趋势预测
趋势预测,类似于趋势分析法,通过对各种历史数据采用专业的金融指标参数 进行分析,得出未来的增减变动方向 。 对于金融量化而言 ,就是根据历史日线数据、分时数据,预测大盘、个股上涨 或下跌的趋势 。 对于 TensorFlow 深度学习、神经网络平台而言 ,趋势预测就是“ 二选一 ”的分 类模型算法 : l 为上涨, 0 为下跌 。 在量化领域中 , “ 三选一 ”的分类模型类似于范围、领域分类模式。例如,假设 我们挑选波动率在 9 5%~ 105%之间的股票,那么凡是波动率小于 95%或者波动率大 于 105% 的股票,都不在考虑、范围之类,这里的 95%和 l 05%相 当于阔值,月3 于设置 上限和下限数值。
ROC
ROC 计算
例4-2
ROC 与交易数据分类
例4-3
n+1大盘指数预测
线性回归模型
有学者称 , 从本质上说,所有的神经网络模型都是线性回归模型。这句话虽然 有些偏激,但也充分说明了线性回归模型的重要性。 线性回归模型是最简单的模型,也是最古老的算法模型,其原理是基于二元一 次回归方程 , 根据 X值的变化,生成用于分类和回归 Y 值最适合的一条线,如图 4-10 所示 。需要指出的是,线性回归模型可以接受 多个 X 特征输入。
上证指数 n+1 的开盘价预测
例4-4
预测数据评估
例4-5
效果评估函数
本节主要介 绍 ai ace xed2 ext 评估函 数 的源码 。该函数位于极宽量化系统的 ztools_tq 模块中 , 主要用于评估机器学 习 算法函数 的效果 。 ai ace xed2ext 评估函 数的接口定义如下: def ai ace xed2ext(y true,y pred,ky0=5 , fgDebug=False) 其 中: • y_true, y_pred-→Pandas 的 Series 数据列格式 。 • kyO-结果数据误差 K 值,默认是 5 , 表示 5% 。 • fgDebug一一调试模式变量 ,默认为 Fa l se 。
常用的评测指标
在 ai ace xed2ext 评估函数中, MAE 、 MSE 、 RMSE 是统计术语,用 于结果评 测。类似的术语还有: • s钮,和方差 、误差平方和 。 SSE 越接近于 0,说明模型选择和拟合越好,数据 . 138 . 第 4 章人工智能与趋势预测 预测也越成功。因为 MSE 、 RMSE 和 SSE 同出 一宗 ,所以效果一样 。 • R2 ( R-square )确定系数,也称为决定系数、拟合优度。、咳系数是通过数据的变 化来表征一个拟合算法的好坏的,其正常取值范围为 [0, 1 ],越接近于 l ,说明方 程的变量对 y 的解释能力越强,算法模型对数据拟合得也较好。确定系数可以 反映出回归方程对数据的拟合程度如何。 • Adj usted R-square,修正确定系数。 • Precision ,又称 P 指标,准确率,表示检索出来 的条目(比如文档、网页等)有 多少是准确 的 。 • Recal , 又称 R 指标,召回率 , 表示所有准确 的条目有多少被检索 出来 。 • F 值, ep F-Measure, !.lX F-Score 。 F 值是正确率和召回率的调和平均值; F 值= 正确率×召回率×2 I (正确率+召回率) 。 • E 值,表示查准率 P 丰II查全率 R 的加权平均值,当其中一个为 0 时, E 值为 l 。 • AP ,平均正确率 ,表示不同查全率的点上的正确率的平均 。 TensorFlow 神经网络平台虽然强大,但内置 的评估函数相对滞后,在实际编程 时, 往往需要借助 SKLearn 的评估函 数。 SKLearn 专门内 置了 一个评估子模块 metrics ,提供了 多 种方式的评估函数。
n+1大盘指数趋势预测
涨跌趋势归一化分类
例4-6
经典版涨跌趋势归一化分类
例4-7
One-Hot
们 己经成功获取 了 ktype 宇段 , 并设置 了上涨、 停滞、下 跌不 同 状态的数字编码 。 由 于 TensorFlow 神经 网 络系统 内部是一个个独立 的神经元 ,采用的都是概率模 型,所以 从效率的 角 度 出 发 , 输入数据对应 的 Label (标签)类型采用 的都是 On e-Hot (独热码) 格式 。 一个 One-Hot 向 量除某一位 的数字是 1 以外 ,其余各维度 的数字都是 0 。 One - Hot 在神 经 网 络 分类案例中,使用 数字 n 表示一个只有第 n 维度 (从 0 开 始)的数字为 l 的 n 维 向 量。 比如,标签 0 将表示成([ l 儿0 ,0 ,0,0儿0 ,0 ,0,0]) 。
例4-8
DNN模型
例4-9
单层神经网络预测
单层神经网络模型
例5-1
神经网络常用模块
在 TopQuant 极 宽量化系统巾 , 集成了很 多 人工智 能、机器学 习模块,它们全部 . 169. 零起点 TensorFlow 与量化交易 以“ zai 月开头,其中: · 字符 z,源自最终的版本 zwQuant o . 字符 ai ,是人工智能的意思 。 目前,相关的人工智能、机器学习模块还在不断增加中,初步命名如下 : • zai tools ,机器学习通用模块 。 • zai keras, Keras 相关模块 。 • zai一tlayer, TensorLayer 相关模块 。 • zai skiearn, S阻earn 相关模块 。 • zai tf, TensorFlow 相关模块 。 • zai mxnet. MXNet 相关模块 。 • zai_torch, PyTorch 相关模块 。 • zai cntk, CNTK 相关模块 。
可视化神经网络模型
目前,基于 Keras 编程,神经网络模型可视化有三利i方案。 .第一种是调用内置的 summa可函数。 ·第二种是调用内置的 plot model 函数。 ·第三种是通过回调模式,间接支持 TensorBoard 。
例5-2
模型读写
例5-3
参数调优入门
例5-4
MLP预测
又称多层神经网络 ,是一种前向 结构 的人工神经网络,将一组输入 向 量映射到一组输 出向 量。 MLP 是常见的神 经网络算法 ,它由 一个输入层 、 一个输出层和 一个或 多 个隐藏 层组成
MLP 价格预测模型
例6-1
神经网络模型应用四大环节
读取数据→调用模型→训练模型→模型预测
MLP 模型评估
例6-2
优化 MLP 价格预测模型
例6-3
优化版 MLP 模型评估
例6-4
RNN趋势预测
RNN 趋势预测模型
例7-1
RNN 模型评估
例7-2
RNN 趋势预测模型 2
例7-3
RNN 模型 2 评估
例7-4
LSTM与量化分析
LSTM 价格预测模型
例8-1
LSTM 价格预测模型评估
例8-2
LSTM 股价趋势预测模型
例8-3
LSTM 趋势模型评估
例8-4
LSTM量化回溯分析

构建模型
例8-5
数据整理
例8-6
回溯分析
例8-7
量化交易回报分析
例8-8
完整的LSTM量化分析程序
例8-9
日线数据回溯
数据更新
例9-1
数据整理
例9-2
回溯分析
回溯主函数
TopQuant 极宽智能量化系统的回溯函数全部保存在 ztoo l s_b t 模块中,核 心 函数 就三个 。 . 307. 零起点 TensorFlow 与量化交易 • bt main : 回溯主函数,逐一周期测试输入数据,如果是日线数据,就按每一个 交易日调用分析函数。 bt main 通过调用策略函数,分析对当前周期的股票是买 入、卖出还是忽略 。 如果有合适的买入、卖出数据 , 就及时通过变量,发出买 入 、 卖 出 的交易信号 。 • bt_main_ lday_pools:单一时间节点回溯函数,针对指定时间,按股票池代码, 循环调用具体的回溯分析’函数,如果是单只股票,这个环节可以省 II眶 。 • bt main 1code : 回溯分析函数 ,调用预设的 staFun 策 Ill各函数,具体分析输入数 据,判断操作模式是买入 、 卖出还是忽略 。
例9-3
交易信号
具体 的量化策略,是通过 bt main 1code 函数的如下代码执行的。 if dprice>O :qx.wrkStkNum=qx . staFun(qx) dprice 是当天该股票的交易价格数据,如果 dpric e 大于 0 , 则说明 交易正在进行, 股票没有下市或者停牌,可 以调用 staFun 策 Ill各函数。 s taF un 策略函数的返回值保存在 qx .wrkStkNum 变量 中,表示当前交易的股 票数 目 。该变量可以视为交易信号,如果 : • qx.wrkStkNum 大于 0,执行买入操作。 • qx.wrkStkNum 小于 0,执行卖 出操作 。 • qx .wrkStkNum 等于 0 , 不执行任何操作 。 系统支持定额与定量两种交易模式,由变量 qx . trd_mode 决定。 ·当 qx.trd_mode= l 时,为 定量交易模式,每次交易部买入预先设定数量的股票, 具体的买入数量由变量 qx.trd_buyNum 决定,默认每次买入 1000 股 。 ·当 qx.trd_mode=2 时,为定额交易模式,每次交易都买入预先设定金额的股票 , 具体的买入金额由变量 qx.trd buyMoney 决定,默认每次买入 l 万单位货币 。 在进行实盘操作时-,股票池一般每周清理一 次,考虑控制最低交易成本, A 股 单只股票单次交易额度一般是 5 万元人民 币 左右。
交易接口函数
具体的交易接 口函 数和 买卖操作, 主要通过调用 sta buy 和 sta_sell 函 数完成的, 这两个函数位于 ztools sta 策略模块 中。 • sta_buy : 买入策略函数。 • sta sell : 卖 出 策略函数。 所有 的策略决定买卖时,都是通过这两个函数统一进行的 , 这样设计是为了 统 一交易接口 , 便于用户修改和扩展 。 以下是在 avg 均值策 略函 数 中,对买卖函数 的 具体调用。 i f fgSel l: stknum=sta_sell (qx ) if f gBuy and (stknum==O) : stk口um=sta_buy ( qx) 以上是惯用的卖 出优先模式 , 这也 是现金为 王 的 指导思想在量化分析 中 的 具体 应用 。 系统支持空头交易 , 由变量 qx .trd nilFlag 赋值控制。 • qx.trd_ni!Flag=True,即 当空头标志变量为 True (真) 时- , 支持空头交易。 • qx.trd_ni!Flag=False,即 当空头标志变量为 False (假)时 , 取消空头交易 , 默认 不支持空头交易 。 当 qx.trd_nilFlag=True 时, 还有两个空头辅助变量将起作用。 • qx.usrLevel : 空头杠杆指数变量。按用户 起点金额(变量为 qx.trd_buyMoneyO) 的倍数 , 提供空头上 限金额支持。空头上限金额保存在变量 qx.usrMoneyOnil 中 。 qx . usrMoneyOnil=qx . usrMoneyO*qx . us rLevel • qx.usrMoneyOnil : 空头上限金额变量。只有当空头标志变量 qx.trd_nilFlag 为 True 时, qx .usrMoneyOnil 和平.usrLevel 变量才起作用。
多模式回溯分析
例9-4
TICK数据回溯
ffn金融模块库
功能演示
例10-1
量化交易回报分析
例10-2
完整的量化分析程序
例10-3
Tick分时数据量化分析
Tick 分时量化分析程序
例10-4
库文件
zsys
全局变量设置
topq_talib
TopQ极宽魔改版talib金融函数库v1.0
tax_mul
def tax_mul(xfun,df,ksgn='close',vlst=[5,10,30]): #vlst=[5,10,15,30,50,100] for xd in vlst: #print('@mul_talib',xd,vlst) df=xfun(df,xd,ksgn) #print(df.head()) return df
tax_shift
def tax_shift(df,xlst,n): if n>0:psgn='p'+str(n) elif n<0:psgn='n'+str(abs(n)) # for xsgn in xlst: df[xsgn+psgn]=df[xsgn].shift(n) # return df
指标名称
:: ACCDIST,集散指标(A/D),Accumulation/Distribution,是由价格和成交量的变化而决定的. :: ADX,平均趋向指数,反映趋向变动的程度,而不是方向的本身. :: ATR均幅指标,Average True Ranger,周期内股价波动幅度的移动平均值,主要用于研判买卖时机. :: BBANDS,布林带.Bollinger Bands.是根据统计学标准差原理设计的技术指标。它由三条轨道线组成,其中上下两条线分别可以看成是价格的压力线和支撑线,中间一条是价格平均线, :: BBANDS_UpLow,极宽改进版的布林带talib函数。 :: CCI,顺势指标,Commodity Channel Index,是一种重点研判股价偏离度的股市分析工具。 :: COPP,估波指标,Coppock Curve,又称“估波曲线”,通过计算月度价格变化速率的加权平均值,来测量市场的动量,属于长线指标. :: Chaikin,佳庆指标,Chaikin Oscillator,是由Marc Chaikin提出的,是A/D聚散指标的改良版本。 :: DONCH,奇安通道指标,Donchian Channel,该指标是由3条曲线组成,该指标用周期内的最高/低价,来显示市场的波动性;当其通道窄时,表示市场波动较小,反之通道宽则表示市场波动比较大。 :: EMA,指数平均数指标,Exponential Moving Average,也称EXPMA,是一种趋向类指标,对收盘价进行指数平均,用于判断价格变动趋势. :: EOM,简易波动指标,Ease of Movement Value,又称EMV指标;它是根据等量图和压缩图的原理设计而成,是一个量价合成指标,将价格与成交量的变化,结合成一个波动指标,来反映股价或指数的变动状况. :: FORCE,劲道指数,是一种摆荡指标,结合了三项主要数据:价格变动方向,幅度与成交量,用于衡量涨/跌势中的多/空头劲道. :: KELCH,KC肯特纳通道,Keltner Channel,是一个移动平均通道,由上中下叁条线组成.一般以上下通道线,作为买卖机会点. :: KST,确然指标,又称为完定指标,该指标参考长中短期的变速率ROC,以了解不同时间循环对市场的影响.该指标将数个周期的价格变动率函数作加权,以及再平滑绘制长短曲线,通过修正的价格变动组合来判断趋势,精准掌握转折买卖点。 :: KST4,极宽修订版,KST确然指标。 :: MA,移动平均线,Moving Average,即最常用的均线指标. :: MACD,异同移动平均线,是从双指数均线发展来的,由快线减去慢线,得到快线DIF. :: MFI,资金流量指标和比率,Money Flow Index and Ratio,又称为量相对强弱指标,Volume Relative Strength Index,VRSI,根据成交量来计测市场供需关系和买卖力道,属于量能反趋向指标. :: MOM,动量线,MOmentum,动量可以视为周期内,股价涨跌变动的比率. :: MassI,梅斯线,Mass Index,是累积股价波幅宽度后,所设计的震荡曲线.在于寻找强/弱势股的反转点,是风险系数最小的震荡指标. :: OBV,能量潮指标,On Balance Volume,通过成交量分析股价的走势。 :: PPSR,支点,又称支撑线和阻力线.Pivot Points, Supports and Resistances.该指标只是一个分析反转点的方法,常与布林带数据一起分析. :: ROC,变动率,Rate of change,也叫做变动速度指标,变动率指标或变化速率指标,是由当前股价,与n 天前的股价比较,计算其变动速度的大小. :: RSI,相对强弱指标,Relative Strength Index,也称相对强弱指数,相对力度指数. 是通过比较平均收盘涨数,和平均收盘跌数,来分析市场的走势. :: RSI100,极宽版RSI相对强弱指数,取0..100之间的数值. :: STDDEV,标准偏差,Standard Deviation. :: STOD,随机指标D值,Stochastic oscillator %D,随机指标,又称KD指标,KDJ指标综合了动量,强弱指标,及均线的优点,用来度量股价脱离价格正常范围的变异程度. :: STOK,随机指标K值,Stochastic oscillator %K. :: TRIX,三重指数平滑移动平均指标,Triple Exponentially Smoothed Average. :: TSI,真实强度指数,True Strength Index,是RSI相对强弱指数的变体,使用价格动量的双重平滑指数均线,剔除价格的震荡变化并发现趋势的变化。 :: ULTOSC,UOS终极指标,Ultimate Oscillator,依照加权的方式,将多个周期不同的振荡指标综合处理,比一般振荡指标,更能够顺应各种不同的市况. :: Vortex,螺旋指标,Vortex Indicator,参见http://www.vortexindicator.com/VFX_VORTEX.PDF #
zpd_talib
Top极宽版talib金融函数库
mul_talib
def mul_talib(xfun,df,ksgn='close',vlst=[5,10,15,30,50,100]): for xd in vlst: df=xfun(df,xd,ksgn) #print(df.head()) return df
指标名称
def FibPR(df, price='close'): """ Fibonacci Price Retracements 斐波纳契价格回调(黄金分割线)指数 def MA(df, n,ksgn='close'): ''' def MA(df, n,ksgn='close'): #Moving Average MA是简单平均线,也就是平常说的均线 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:ma_{n},均线数据 ''' def MA01(df, n,ksgn='close'): ''' def MA(df, n,ksgn='close'): #Moving Average MA是简单平均线,也就是平常说的均线 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:ma_{n},均线数据 def PPSR(df): ''' def PPSR(df): 支点,支撑线和阻力线.Pivot Points, Supports and Resistances PIVOT指标的观念很简单,不需要计算任何东西,它纯粹只是一个分析反转点的方法而已。 PIVOT意思是指“轴心”,轴心是用来确认反转的基准,所以PIVOT指标其实就是找轴心的方法 PIVOT指标,经常与布林带数据一起分析。 【输入】 df, pd.dataframe格式数据源 【输出】 df, pd.dataframe格式数据源, 增加了7栏:pp,s1,s2,s3,r1,r2,r3,输出数据 ''' def ACCDIST(df, n,ksgn='close'): ''' def ACCDIST(df, n,ksgn='close'): #集散指标(A/D)——Accumulation/Distribution 是由价格和成交量的变化而决定的 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:ad_{n},输出数据 def ADX(df, n, n_ADX,ksgn='close'): ''' def ADX(df, n, n_ADX): adx,中文全称:平均趋向指数,ADX指数是反映趋向变动的程度,而不是方向的本身 英文全称:Average Directional Index 或者Average Directional Movement Index 【输入】 df, pd.dataframe格式数据源 n,时间长度 n_ADX,adx周期 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:adx_{n}_{n2},输出数据 ''' def ATR(df, n,ksgn='close'): ''' def ATR(df, n,ksgn='close'): #ATR,均幅指标(Average True Ranger),取一定时间周期内的股价波动幅度的移动平均值,主要用于研判买卖时机 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:atr_{n},输出数据 def BBANDS(df, n,ksgn='close'): ''' def BBANDS(df, n,ksgn='close'): 布林带.Bollinger Bands 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了2栏:_{n},_{n}b,输出数据 def BBANDS_UpLow(df, n,ksgn='close'): ''' BBANDS_UpLow(df, n,ksgn='close'): zw改进版的布林带talib函数.Bollinger Bands 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了4栏: boll_ma,布林带均线数据 boll_std,布林带方差据 boll_up,布林带上轨带差据 boll_low,布林带下轨带差据 def CCI(df, n,ksgn='close'): ''' def CCI(df, n,ksgn='close'): CCI顺势指标(Commodity Channel Index) CCI指标,是由美国股市分析家唐纳德·蓝伯特(Donald Lambert)所创造的,是一种重点研判股价偏离度的股市分析工具。 MA是简单平均线,也就是平常说的均线 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:cci_{n},输出数据 #Coppock Curve def COPP(df, n,ksgn='close'): ''' def COPP(df, n): 估波指标(Coppock Curve)又称“估波曲线”,通过计算月度价格的变化速率的加权平均值来测量市场的动量,属于长线指标。 估波指标由Edwin·Sedgwick·Coppock于1962年提出,主要用于判断牛市的到来。 该指标用于研判大盘指数较为可靠,一般较少用于个股;再有,该指标只能产生买进讯号。 依估波指标买进股票后,应另外寻求其他指标来辅助卖出讯号。 估波指标的周期参数一般设置为11、14,加权平均参数为10,也可以结合指标的平均线进行分析 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:copp_{n},输出数据 #Chaikin Oscillator def CHAIKIN(df,ksgn='close'): ''' def CHAIKIN(df): #佳庆指标(Chaikin Oscillator) 佳庆指标(CHAIKIN)是由马可·蔡金(Marc Chaikin)提出的,聚散指标(A/D)的改良版本。 【输入】 df, pd.dataframe格式数据源 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:_{n},输出数据 #Donchian Channel def DONCH(df, n): ''' def DONCH(df, n): #奇安通道指标,Donchian Channel 该指标是由Richard Donchian发明的,是有3条不同颜色的曲线组成的,该指标用周期(一般都是20)内的最高价和最低价来显示市场的波动性 当其通道窄时表示市场波动较小,反之通道宽则表示市场波动比较大。 【输入】 df, pd.dataframe格式数据源 n,时间长度 【输出】 df, pd.dataframe格式数据源, 增加了2栏:donch__{n}sr,中间输出数据 donch__{n},输出数据 def EMA(df, n,ksgn='close'): ''' EMA(df, n,ksgn='close'): #Exponential Moving Average EMA是指数平滑移动平均线,也叫EXPMA指标,也称为:SMMA 是平均线的一个变种,EMA均线较MA更加专业一些。 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:ema_{n},输出数据 ''' #Ease of Movement def EOM(df, n): ''' def EOM(df, n): 简易波动指标(Ease of Movement Value),又称EMV指标 它是由RichardW.ArmJr.根据等量图和压缩图的原理设计而成,目的是将价格与成交量的变化结合成一个波动指标来反映股价或指数的变动状况。 由于股价的变化和成交量的变化都可以引发该指标数值的变动,因此,EMV实际上也是一个量价合成指标。 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了2栏:eom_{n},输出数据 eom_x,10e10倍的输出数据 def FORCE(df, n,ksgn='close'): ''' def FORCE(df, n): #劲道指数(Force Index) 劲道指数是由亚历山大·埃尔德(Alexander Elder)博士设计的一种摆荡指标,藉以衡量每个涨势中的多头劲道与每个跌势中的空头劲道。 劲道指数结合三项主要的市场资讯:价格变动的方向、它的幅度与成交量。它是由一个崭新而实用的角度,把成交量纳入交易决策中。 def KELCH(df, n,ksgn='close'): ''' def KELCH(df, n): #肯特纳通道(Keltner Channel,KC) 肯特纳通道(KC)是一个移动平均通道,由叁条线组合而成(上通道、中通道及下通道)。 KC通道,一般情况下是以上通道线及下通道线的分界作为买卖的最大可能性。 若股价於边界出现不沉常的波动,即表示买卖机会。 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了3栏:kc_m,中间数据 kc_u,up上轨道数据 kc_d,down下轨道数据 def KST(df, r1, r2, r3, r4, n1, n2, n3, n4,ksgn='close'): ''' def KST(df, r1, r2, r3, r4, n1, n2, n3, n4,ksgn='close'): #KST Oscillator 确然指标(KST)又称为完定指标,该指标参考长、中、短期的变速率ROC,以了解不同时间循环对市场的影响。 该指标将数个周期的价格变动率函数作加权以及再平滑绘制长短曲线,其特色在通过修正的价格变动组合来判断趋势,精准掌握转折买卖点。 tst: (r1, r2, r3, r4, n1, n2, n3, n4) = (1, 2, 3, 4, 6, 7, 9, 9) ''' ''' 【输入】 df, pd.dataframe格式数据源 r1..r4,n1..n4,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:ksf,输出数据 def KST4(df, r1, r2, r3, r4,ksgn='close'): ''' def KST4(df, r1, r2, r3, r4, n1, n2, n3, n4,ksgn='close'): zw修订版,KST确然指标 确然指标(KST)又称为完定指标,该指标参考长、中、短期的变速率ROC,以了解不同时间循环对市场的影响。 该指标将数个周期的价格变动率函数作加权以及再平滑绘制长短曲线,其特色在通过修正的价格变动组合来判断趋势,精准掌握转折买卖点。 tst: (r1, r2, r3, r4) = (9,13,18,24);(12,20,30,40) 【输入】 df, pd.dataframe格式数据源 r1,r2,r3,r4,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:ksf,输出数据 #MACD, MACD Signal and MACD difference def MACD(df, n_fast, n_slow,ksgn='close'): ''' def MACD(df, n_fast, n_slow): #MACD指标信号和MACD的区别, MACD Signal and MACD difference MACD是查拉尔·阿佩尔(Geral Appel)于1979年提出的,由一快及一慢指数移动平均(EMA)之间的差计算出来。 “快”指短时期的EMA,而“慢”则指长时期的EMA,最常用的是12及26日EMA: 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了3栏:macd,sign,mdiff #pd.ewm_mean is deprecated for Series and will be removed in a future version, replace with #Series.ewm(span=12,min_periods=15,adjust=True,ignore_na=False).mean() def MFI(df, n,ksgn='close'): ''' def MFI(df, n): MFI,资金流量指标和比率,Money Flow Index and Ratio 资金流量指标又称为量相对强弱指标(Volume Relative Strength Index,VRSI), 英文全名Money Flow Index,缩写为MFI,根据成交量来计测市场供需关系和买卖力道。 该指标是通过反映股价变动的四个元素:上涨的天数、下跌的天数、成交量增加幅度、成交量减少幅度 来研判量能的趋势,预测市场供求关系和买卖力道,属于量能反趋向指标。 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:mfi_{n},输出数据 def MOM(df, n,ksgn='close'): ''' def MOM(df, n,ksgn='close'): 动量线,英文全名MOmentum,简称MOM。“动量”这一名词,市场上的解释相当广泛。以Momentum命名的指标,种类更是繁多。 综合而言,动量可以视为一段期间内,股价涨跌变动的比率。 动量指标.Momentum 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:mom_{n},输出数据 def MASS(df): ''' def MassI(df): 梅斯线(Mass Index) 梅斯线是Donald Dorsey累积股价波幅宽度之后,所设计的震荡曲线。 本指标最主要的作用,在于寻找飙涨股或者极度弱势股的重要趋势反转点。 MASS指标是所有区间震荡指标中,风险系数最小的一个。 【输入】 df, pd.dataframe格式数据源 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:mass,输出数据 def OBV(df, n,ksgn='close'): ''' def OBV(df, n,ksgn='close'): #能量潮指标(On Balance Volume,OBV) OBV指标是葛兰维(Joe Granville)于本世纪60年代提出的,并被广泛使用。 股市技术分析的四大要素:价、量、时、空。OBV指标就是从“量”这个要素作为突破口,来发现热门股票、分析股价运动趋势的一种技术指标。 它是将股市的人气——成交量与股价的关系数字化、直观化,以股市的成交量变化来衡量股市的推动力,从而研判股价的走势。 关于成交量方面的研究,OBV能量潮指标是一种相当重要的分析指标之一。 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了2栏:obv_{n},输出数据 obv_x,放大10e6倍的输出数据 def ROC(df, n,ksgn='close'): ''' def ROC(df, n,ksgn='close'): 变动率(Rate of change,ROC) ROC是由当天的股价与一定的天数之前的某一天股价比较,其变动速度的大小,来反映股票市场变动的快慢程度。 ROC,也叫做变动速度指标、变动率指标或变化速率指标。 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:_{n},输出数据 def RSI(df, n): ''' def RSI(df, n): #RSI,相对强弱指标,Relative Strength Index 也称相对强弱指数、相对力度指数 RSI,是通过比较一段时期内的平均收盘涨数和平均收盘跌数来分析市场买沽盘的意向和实力,从而作出未来市场的走势。 RSI通过特定时期内股价的变动情况计算市场买卖力量对比,来判断股票价格内部本质强弱、推测价格未来的变动方向的技术指标。 def RSI100(df, n): ''' def RSI100(df, n): zw版RSI相对强弱指数,取0..100之间的数值 【输入】 df, pd.dataframe格式数据源 n,时间长度 【输出】 df, pd.dataframe格式数据源, 增加了2栏:rsi_{n},输出数据 rsi_k,中间输出数据 def STDDEV(df, n,ksgn='close'): ''' def STDDEV(df, n,ksgn='close'): #标准偏差,#Standard Deviation 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:std_{n},输出数据 def STOD(df, n,ksgn='close'): ''' def STO(df, n,ksgn='close'): 随机指标D值,Stochastic oscillator %D 随机指标,又称KD指标,KDJ指标 随机指标综合了动量观念、强弱指标及移动平均线的优点,用来度量股价脱离价格正常范围的变异程度。 KD指标考虑的不仅是收盘价,而且有近期的最高价和最低价,这避免了仅考虑收盘价而忽视真正波动幅度的弱点。 随机指标一般是根据统计学的原理,通过一个特定的周期(常为9日、9周等)内出现过的最高价、最低价 及最后一个计算周期的收盘价及这三者之间的比例关系,来计算最后一个计算周期的未成熟随机值RSV, 然后根据平滑移动平均线的方法来计算K值、D值与J值,并绘成曲线图来研判股票走势。 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:_{n},输出数据 def STOK(df,ksgn='close'): ''' def STOK(df,ksgn='close'): 随机指标K值,Stochastic oscillator %K 随机指标,又称KD指标,KDJ指标 随机指标综合了动量观念、强弱指标及移动平均线的优点,用来度量股价脱离价格正常范围的变异程度。 KD指标考虑的不仅是收盘价,而且有近期的最高价和最低价,这避免了仅考虑收盘价而忽视真正波动幅度的弱点。 随机指标一般是根据统计学的原理,通过一个特定的周期(常为9日、9周等)内出现过的最高价、最低价 及最后一个计算周期的收盘价及这三者之间的比例关系,来计算最后一个计算周期的未成熟随机值RSV, 然后根据平滑移动平均线的方法来计算K值、D值与J值,并绘成曲线图来研判股票走势。 【输入】 df, pd.dataframe格式数据源 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:_{n},输出数据 def TRIX(df, n,ksgn='close'): ''' def TRIX(df, n,ksgn='close'): 【输入】 df, pd.dataframe格式数据源 n,时间长度 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:trix_{n},输出数据 def TSI(df, r, s,ksgn='close'): ''' def TSI(df, r, s,ksgn='close'): TSI,真实强度指数,True Strength Index TSI是相对强弱指数 (RSI) 的变体。 TSI 使用价格动量的双重平滑指数移动平均线,剔除价格的震荡变化并发现趋势的变化。 r一般取25,是一般取13 【输入】 df, pd.dataframe格式数据源 r,s,时间长度; r一般取25,是一般取13 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:tsi,输出数据 #Ultimate Oscillator def ULTOSC(df,ksgn='close'): ''' def ULTOSC(df,ksgn='close'): UOS,终极指标(Ultimate Oscillator,UOS) 终极指标,由拉瑞·威廉(Larry Williams)所创。他认为现行使用的各种振荡指标,对于周期参数的选择相当敏感。 不同的市况,不同参数设定的振荡指标,产生的结果截然不同。因此,选择最佳的参数组含,成为使用振荡指标之前,最重要的一道手续。 为了将参数周期调和至最佳状况,拉瑞·威廉经过不断测试的结果,先找出三个周期不同的振荡指标,再将这些周期参数,按照反比例的方式,制作成常数因子。 然后,依照加权的方式,将三个周期不同的振荡指标,分别乘以不同比例的常数,加以综合制作成UOS指标。 经过一连串参数顺化的过程后,UOS指标比一般单一参数的振荡指标,更能够顺应各种不同的市况。 【输入】 df, pd.dataframe格式数据源 ksgn,列名,一般是:close收盘价 【输出】 df, pd.dataframe格式数据源, 增加了一栏:uos,输出数据 def VORTEX(df, n): ''' def VORTEX(df, n): 螺旋指标,#Vortex Indicator 参见 http://www.vortexindicator.com/VFX_VORTEX.PDF 【输入】 df, pd.dataframe格式数据源 n,时间长度 【输出】 df, pd.dataframe格式数据源, 增加了一栏:vortex__{n},输出数据
ztools_bt
TQ极宽智能量化回溯分析系统
bt_init_tim
bt_init_data
bt_init
bt_init(rdat,codLst,inxLst,tim0Str,tim9Str='',priceSgn='avg',prjNam='TQ01'): ''' [输入参数] rdat,数据目录,一般日线数据是 rdatCN='/zDat/cn/day/' codLst,股票池代码列表 inxLst,指数池代码列表 vlst,bt回溯初始化变量参数列表 [btTim0Str='',btTim9Str='']
bt_main_1code
bt_main_1day_pools
bt_main
ztools_data
Top极宽常用数据工具函数集
ds4x
df2type
def df_xshift(df,ksgn='avg',num9=10):
def df_type2float(df,xlst):
def df_type4mlst(df,nlst,flst):
def df_2ds8xlst(df,ds,xlst):
def df_get8tim(df,ksgn,kpre,kn9,kpos):
def df_kcut8tim(df,ksgn,tim0str,tim9str):
def df_kcut8yearlst(df,ksgn,ftg0,yearlst):
def df_kcut8myearlst(df,ksgn,tim0str,ftg0,yearlst):
def df_xappend(df,df0,ksgn,num_round=3,vlst=zsys.ohlcDVLst):
def df_xtim2mtim(df,ksgn='xtim',fgDate=False):
def df_xed_nextDay(df,ksgn='avg',newSgn='xavg',nday=10):
def df_xed_ailib(df,ksgn='avg',fgDate=True):
df_xed_xtyp(df,kmod='3',k0=99.5,k9=100.5,sgnTyp='ktype',sgnPrice='price_change'):
df_xed_xtyp2x(df_train,df_test,kmod='3',k0=99.5,k9=100.5,sgnTyp='ktype',sgnPrice='price_change'):
def df_rdcsv_tim0(fss,ksgn,tim0):
def pools_frd(rss,clst):
def pools_link010(dat,pools,clst,ksgn,inxFlag=False):
def pools_link2x(stkPools,clst,inxPools,xlst,ksgn):
def pools_link2qx(qx,ksgn,fgInx=True):
def f_links8codes(rss,clst):
def f_links_TDS(rss,clst,ksgn='avg',fgDate=True):
def f_rd_xdat(fdat,xlst,ysgn='y'):
def frd_TDS_sub(fdat,ksgn,xlst,fgChange=False):
def frd_TDS(rdat,fsgn,ksgn,xlst,fgChange=False):
ztools_datadown
Top极宽常用数据下载工具函数集
def down_stk_base():
下载时基本参数数据时,有时会出现错误提升: timeout: timed out 属于正常现象,是因为网络问题,等几分钟,再次运行几次
def down_stk_inx010(rdat,xcod,tim0):
''' 下载大盘指数数据,简版股票数据,可下载到1994年股市开市起 【输入】 xcod:指数代码 rdat,数据文件目录 tim0,数据起始时间
def down_stk_inx(rdat,finx):
def down_stk010(rdat,xcod,xtyp,fgInx=False):
中国A股数据下载子程序 【输入】 xcod:股票代码 rdat,数据文件目录 xtyp (str):k线数据模式,默认为D,日线 D=日 W=周 M=月 ;5=5分钟 15=15分钟 ,30=30分钟 60=60分钟
def down_stk_all(rdat,finx,xtyp='D',fgInx=False):
根据finx股票列表文件,下载所有,或追加日线数据 自动去重,排序
def down_tick010(xcod,xtim,ftg):
根据指定的日期,股票代码,数据文件名:ftg 下载指定股票指定日期的ticks数据,并保存到ftg [输入] xcode,股票代码 xtim,当前日期的字符串 ftg,保存tick数据的文件名
def down_tickLib8tim(rs0,stkPool,xtim):
下载指定日期,stkCodeLib包含的所有代码的tick历史分笔数据 并转换成对应的分时数据:5/15/30/60 分钟 数据文件保存在:对应的数据目录 \zwdat\tick\yyyy-mm\ 目录下,yyyy,是年份;mm,是月份 运行时,会根据日期,股票代码,生成数据文件名:ftg [输入] rs0,保存tick数据的目录 stkCodeLib,包含所有股票代码的pd数据表格 xtim,当前日期,格式:yyyy-mm-dd
def down_tickLib8tim_mul(rs0,stkPool,xtim0,xtim9):
下载所有股票代码的所有tick历史分笔数据,按时间日期循环下载 数据文件保存在:对应的数据目录 \zwdat\tick\yyyy-mm\ 目录下,yyyy,是年份;mm,是月份 [输入] rs0,保存tick数据的目录 stkCodeLib,包含所有股票代码的pd数据表格 xtim0,起始日期,格式:yyyy-mm-dd xtim9,结束日期,格式:yyyy-mm-dd
def down_min_real010(rdat,xcod,xtyp='5',fgIndex=False):
下载大盘指数数据,简版股票数据,可下载到1994年股市开市起 【输入】 rdat,数据文件目录 xcod:股票、指数代码 finx:股票、指数代码文件 xtyp (str):k线数据模式,默认为D,日线 D=日 W=周 M=月 ;5=5分钟 15=15分钟 ,30=30分钟 60=60分钟 fgIndex,指数下载模式;默认为 False,股票下载模式。
def down_min_all(rdat,finx,xtyp='5',fgIndex=False):
根据finx列表文件,下载所有股票、指数实时数据 【输入】 rdat,数据文件目录 finx:股票、指数代码文件 xtyp (str):k线数据模式,默认为D,日线 D=日 W=周 M=月 ;5=5分钟 15=15分钟 ,30=30分钟 60=60分钟 fgIndex,指数下载模式;默认为 False,股票下载模式。
ztools_draw
Top极宽量化软件,matplotlib绘图模块
ztools_sta
Top极宽量化·回溯策略模块
ztools_str
Top极宽字符串常用工具函数集
ztools_tq
Top极宽量化·常用量化工具函数集
ztools_tst
Top极宽常用工具函数集
ztools_web
Top极宽web网络与htm网页常用工具函数集
ztools
Top极宽常用工具函数集
topq_ddown2019
Top极宽常用数据下载工具函数集,ddown=datadown
topquant2019
Top极宽量化·常用量化系统参数模块
浮动主题