GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

mrjbq7

ta-lib – TA-Lib用のPythonラッパー( )

投稿日:

TA-Lib用のPythonラッパー( http://ta-lib.org/ )。 http://mrjbq7.github.io/ta-lib

TA-Lib

これは、SWIGの代わりにCythonに基づくTA-LIB用のPythonラッパーです。 ホームページから:

TA-Libは、金融市場データの技術分析を必要とするトレーディングソフトウェア開発者によって広く使用されています。

  • ADX、MACD、RSI、Stochastic、Bollinger Bandなどの150以上のインジケータが含まれています。
  • 燭台パターン認識
  • C / C ++、Java、Perl、Python、100%Managed .NET用のオープンソースAPI

TA-Libに含まれているオリジナルのPythonバインディングは、残念なことにインストールが難しく、可能な限り効率的ではありません。 したがって、このプロジェクトでは、CythonとNumpyを使用して、TA-Libに効率的かつクリーンにバインドし、SWIGインターフェイスより2〜4倍の速い結果を得ています。

インストール

PyPIからインストールできます:

$ pip install TA-Lib

あるいは、ソースをチェックアウトし、自分でsetup.pyを実行してください:

$ python setup.py install

トラブルシューティング

時には、インストール時に次のようなビルドエラーが発生します。

func.c:256:28: fatal error: ta-lib/ta_libc.h: No such file or directory
compilation terminated.

または:

common.obj : error LNK2001: unresolved external symbol TA_SetUnstablePeriod
common.obj : error LNK2001: unresolved external symbol TA_Shutdown
common.obj : error LNK2001: unresolved external symbol TA_Initialize
common.obj : error LNK2001: unresolved external symbol TA_GetUnstablePeriod
common.obj : error LNK2001: unresolved external symbol TA_GetVersionString

これは、通常、インストールが必要なTA-Libライブラリを見つけることができないことを意味します。 Windowsでは、これは、基礎となるTA-Libライブラリの32ビットバイナリディストリビューションをインストールし、64ビットのPythonで使用しようとした場合に発生する可能性があります。

時にはインストールが失敗し、次のようなエラーが発生します。

talib/common.c:8:22: fatal error: pyconfig.h: No such file or directory
 #include "pyconfig.h"
                      ^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

これは通常、Pythonヘッダーが必要であることを意味し、次のように実行する必要があります。

$ sudo apt-get install python3-dev

時には基礎となるTA-Libライブラリを構築する際にmakeが次のようなエラーをmakeことがあります:

../libtool: line 1717: cd: .libs/libta_lib.lax/libta_abstract.a: No such file or directory
make[2]: *** [libta_lib.la] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1

これは、基礎となるTA-Libライブラリへのディレクトリパスにディレクトリ名にスペースが含まれている可能性があります。 スペースを入れずにもう一度試してみてください。

依存関係

PythonにTA-Libを使用するには、 TA-Libを既にインストールしておく必要があります。 あなたのプラットフォームのインストール手順に従っているはずですが、参考になるようにいくつかの提案が以下に含まれています。

Mac OS X
$ brew install ta-lib
Windows

ta-lib-0.4.0-msvc.zipをダウンロードし、 C:\ta-lib解凍しC:\ta-lib

これは32ビット版です。 64ビットPythonを使用する場合は、64ビット版のライブラリをビルドする必要があります。

64ビット版のWindows 10でビルドするための非公式な(およびサポートされていない)指示は、参考のためにここにあります。

  1. ta-lib-0.4.0-msvc.zipダウンロードと解凍
  1. 解凍したフォルダta-libC:\移動しますC:\
  1. Visual Studio Community 2015をダウンロードしてインストールする
  • [Visual C++]機能を選択することを忘れないでください
  1. TA-Libライブラリを構築する
  • Windowsの[スタート]メニューから、 [VS2015 x64 Native Tools Command Prompt]
  • C:\ta-lib\c\make\cdr\win32\msvc
  • ライブラリnmake構築する

32ビットと64ビットの両方の非公式のWindowsバイナリを試すこともできます:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib

Linux

ta-lib-0.4.0-src.tar.gzをダウンロードして:

$ untar and cd
$ ./configure --prefix=/usr
$ make
$ sudo make install

make -jXを使っmake -jX TA-Libをビルドすると失敗しますが、 make -jXありません! 単にmake -jX実行しmake -jXから[sudo] make install実行make -jXだけです。

関数API

関数APIは、TA-Libと同様に、公開されたTA-Libインジケータの軽量ラッパーを提供します。

各関数は出力配列を返し、キーワード引数として指定されていない限り、パラメータのデフォルト値を持ちます。 通常、これらの関数は初期のルックバック期間(出力が生成されるまでに必要な観測数)をNaN設定します。

便宜上、Function APIはnumpy.ndarraypandas.Series両方の入力をサポートしています。

次のすべての例では、関数APIを使用しています。

import numpy
import talib

close = numpy.random.random(100)

近い価格の単純な移動平均を計算する:

output = talib.SMA(close)

トリプル指数移動平均を用いたボーリンジャーバンドの計算:

from talib import MA_Type

upper, middle, lower = talib.BBANDS(close, matype=MA_Type.T3)

近い価格の勢いを計算し、期間は5:

output = talib.MOM(close, timeperiod=5)

抽象API

関数APIの使用に慣れている場合は、抽象APIを使用して自宅で感じるはずです。

すべての関数は、 numpy.ndarrayまたはpandas.Series dict 、またはpandas.Seriesの名前付き入力のコレクションをpandas.DataFrameます。 pandas.DataFrameが提供されている場合、出力は名前付き出力列を持つpandas.DataFrameとして返されます。

例えば、典型的な「OHLCV」データに対して入力を提供することができる。

import numpy as np

# note that all ndarrays must be the same length!
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

# directly
sma = abstract.SMA

# or by name
sma = abstract.Function('sma')

そこから、呼び出し関数は基本的に関数APIと同じです:

from talib.abstract import *

# uses close prices (default)
output = SMA(inputs, timeperiod=25)

# uses open prices
output = SMA(inputs, timeperiod=25, price='open')

# uses close prices (default)
upper, middle, lower = BBANDS(inputs, 20, 2, 2)

# uses high, low, close (default)
slowk, slowd = STOCH(inputs, 5, 3, 0, 3, 0) # uses high, low, close by default

# uses high, low, open instead
slowk, slowd = STOCH(inputs, 5, 3, 0, 3, 0, prices=['high', 'low', 'open'])

サポートされているインジケータと関数

TA-LibでサポートされているすべてのTA機能を、 listまたはグループ別に並べ替えて表示することができます(例:「重複調査」、「モーメンタム指標」など)。

import talib

# list of functions
print talib.get_functions()

# dict of functions by group
print talib.get_function_groups()

インジケータグループ

  • 重複研究
  • モメンタム指標
  • ボリュームインジケータ
  • ボラティリティ指標
  • 価格変換
  • サイクルインジケータ
  • パターン認識
重複研究
BBANDS               Bollinger Bands
DEMA                 Double Exponential Moving Average
EMA                  Exponential Moving Average
HT_TRENDLINE         Hilbert Transform - Instantaneous Trendline
KAMA                 Kaufman Adaptive Moving Average
MA                   Moving average
MAMA                 MESA Adaptive Moving Average
MAVP                 Moving average with variable period
MIDPOINT             MidPoint over period
MIDPRICE             Midpoint Price over period
SAR                  Parabolic SAR
SAREXT               Parabolic SAR - Extended
SMA                  Simple Moving Average
T3                   Triple Exponential Moving Average (T3)
TEMA                 Triple Exponential Moving Average
TRIMA                Triangular Moving Average
WMA                  Weighted Moving Average
モメンタム指標
ADX                  Average Directional Movement Index
ADXR                 Average Directional Movement Index Rating
APO                  Absolute Price Oscillator
AROON                Aroon
AROONOSC             Aroon Oscillator
BOP                  Balance Of Power
CCI                  Commodity Channel Index
CMO                  Chande Momentum Oscillator
DX                   Directional Movement Index
MACD                 Moving Average Convergence/Divergence
MACDEXT              MACD with controllable MA type
MACDFIX              Moving Average Convergence/Divergence Fix 12/26
MFI                  Money Flow Index
MINUS_DI             Minus Directional Indicator
MINUS_DM             Minus Directional Movement
MOM                  Momentum
PLUS_DI              Plus Directional Indicator
PLUS_DM              Plus Directional Movement
PPO                  Percentage Price Oscillator
ROC                  Rate of change : ((price/prevPrice)-1)*100
ROCP                 Rate of change Percentage: (price-prevPrice)/prevPrice
ROCR                 Rate of change ratio: (price/prevPrice)
ROCR100              Rate of change ratio 100 scale: (price/prevPrice)*100
RSI                  Relative Strength Index
STOCH                Stochastic
STOCHF               Stochastic Fast
STOCHRSI             Stochastic Relative Strength Index
TRIX                 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
ULTOSC               Ultimate Oscillator
WILLR                Williams' %R
ボリュームインジケータ
AD                   Chaikin A/D Line
ADOSC                Chaikin A/D Oscillator
OBV                  On Balance Volume
サイクルインジケータ
HT_DCPERIOD          Hilbert Transform - Dominant Cycle Period
HT_DCPHASE           Hilbert Transform - Dominant Cycle Phase
HT_PHASOR            Hilbert Transform - Phasor Components
HT_SINE              Hilbert Transform - SineWave
HT_TRENDMODE         Hilbert Transform - Trend vs Cycle Mode
価格変換
AVGPRICE             Average Price
MEDPRICE             Median Price
TYPPRICE             Typical Price
WCLPRICE             Weighted Close Price
ボラティリティ指標
ATR                  Average True Range
NATR                 Normalized Average True Range
TRANGE               True Range
パターン認識
CDL2CROWS            Two Crows
CDL3BLACKCROWS       Three Black Crows
CDL3INSIDE           Three Inside Up/Down
CDL3LINESTRIKE       Three-Line Strike
CDL3OUTSIDE          Three Outside Up/Down
CDL3STARSINSOUTH     Three Stars In The South
CDL3WHITESOLDIERS    Three Advancing White Soldiers
CDLABANDONEDBABY     Abandoned Baby
CDLADVANCEBLOCK      Advance Block
CDLBELTHOLD          Belt-hold
CDLBREAKAWAY         Breakaway
CDLCLOSINGMARUBOZU   Closing Marubozu
CDLCONCEALBABYSWALL  Concealing Baby Swallow
CDLCOUNTERATTACK     Counterattack
CDLDARKCLOUDCOVER    Dark Cloud Cover
CDLDOJI              Doji
CDLDOJISTAR          Doji Star
CDLDRAGONFLYDOJI     Dragonfly Doji
CDLENGULFING         Engulfing Pattern
CDLEVENINGDOJISTAR   Evening Doji Star
CDLEVENINGSTAR       Evening Star
CDLGAPSIDESIDEWHITE  Up/Down-gap side-by-side white lines
CDLGRAVESTONEDOJI    Gravestone Doji
CDLHAMMER            Hammer
CDLHANGINGMAN        Hanging Man
CDLHARAMI            Harami Pattern
CDLHARAMICROSS       Harami Cross Pattern
CDLHIGHWAVE          High-Wave Candle
CDLHIKKAKE           Hikkake Pattern
CDLHIKKAKEMOD        Modified Hikkake Pattern
CDLHOMINGPIGEON      Homing Pigeon
CDLIDENTICAL3CROWS   Identical Three Crows
CDLINNECK            In-Neck Pattern
CDLINVERTEDHAMMER    Inverted Hammer
CDLKICKING           Kicking
CDLKICKINGBYLENGTH   Kicking - bull/bear determined by the longer marubozu
CDLLADDERBOTTOM      Ladder Bottom
CDLLONGLEGGEDDOJI    Long Legged Doji
CDLLONGLINE          Long Line Candle
CDLMARUBOZU          Marubozu
CDLMATCHINGLOW       Matching Low
CDLMATHOLD           Mat Hold
CDLMORNINGDOJISTAR   Morning Doji Star
CDLMORNINGSTAR       Morning Star
CDLONNECK            On-Neck Pattern
CDLPIERCING          Piercing Pattern
CDLRICKSHAWMAN       Rickshaw Man
CDLRISEFALL3METHODS  Rising/Falling Three Methods
CDLSEPARATINGLINES   Separating Lines
CDLSHOOTINGSTAR      Shooting Star
CDLSHORTLINE         Short Line Candle
CDLSPINNINGTOP       Spinning Top
CDLSTALLEDPATTERN    Stalled Pattern
CDLSTICKSANDWICH     Stick Sandwich
CDLTAKURI            Takuri (Dragonfly Doji with very long lower shadow)
CDLTASUKIGAP         Tasuki Gap
CDLTHRUSTING         Thrusting Pattern
CDLTRISTAR           Tristar Pattern
CDLUNIQUE3RIVER      Unique 3 River
CDLUPSIDEGAP2CROWS   Upside Gap Two Crows
CDLXSIDEGAP3METHODS  Upside/Downside Gap Three Methods







-mrjbq7
-, , , , ,

執筆者: