财务技术分析指标库。用于https://github.com/tulipcharts/tulipindicators的python绑定
tulip的Python项目详细描述
郁金香
用于Tulip Indicators
的python绑定tulipy需要numpy,因为所有的输入和输出都是numpy数组(dtype=np.float64
)。
安装
您可以通过pip install tulipy
安装。
如果您的系统没有可用的控制盘,则需要pip install Cython numpy
从源发行版构建。
当在Windows上从源建立时,您需要安装微软VisualC++构建工具。
用法
importnumpyasnpimporttulipyasti
ti.TI_VERSION
'0.8.4'
DATA=np.array([81.59,81.06,82.87,83,83.61,83.15,82.84,83.99,84.55,84.36,85.53,86.54,86.89,87.77,87.29])
有关指示器的信息作为属性公开:
defprint_info(indicator):print("Type:",indicator.type)print("Full Name:",indicator.full_name)print("Inputs:",indicator.inputs)print("Options:",indicator.options)print("Outputs:",indicator.outputs)
print_info(ti.sqrt)
Type: simple
Full Name: Vector Square Root
Inputs: ['real']
Options: []
Outputs: ['sqrt']
直接返回单个输出。返回多个输出使用的指标
按outputs
属性指示的顺序排列的元组。
ti.sqrt(DATA)
array([ 9.03271831, 9.00333272, 9.10329611, 9.11043358, 9.14385039,
9.11866218, 9.1016482 , 9.16460583, 9.19510739, 9.18477 ,
9.24824308, 9.30268778, 9.32148057, 9.36856446, 9.34291175])
print_info(ti.sma)
Type: overlay
Full Name: Simple Moving Average
Inputs: ['real']
Options: ['period']
Outputs: ['sma']
ti.sma(DATA,period=5)
array([ 82.426, 82.738, 83.094, 83.318, 83.628, 83.778, 84.254,
84.994, 85.574, 86.218, 86.804])
无效选项将引发InvalidOptionError
:
try:ti.sma(DATA,period=-5)exceptti.InvalidOptionError:print("Invalid Option!")
Invalid Option!
print_info(ti.bbands)
Type: overlay
Full Name: Bollinger Bands
Inputs: ['real']
Options: ['period', 'stddev']
Outputs: ['bbands_lower', 'bbands_middle', 'bbands_upper']
ti.bbands(DATA,period=5,stddev=2)
(array([ 80.53004219, 80.98714192, 82.53334324, 82.47198345,
82.41775044, 82.43520292, 82.51133078, 83.14261781,
83.53648779, 83.8703237 , 85.28887096]),
array([ 82.426, 82.738, 83.094, 83.318, 83.628, 83.778, 84.254,
84.994, 85.574, 86.218, 86.804]),
array([ 84.32195781, 84.48885808, 83.65465676, 84.16401655,
84.83824956, 85.12079708, 85.99666922, 86.84538219,
87.61151221, 88.5656763 , 88.31912904]))
如果提供了不同大小的输入,则它们将右对齐并从左侧修剪:
DATA2=np.array([83.15,82.84,83.99,84.55,84.36])
# 'high' trimmed to DATA[-5:] == array([ 85.53, 86.54, 86.89, 87.77, 87.29])ti.aroonosc(high=DATA,low=DATA2,period=2)
array([ 50., 100., 50.])