本文实现了对 TA-Lib 技术分析库的 Python 封装库 ta-lib 的进一步封装和扩展。此次共计封装 73 个指标,其中 35 个是对原有 ta-lib 实现的封装,剩余的 38 个则作为扩展,实现了部分 TradingView 支持的技术指标。本文主要列举扩展部分的一些指标的 Python 实现,并在文末列出此次封装的完成和拟合程度的统计信息。

正如在「Pandas 库部分核心技术在技术分析中的应用」一文中提到的算法和数据结构在时间序列数据处理上性能差异,这里大部分的实现都使用了向量化运算,部分甚至直接使用了 NumPy 的数组结构。但是需要注意的是,此次的实现,并没有过多关注性能上的优化,大部分的向量化运算仍然是基于 Pandas 的 SeriesDataFrame 结构。另一方面,封装库 ta-lib 本身也还有很大的性能提升空间。以真是波动幅度 TRange 指标为例,测试发现直接基于 NumPy 的实现要比调用 ta-lib 的封装实现性能高出 2 倍多。技术分析库的性能优化也将作为后续工作的主要内容之一。

除了标量参数外,如无特殊说明,传入接口的数据均为 Pandas 的 Series 数据类型。后续会像 ta-lib 一样同时支持 Seriesndarray 数据类型。

import numpy as np
import pandas as pd
import talib as ta

测试环境:macOS 10.13.3;Python 3.6.5;Pandas 0.23.0;NumPy 1.14.2;TA-Lib 0.4.17。

阅读全文

TA-Lib 技术分析库高效地实现了 150 多种常用的技术指标,如 ADX、MACD 和 RSI 等,甚至还包括 K 线模式识别。基于其开源 API,在 Python 环境下,ta-lib 库对其进行了基于 Cython 的封装。

这里以大写的 TA 指代原生的开源技术分析库,小写的 ta 指代 Python 的封装实现。

本文将探究 Python 的 Pandas 数据分析库中的几个核心技术,以及它们在技术分析中的应用,其中也必然涉及到 NumPy 数值计算库。这里主要讨论以下几个方面:1)向量化运算(vectorization);2)(指数加权)滚动窗口;3)UFuncs 等。利用 Pandas 库,我们可以简单高效地实现一些没有出现在 TA-Lib 技术分析库中的指标,来进一步扩充 ta-lib 库。文章最后讨论了本地的数据结果和交易所端给出的指标数据存在偏差的原因。

import numpy as np
import pandas as pd
import talib as ta

测试环境:macOS 10.13.3;Python 3.6.5;Pandas 0.22.0;NumPy 1.14.2;TA-Lib 0.4.17。

阅读全文

沪ICP备17018959号-3