View on GitHub

TA-Lib 中文文档

TA-Lib 中文文档:用于 TA-Lib 的 Python 封装(https://ta-lib.org/),每天定时更新。

下载 .zip 文件 下载 tar.gz 文件

抽象API快速入门

如果你已经熟悉函数API的使用方式,那么使用抽象API也会感觉非常相似。每个函数接收相同的输入,以Numpy数组的字典形式传递:

import numpy as np
# 注意:所有的ndarray必须长度相同!
inputs = {
    'open': np.random.random(100),
    'high': np.random.random(100),
    'low': np.random.random(100),
    'close': np.random.random(100),
    'volume': np.random.random(100)
}

函数可以直接导入,也可以通过名称实例化:

from talib import abstract
sma = abstract.SMA
sma = abstract.Function('sma')

自此,调用函数的方式与函数API基本一致:

from talib.abstract import *
output = SMA(inputs, timeperiod=25) # 默认在收盘价上计算
output = SMA(inputs, timeperiod=25, price='open') # 在开盘价上计算
upper, middle, lower = BBANDS(inputs, 20, 2, 2)
slowk, slowd = STOCH(inputs, 5, 3, 0, 3, 0) # 默认使用high, low, close
slowk, slowd = STOCH(inputs, 5, 3, 0, 3, 0, prices=['high', 'low', 'open'])

高级用法

对于TA-Lib更高级的用例,抽象API还提供了更多的灵活性。你甚至可以子类化 abstract.Function 并重写 set_input_arrays 方法,以自定义函数接受的输入数据类型(例如pandas的DataFrame)。

可以通过info属性访问每个函数的详细信息:

print Function('stoch').info
{
  'name': 'STOCH',
  'display_name': '随机指标',
  'group': '动量指标',
  'input_names': OrderedDict([
    ('prices', ['high', 'low', 'close']),
  ]),
  'parameters': OrderedDict([
    ('fastk_period', 5),
    ('slowk_period', 3),
    ('slowk_matype', 0),
    ('slowd_period', 3),
    ('slowd_matype', 0),
  ]),
  'output_names': ['slowk', 'slowd'],
}

或者以人类可读的格式:

help(STOCH)
str(STOCH)

Function 的其他有用属性:

Function('x').function_flags
Function('x').input_names
Function('x').input_arrays
Function('x').parameters
Function('x').lookback
Function('x').output_names
Function('x').output_flags
Function('x').outputs

除了直接调用函数之外,函数还保持状态,并会在设置后记住它们的参数/输入数组。你可以使用run()设置参数并使用新的输入数据重新计算:

SMA.parameters = {'timeperiod': 15}
result1 = SMA.run(input_arrays1)
result2 = SMA.run(input_arrays2)

# 或者设置input_arrays并更改参数:
SMA.input_arrays = input_arrays1
ma10 = SMA(timeperiod=10)
ma20 = SMA(20)

更多详细信息,请查看 代码

文档索引