talipp - 增量技术分析库
项目描述
talipp - 增量技术分析库
!!! 新文档页面可用 !!!
talipp
(或 tali++
) 是一个Python库,用于实现技术分析中的金融指标。该库的独特之处在于其增量计算,非常适合实时应用或一般具有迭代输入的应用。
与现有的技术分析库不同,这些库通常必须处理整个输入向量才能计算指标的新值,而talipp
由于其增量架构,仅基于增量输入数据计算新指标值。这意味着,与其他库所需的O(n)
相比,它需要O(1)
时间来产生新值。
支持的增量操作包括
- 向输入追加新值
- 更新最后一个输入值
- 删除任意数量的输入值
除了已经提到的delta输入操作的优越时间复杂度之外,talipp
的增量方法立即提供了其他有趣的功能,例如指标链或由其他指标组合而成的新指标。请参阅示例部分以获取灵感。
《talipp》的增量特性使其在频繁进行CUD
操作的领域表现卓越,但它也可以像任何其他现有库一样用于图表制作、回测等。
最后但同样重要的是,《talipp》是一个社区项目,因此欢迎任何改善它的建议。我们鼓励您提出提案。
最近版本的新特性
- Rogers-Satchell波动性指标
- 自动采样输入值
- v2.0.0 范围
要查看变更历史,请参阅变更日志。
增量指标列表
《talipp》目前提供以下指标集。如果您喜欢的指标缺失,请通过GitHub Issues创建工单,它有很大可能被包含在未来的版本中。
- 累积/分布(ADL)
- Aroon
- 平均方向指数(ADX)
- 平均真实范围(ATR)
- 神奇振荡器(AO)
- 力量平衡(BOP)
- 布林带(BB)
- 查金振荡器
- 尚德Kroll停损
- 震荡指数(CHOP)
- 科波克曲线
- 商品通道指数(CCI)
- 唐奇安通道(DC)
- 去趋势价格振荡器(DPO)
- 移动平均(ALMA、DEMA、EMA、HMA、KAMA、SMA、SMMA、T3、TEMA、VWMA、WMA、ZLEMA)
- 力量指数
- IBS
- Ichimoku云图
- 凯尔特纳通道(KC)
- 克林格勒成交量振荡器(KVO)
- 稳赢指标(KST)
- 质量指数
- 麦金利动态
- 平均偏差
- 移动平均(ALMA、DEMA、EMA、HMA、KAMA、SMA、SMMA、T3、TEMA、VWMA、WMA、ZLEMA)
- 移动平均收敛发散(MACD)
- 平衡量(OBV),平滑平衡量(SOBV)
- 抛物线SAR
- 支撑/阻力点
- 变化率(ROC)
- 相对强度指数(RSI)
- 沙夫趋势周期(STC)
- SFX TOR
- 标准差
- 随机振荡器
- 随机RSI
- 超级趋势
- TRIX
- TTM 挤压
- 真实力量指数(TSI)
- 终极振荡器(UO)
- 涡流指标(VTX)
- 成交量加权平均价格(VWAP)
- ZigZag
安装
pip install talipp
如果您想从仓库安装最新版本,请使用以下命令
pip install git+https://github.com/nardew/talipp.git@main
示例
请参阅examples
文件夹以了解库中包含的每个指标的使用方法。要了解API的基本外观和感觉,请参阅以下内容。
from talipp.indicator_util import composite_to_lists
from talipp.indicators import EMA, SMA, Stoch
from talipp.ohlcv import OHLCVFactory
# EMA indicator ([float] -> [float])
ema = EMA(period = 3, input_values = [1, 3, 5, 7, 9, 2, 4, 6, 8, 10])
# treat indicators as any other list
print(f'EMA(3): {ema}') # [3.0, 5.0, 7.0, 4.5, 4.25, 5.125, 6.5625, 8.28125]
print(f'Last EMA value: {ema[-1]}') # 8.28125
# append a new input value incrementally
ema.add(11)
print(f'EMA after adding a new value: {ema}') # [3.0, 5.0, 7.0, 4.5, 4.25, 5.125, 6.5625, 8.28125, 9.640625]
# change the last added value
ema.update(15)
print(f'EMA after updating the last value: {ema}') # [3.0, 5.0, 7.0, 4.5, 4.25, 5.125, 6.5625, 8.28125, 11.640625]
# change the last added value again
ema.update(18)
print(f'EMA after updating the last value: {ema}') # [3.0, 5.0, 7.0, 4.5, 4.25, 5.125, 6.5625, 8.28125, 13.140625]
# remove the last added value
ema.remove()
print(f'EMA after removing the last value: {ema}') # [3.0, 5.0, 7.0, 4.5, 4.25, 5.125, 6.5625, 8.28125]
# purge the oldest input value
ema.purge_oldest(1)
print(f'EMA after purging the oldest value: {ema}') # [5.0, 7.0, 4.5, 4.25, 5.125, 6.5625, 8.28125]
# STOCH indicator ([OHLCV] -> [composite])
stoch = Stoch(5, 3, OHLCVFactory.from_dict({
'high': [5, 10, 15, 20, 25, 30, 35],
'low': [1, 4, 7, 10, 13, 16, 19],
'close': [3, 9, 8, 19, 18, 17, 19]
}))
# print result as a list of composite values for 'k' and 'd' output parameters
print(f'Stoch(5, 3) composite result: {stoch}') # [StochVal(k=70.83333333333333, d=None), StochVal(k=50.0, d=None), StochVal(k=42.857142857142854, d=54.563492063492056)]
# print result as lists per output parameters
print(f'Stoch(5, 3) decomposed result: {composite_to_lists(stoch)}') # {'k': [70.83333333333333, 50.0, 42.857142857142854], 'd': [None, None, 54.563492063492056]}
# Indicator chaining
sma1 = SMA(3)
sma2 = SMA(3, input_indicator = sma1)
sma3 = SMA(3, input_indicator = sma2)
print(f"Chain three moving averages:")
sma1.add([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(f"SMA1: {sma1}") # [0, 0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]
print(f"SMA2: {sma2}") # [0, 0, 0, 0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]
print(f"SMA3: {sma3}") # [0, 0, 0, 0, 0, 0, 4.0, 5.0, 6.0, 7.0]
print(f"Purge oldest 3 values:")
sma1.purge_oldest(3)
print(f"SMA1: {sma1}") # [5.0, 6.0, 7.0, 8.0, 9.0]
print(f"SMA2: {sma2}") # [6.0, 7.0, 8.0]
print(f"SMA3: {sma3}") # [7.0]
性能
为了说明《talipp》的性能缩放,我们与行业标准库talib
及其Python包装ta-lib一起进行了几项测试。比较的结果如下
- 对于批量处理(即一次性计算指标,不添加进一步delta值),
talib
是明显赢家。这并不令人惊讶,因为它是用C实现的,并且针对一次性向量计算进行了优化。《talipp》的增量(即非向量)计算以及指标链(内部实现输出监听器)等功能不可避免地会有代价。但是,talipp
对50k个值的SMA进行增量计算仍需约200ms,这对于许多应用来说完全是可以接受的 - 在增量计算方面,《talipp》明显领先。这一点是预料之中的,因为《talipp》的CUD操作的时间复杂度为
O(1)
,而talib
的时间复杂度为O(n)
。对于50k个输入,差异达到约200ms对约6800ms。 - 从图表中可以看出,当涉及到增量操作时,与
talib
的二次曲线相比,talipp
与输入大小呈线性关系。这源于《talipp》的delta操作时间复杂度为O(1)
,而talib
的时间复杂度为O(n)
。
联系
- 要报告问题、错误、更正或提出新功能,请首选使用GitHub问题。
- 对于需要更个性化方法的主题,请随时发送电子邮件至
。请注意,一般问题将通过此渠道不予回答。
支持
如果您喜欢这个库,并且想支持其进一步的开发、增强和错误修复,那么如果您
- 提交错误、建议、拉取请求等,将非常有帮助,也备受赞赏
- 传播信息
- 捐赠任意小费
BTC
:3GJPT6H6WeuTWR2KwDSEN5qyJq95LEErzf
ETH
:0xC7d8673Ee1B01f6F10e40aA416a1b0A746eaBe68
Binance Smart Chain tokens
:0xe37FaB52ed4c1C9a3d80896f2001Cb3284a1b619
XMR
:87vdCaWFN2YJEk3HKVJNaPBFsuwZTJocRfpGJ747dPQrFcrs6SQTmA3XDGyWUPoALuNnXezEbJXkbY8Y4VSxG4ReEFqxy5m
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
talipp-2.4.0.tar.gz (42.9 kB 查看哈希)
构建分布
talipp-2.4.0-py3-none-any.whl (62.1 kB 查看哈希)
关闭
talipp-2.4.0.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4a9a1c1d94e4ad75ecc50635c8d3b1546ca8d3bbf8c8ca5eb3608fd5fa8376eb |
|
MD5 | fd8fdf8b45648f6f6971f29c3cfc09e6 |
|
BLAKE2b-256 | fcbbf04bcc88ef9ef5f27ff77aaf49fd41bc12874a98656bd9f789990d193be8 |
关闭
talipp-2.4.0-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9d7a931b0cae5436be32bbc9259b1b5355b3c6a07894acd91ece9607031c50d9 |
|
MD5 | e50fa59e0fa3a04698ac30debb3aec6a |
|
BLAKE2b-256 | 65404b7f03c06de90b1b5ac6f95c6e125feef2f9f0e70b378f645d9de5abc248 |