TAlibチートシート（作成途中）（最終更新：2021/02/04）

#はじめに
TAlibについて、国内での記事もそこそこありますが、完全にOut of Dateなものも結構出てきます。
さらに言えば、古い情報も新しい情報も、バージョン情報とか書いてないものが多いです。
そのため、個人的にいったんまとめてみることにしました。

テクニカル分析などは自分で関数作ってもいいのですが、巨人の肩に立つのが一番の近道かなと。
ただ、このパッケージ自体のDocumentationは~~クソ~~ちゃんとまとまってないので、参照しづらいです。

現在の環境は、Windows10 64bit、Python 3.8、TAlib 0.4.19です。
（Python 3.9はnumpyが投稿日現在使用できないので使用していません）

#TAlibとは
[Documentation](https://mrjbq7.github.io/ta-lib/doc_index.html)
Technical Analysis Libraryの略で、その名の通りテクニカル分析ができるパッケージです。
これ自体はC/C++用の[TA-lib](https://ta-lib.org/)のラッパーです。
~~元のDocumentationもクソ。~~

やりとりできるデータ型はnumpyのarrayです。
(python3.9でも使えるならlistでもいいのでは…？)
各関数はオプション引数を持っていますが、**Documentationにも大した内容が書いていないので自力で調べる必要があります**。

今のところ使用できた関数は以下の通りです（追記予定）。

| 関数名 | 実行内容 |
|:--|:--|
|abstract.SMA|単純移動平均を計算|
|abstract.BBANDS|ボリンジャーバンドの基準線および上下線|

#インストール
ここではあらかじめビルドされたパッケージを使用しています（[参考元](http://kuttsun.blogspot.com/2020/01/python-ta-lib.html)）。

[ダウンロード元](https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib)より、自分の環境に合ったファイルをダウンロードします。
バージョンの読み方は次の通りです。
TA_Lib‑0.4.19‑cp39‑cp39‑win32.whl
→TAlib 0.4.19、python3.9、windows 32bit用
TA_Lib‑0.4.19‑cp38‑cp38‑win_amd64.whl
→TAlib 0.4.19、python3.8、windows 64bit用

その後、Promptにてダウンロード先のフォルダに移動し、インストールします。

```
pip install TA_Lib‑0.4.19‑cp38‑cp38‑win_amd64.whl
```
condaではインストール不可なのであしからず。
依存しているパッケージはないみたいです~~（だってDocumentationにそう書いてあるんだもん）~~。

#基本の使い方
```python
from talib import abstract

sma = abstract.SMA(hoge, huga)
```
`import talib`で書いてる記事が多いですが、現在はモジュール化してあるのでinportできません。
使用できる関数の一覧は`import talib; talib.get_functions()`で取得できます。
が、モジュールが不明なので手さぐりで探すことになります。

#各指標紹介
ここでは次のようなPandas.Dataframe型の変数`historical_data`（極洋 1301.Tの株価）から各指標を計算する方法を説明します。
記載されている方法だとnumpy.array型で指標を取得できます。

```:historical_data
              Open    High     Low   Close  Volume Currency
Date
1991-01-04  7780.0  8000.0  7770.0  7990.0   10000      JPY
1991-01-07  7990.0  8000.0  7750.0  7800.0    8000      JPY
1991-01-08  7700.0  7700.0  7400.0  7450.0   14200      JPY
1991-01-09  7350.0  7750.0  7350.0  7750.0    9500      JPY
1991-01-10  7450.0  7750.0  7450.0  7750.0   14300      JPY
...            ...     ...     ...     ...     ...      ...
2021-01-28  3035.0  3080.0  3030.0  3080.0   39100      JPY
2021-01-29  3080.0  3080.0  3020.0  3030.0   21300      JPY
2021-02-01  3025.0  3030.0  3005.0  3020.0   17400      JPY
2021-02-02  3020.0  3040.0  3010.0  3025.0   15900      JPY
2021-02-03  3030.0  3070.0  3030.0  3055.0   13600      JPY
```

####SMA 単純移動平均
```python:SMA
from talib import abstract
import numpy as np

data = np.array(historical_data['Close']

#timeperiod：単純移動平均をとる期間（ここでは20日）
sma = abstract.SMA(data, timeperiod=20)
```

####BBANDS ボリンジャーバンド
```python:BBANDS
from talib import abstract
import numpy as np

data = np.array(historical_data['Close']

#upper_band, middle_band, lower_band：アッパーバンド、基準線、ロワーバンド
#timeperiod：移動平均をとる期間（ここでは20日）
#nbdevup, nbdevdn：σのn倍をアッパーバンド、ロワーバンドとするかのn
#                  nbdevupがアッパーバンド、nbdevdnがロワーバンド
upper_band, middle_band, lower_band = abstract.BBANDS(row_data, timeperiod=20, nbdevup=float(2), nbdevdn=float(2))
```

#Q&A
####インストールできないんだけど
ダウンロードファイルをきちんと確認してください。
私が一回やらかしたときは、

```
pip install TA_Lib‑0.4.19‑cp39‑cp39‑win_amd64.whl
```
を実行して、3.9用のwhlは対応してないよ！って言われました。