Pythonのライブラリpytiはチャート分析に必要なインジケーターを作成することができます。
そのpytiに用意されているインジゲーターはメジャーなものからマイナーなものまで数多くありますが徹底解明します。
- はじめに
- pytiのインジケーターの一覧
- 各種インジケータ(モジュール)の使い方
- A/D(蓄積/配信)Accumulation/Distribution
- アルーン(Aroon)
- ATR(Average True Range
- ATRP(Average True Range Percent
- ボリンジャーバンド(Bollinger Bands)
- CMF(チャイキン・マネーフロー)Chaikin Money Flow
- CMO(シャンデ・モメンタム・オシレーター)Chande Momentum Oscillator
- CCI(商品チャンネル指数)Commodity Channel Index
- DPO(トレンド除去プライスオシレーター)Detrended Price Oscillator
- DMI(Directional Movement Index
- DEMA(2重指数移動平均)Double Exponential Moving Average
- DSS(2重平滑化確率)Double Smoothed Stochastic
- EMA(指数平滑移動平均線)Exponential Moving Average
- HMA(ハル移動平均線)Hull Moving Average
- 一目均衡表(Ichimoku Cloud)
- ケルトナーバンド(Keltner Bands)
- LWMA(線形加重移動平均)Linear Weighted Moving Average
- Momentum(モメンタム)
- MF(マネー・フロー)Money Flow
- MFI(マネー・フロー・インデックス)Money Flow Index
- MACD(マックディー)Moving Average Convergence Divergence
- MAE(エンベロープ)Moving Average Envelope
- OBV(オン・バランス・ボリューム)On Balance Volume
- プライスチャネル(Price Channels)
- PPO(プライスオシレーター)Price Oscillator
- ROC(変化率)Rate of Change
- RSI(相対力指数)Relative Strength Index
- SMA(単純移動平均)Simple Moving Average
- SMMA(平滑移動平均)Smoothed Moving Average
- SD(標準偏差)Standard Deviation
- SV(分散)Standard Variance
- ストキャスティクス(Stochastic)
- ストキャスティクス RSI(StochRSI)
- TMA(三角移動平均)Triangular Moving Average
- TEMA(3重指数移動平均)Triple Exponential Moving Average
- TR(トゥルー レンジ)True Range
- TP(Typical Price)
- UO(アルティメット・オシレーター)Ultimate Oscillator
- VHF(Vertical Horizontal Filter)
- ボラティリティー(Volatility)
- VAMA(出来高調整済み移動平均線)Volume Adjusted Moving Average
- VI(ボリューム・インデックス)Volume Index
- ボリューム・オシレーター(Volume Oscillator)
- WMA(加重移動平均線)Weighted Moving Average
- ウィリアムズ%R(Williams %R)
はじめに
pytiは標準ライブラリではありませんので、インストールが必要です。
pip install pyti
公式サイト
pytiのインジケーターの一覧
バージョン:pyti 0.2.2
以下は、モジュールのアルファベット順になっています。
インジケーターの種類 | 略 | 日本語名 | 値の種類 | タイプ |
Accumulation/Distribution | A/D | ウィリアムズA/D(蓄積/配信) | オシレーター系 | |
Aroon | ー | アルーン | Aroon Up | オシレーター系 |
Aroon Down | ||||
Average True Range | ATR | ATR | オシレーター系 | |
Average True Range Percent | ATRP | ATRP | オシレーター系 | |
Bollinger Bands | ー | ボリンジャーバンド | Upper Bollinger Band | オシレーター系 |
Middle Bollinger Band | ||||
Lower Bollinger Band | ||||
Bandwidth | ||||
Percent Bandwidth | ||||
Range | ||||
%B | ||||
Chaikin Money Flow | CMF | チャイキン・マネーフロー | オシレーター系 | |
Chande Momentum Oscillator | CMO | シャンデ・モメンタム・オシレーター | オシレーター系 | |
Commodity Channel Index | CCI | 商品チャンネル指数 | オシレーター系 | |
Detrended Price Oscillator | DPO | トレンド除去プライスオシレーター | オシレーター系 | |
Directional Index | DMI | DMI | Negative Directional Index (-DI) | トレンド系 |
Positive Directional Index (+DI) | ||||
Negative Directional Movement (-DM) | ||||
Positive Directional Movement (+DM) | ||||
Average Directional Index(ADX) | ||||
Double Exponential Moving Average | DEMA | 2重指数移動平均 | トレンド系 | |
Double Smoothed Stochastic | DSS | 2重平滑化確率 | オシレーター系 | |
Exponential Moving Average | EMA | 指数平滑移動平均線 | トレンド系 | |
Hull Moving Average | HMA | ハル移動平均線 | トレンド系 | |
Ichimoku Cloud | ー | 一目均衡表 | TenkanSen | トレンド系 |
KijunSen | ||||
Chiku Span | ||||
Senkou A | ||||
Senkou B | ||||
Keltner Bands | ー | ケルトナーバンド | Bandwidth | オシレーター系 |
Center Band | ||||
Upper Band | ||||
Lower Band | ||||
Linear Weighted Moving Average | LWMA | 線形加重移動平均 | トレンド系 | |
Momentum | ー | モメンタム | オシレーター系 | |
Money Flow | MF | マネー・フロー | ||
Money Flow Index | MFI | マネー・フロー・インデックス | オシレーター系 | |
Moving Average Convergence Divergence | MACD | MACD(マックディー) | オシレーター系 | |
Moving Average Envelope | MAE | エンベロープ | Upper Band | トレンド系 |
Center Band | ||||
Lower Band | ||||
On Balance Volume | OBV | オン・バランス・ボリューム | トレンド系 | |
Price Channels | ー | プライスチャネル | Upper Price Channel | トレンド系? |
Lower Price Channel | ||||
Price Oscillator | PPO | プライスオシレーター | オシレーター系 | |
Rate of Change | ROC | 変化率 | オシレーター系 | |
Relative Strength Index | RSI | RSI(相対力指数) | オシレーター系 | |
Simple Moving Average | SMA | 単純移動平均 | トレンド系 | |
Smoothed Moving Average | SMMA | 平滑移動平均 | トレンド系 | |
Standard Deviation | SD | 標準偏差 | その他 | |
Standard Variance | SV | 分散 | その他 | |
Stochastic | ー | ストキャスティクス | %K | オシレーター系 |
%D | ||||
StochRSI | ー | ストキャスティクス RSI | オシレーター系 | |
Triangular Moving Average | TMA | 三角移動平均 | トレンド系 | |
Triple Exponential Moving Average | TEMA | 3重指数移動平均 | トレンド系 | |
True Range | TR | トゥルー レンジ | その他 | |
Typical Price | TP | その他 | ||
Ultimate Oscillator | UOS | アルティメット・オシレーター | オシレーター系 | |
Vertical Horizontal Filter | VHF | VHF | オシレーター系 | |
Volatility | ー | ボラティリティー | その他 | |
Volume Adjusted Moving Average | VAMA | 出来高調整済み移動平均線 | トレンド系 | |
Volume Index | PVI | ポジティブ・ボリューム・インデックス | Positive Volume Index | オシレーター系 |
NVI | ネガティブ・ボリューム・インデックス | Negative Volume Index | ||
Volume Oscillator | ー | ボリューム・オシレーター | オシレーター系 | |
Weighted Moving Average | WMA | 加重移動平均線 | トレンド系 | |
Williams %R | ー | ウィリアムズ%R | オシレーター系 |
各種インジケータ(モジュール)の使い方
A/D(蓄積/配信)Accumulation/Distribution
タイプ:オシレーター系
パラメーターの設定
ad(終値, 高値, 安値, 出来高, 期間)
- 終値, 高値, 安値, 出来高:リスト形式の値。期間以上のデータ数量がないとエラーにはなりませんが、ある程度のデータ数量がないとNanになります。
- 期間:期間を設定する。(通常に20日または21日)
以下のような「ゼロで割るエラー」が発生することがある。
ZeroDivisionError: float division by zero
計算式は以下のようになっており、(Ht – Lt) * Vtの箇所で高値と安値が一致するとこのようなエラーになる。
A/D = (Ct – Lt) – (Ht – Ct) / (Ht – Lt) * Vt + A/Dt-1
from pyti.accumulation_distribution import accumulation_distribution as ad df['ad'] = ad(df['Close'].values.tolist(), df['High'].values.tolist(), df['Low'].values.tolist(), df['Volume'].values.tolist())
アルーン(Aroon)
タイプ:オシレーター系
Aroon UpとAroon Downの差分のHistogramを合わせて表示することもある。
パラメーターの設定
aroon_up(データ, 期間)
aroon_down(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。(通常14日)
from pyti.aroon import aroon_up as aroon_up from pyti.aroon import aroon_down as aroon_down period = 14 df['aroon_up'] = aroon_up(df['Close'].values.tolist(), period) df['aroon_down'] = aroon_down(df['Close'].values.tolist(), period)
ATR(Average True Range
タイプ:オシレーター系
パラメーターの設定
atr(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.average_true_range import average_true_range as atr period = 14 df['atr'] = atr(df['Close'].values.tolist(), period)
補足
計算式:TRのN日の移動平均
しかしモジュールのソースを見るとTRの計算はTRモジュールから取得していますが、移動平均が複雑な計算をしています。
このATRはDMIなどの計算式にも利用されています。
ATRP(Average True Range Percent
タイプ:オシレーター系
パラメーターの設定
atrp(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.average_true_range_percent import average_true_range_percent as atrp period = 14 df['atrp'] = atrp(df['Close'].values.tolist(), period)
ボリンジャーバンド(Bollinger Bands)
タイプ:オシレーター系
本モジュールでは以下の7つの値を取得することができます。
σ(シグマ)の値の初期値は全て2.0です。-σの値は負数ではなく正数で指定します。
- Upper Bollinger Band:+σの値
bb_up(データ, 期間, σの値)
- Middle Bollinger Band:中心線の単純移動平均(SMA)
bb_mid(データ, 期間)
- Lower Bollinger Band:-σの値
bb_low(データ, 期間, σの値)
- Range:+σの値 – -σの値
bb_range(データ, 期間, σの値)
- Bandwidth:Range / 単純移動平均(SMA)
bandwidth(データ, 期間, σの値)
- Percent Bandwidth:データ – -σの値 / Range
percent_bandwidth(データ, 期間, σの値)
- %B:(データ – -σの値) / Range * 100
percent_b(データ, 期間, +σの値, -σの値)
パラメーターの設定
ここでは一般的に使われる3つのモジュールを解説します。
bb_up(データ, 期間, σの値)
:+σの値
bb_mid(データ, 期間)
:単純移動平均(SMA)
bb_low(データ, 期間, σの値)
:-σの値
- データ:リスト形式の値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
- σの値:通常1〜3の値を設定します。-σの値は負数ではなく正数で指定します。初期値は2.0です。
from pyti.bollinger_bands import upper_bollinger_band as bb_up from pyti.bollinger_bands import middle_bollinger_band as bb_mid from pyti.bollinger_bands import lower_bollinger_band as bb_low bb_period = 21 df['bb_up3'] = bb_up(df['Close'].values.tolist(),bb_period,3) df['bb_up2'] = bb_up(df['Close'].values.tolist(),bb_period,2) df['bb_up1'] = bb_up(df['Close'].values.tolist(),bb_period,1) df['bb_mid'] = bb_mid(df['Close'].values.tolist(),bb_period) df['bb_low1'] = bb_low(df['Close'].values.tolist(),bb_period,1) df['bb_low2'] = bb_low(df['Close'].values.tolist(),bb_period,2) df['bb_low3'] = bb_low(df['Close'].values.tolist(),bb_period,3)
CMF(チャイキン・マネーフロー)Chaikin Money Flow
タイプ:オシレーター系
パラメーターの設定
mf(終値, 高値, 安値, 出来高, 期間)
- 終値, 高値, 安値, 出来高:リスト形式の値。期間以上のデータ数量がないとエラーにはなりませんが、ある程度のデータ数量がないとNanになります。
- 期間:期間を設定する。(通常に20日または21日)
from pyti.chaikin_money_flow import chaikin_money_flow as cmf period = 20 df['cmf'] = cmf(df['Close'].values.tolist(), df['High'].values.tolist(), df['Low'].values.tolist(), df['Volume'].values.tolist(), period)
CMO(シャンデ・モメンタム・オシレーター)Chande Momentum Oscillator
タイプ:オシレーター系
パラメーターの設定
cmo(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。(9、14、20日など)
from pyti.chande_momentum_oscillator import chande_momentum_oscillator as cmo period = 20 df['cmo'] = cmo(df['Close'].values.tolist(), period)
CCI(商品チャンネル指数)Commodity Channel Index
タイプ:オシレーター系
パラメーターの設定
cci(終値, 高値, 安値, 期間)
- 終値, 高値, 安値:リスト形式の値。期間以上のデータ数量がないとエラーにはなりませんが、ある程度のデータ数量がないとNanになります。
- 期間:期間を設定する。(通常に14日)
from pyti.commodity_channel_index import commodity_channel_index as cci period = 14 df['cci'] = cci(df['Close'].values.tolist(), df['High'].values.tolist(), df['Low'].values.tolist(), period)
DPO(トレンド除去プライスオシレーター)Detrended Price Oscillator
タイプ:オシレーター系
パラメーターの設定
dpo(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。(20日)
from pyti.detrended_price_oscillator import detrended_price_oscillator as dpo period = 20 df['dpo'] = dpo(df['Close'].values.tolist(), period)
DMI(Directional Movement Index
タイプ:トレンド系
本モジュールでは以下の5つの値を取得することができます。
- Negative Directional Index (-DI):
pdm(高値, 安値)
- Positive Directional Index (+DI):
ndm(高値, 安値)
- Negative Directional Movement (-DM):
pdi(終値, 高値, 安値, 期間)
- Positive Directional Movement (+DM):
ndi(終値, 高値, 安値, 期間)
- Average Directional Index(ADX):
adx(終値, 高値, 安値, 期間)
パラメーターの設定
- 終値、高値、安値:リスト形式の値、長期以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。(一般的に14日)
from pyti.directional_indicators import positive_directional_movement as pdm from pyti.directional_indicators import negative_directional_movement as ndm from pyti.directional_indicators import positive_directional_index as pdi from pyti.directional_indicators import negative_directional_index as ndi from pyti.directional_indicators import average_directional_index as adx period = 14 df['pdm'] = pdm(df['High'].values.tolist(), df['Low'].values.tolist()) df['ndm'] = ndm(df['High'].values.tolist(), df['Low'].values.tolist()) df['pdi'] = pdi(df['Close'].values.tolist(), df['High'].values.tolist(), df['Low'].values.tolist(), period) df['ndi'] = ndi(df['Close'].values.tolist(), df['High'].values.tolist(), df['Low'].values.tolist(), period) df['adx'] = adx(df['Close'].values.tolist(), df['High'].values.tolist(), df['Low'].values.tolist(), period)
補足
average_directional_indexをadxと略していますが、ソースを見ると、adxと記載があったのであっていると思います。
DEMA(2重指数移動平均)Double Exponential Moving Average
タイプ:トレンド系
パラメーターの設定
dss(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.double_exponential_moving_average import double_exponential_moving_average as dema period = 5 df['dema'] = dema(df['Close'].values.tolist(), period)
DSS(2重平滑化確率)Double Smoothed Stochastic
タイプ:オシレーター系
パラメーターの設定
dss(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.double_smoothed_stochastic import double_smoothed_stochastic as dss period = 14 df['dss'] = dss(df['Close'].values.tolist(), period)
EMA(指数平滑移動平均線)Exponential Moving Average
タイプ:トレンド系
ema(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.exponential_moving_average import exponential_moving_average as ema period = 5 df['ema'] = ema(df['Close'].values.tolist(), period)
HMA(ハル移動平均線)Hull Moving Average
タイプ:トレンド系
hma(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.hull_moving_average import hull_moving_average as hma period = 5 df['hma'] = hma(df['Close'].values.tolist(), period)
一目均衡表(Ichimoku Cloud)
タイプ:トレンド系
本モジュールでは以下の5つの値を取得することができます。
- TenkanSen
- KijunSen
- Chiku Span
- Senkou A
- Senkou B
パラメーターの設定
tenkansen(終値, 期間=9):
kijunsen(終値, 期間=26):
chiku_span(終値):
senkou_a(終値):
senkou_b(終値, 期間=52):
- 終値:リスト形式の値。最長であるsenkou_bの期間以上にデータがないとエラーになる。
- 期間:期間を設定する。上記にそれぞれのデフォルト値を記載しました。
chiku_spanとsenkou_a、senkou_bは、返り値のリストの個数が変わってしまうため、データフレームではエラーになります。
そこで以下のように少し手を加えました。
- chiku_span:shiftに置き換えました。
- senkou_a、senkou_b:[:len(df)]を追加して行数を揃えました。
from pyti.ichimoku_cloud import tenkansen from pyti.ichimoku_cloud import kijunsen from pyti.ichimoku_cloud import chiku_span from pyti.ichimoku_cloud import senkou_a from pyti.ichimoku_cloud import senkou_b df['tenkansen'] = tenkansen(df['Close'].values.tolist()) df['kijunsen'] = kijunsen(df['Close'].values.tolist()) # df['chiku_span'] = chiku_span(df['Close'].values.tolist()) # data[25::] *ソースがこのようになっていました。 df["chiku_span"] = df.Close.shift(-25) df['senkou_a'] = senkou_a(df['Close'].values.tolist())[:len(df)] df['senkou_b'] = senkou_b(df['Close'].values.tolist())[:len(df)]
ケルトナーバンド(Keltner Bands)
タイプ:オシレーター系
本モジュールでは以下の4つの値を取得することができます。
σ(シグマ)の値の初期値は全て2.0です。-σの値は負数ではなく正数で指定します。
- Bandwidth
- Center Band(SMAと同じです)
- Upper Band
- Lower Band
パラメーターの設定
b_width(高値, 安値, 期間)
center_b(終値, 高値, 安値, 期間)
upper_b(終値, 高値, 安値, 期間)
lower_b(終値, 高値, 安値, 期間)
- 終値, 高値, 安値:リスト形式の値。
- 期間:期間を設定する。
from pyti.keltner_bands import band_width as b_width from pyti.keltner_bands import center_band as center_b from pyti.keltner_bands import upper_band as upper_b from pyti.keltner_bands import lower_band as lower_b period = 20 df['b_width'] = b_width(df['High'].values.tolist(), df['Low'].values.tolist(), period) df['center_b'] = center_b(df['Close'].values.tolist(), df['High'].values.tolist(), df['Low'].values.tolist(), period) df['upper_b'] = upper_b(df['Close'].values.tolist(), df['High'].values.tolist(), df['Low'].values.tolist(), period) df['lower_b'] = lower_b(df['Close'].values.tolist(), df['High'].values.tolist(), df['Low'].values.tolist(), period)
LWMA(線形加重移動平均)Linear Weighted Moving Average
タイプ:トレンド系
パラメーターの設定
lwma(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
理由はわかりませんが、正しいと思われる値を取得できませんでした。
from pyti.linear_weighted_moving_average import linear_weighted_moving_average as lwma period = 5 df['lwma'] = lwma(df['Close'].values.tolist(), period)
Momentum(モメンタム)
タイプ:オシレーター系
パラメーターの設定
momentum(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.momentum import momentum period = 14 df['momentum'] = momentum(df['Close'].values.tolist(), period)
MF(マネー・フロー)Money Flow
タイプ:その他
通常はMF単体では利用せず、他の指標の元の値となる。
パラメーターの設定
mf(終値, 高値, 安値, 出来高)
- 終値, 高値, 安値, 出来高:リスト形式の値。
from pyti.money_flow import money_flow as mf df['mf'] = mf(df['Close'].values.tolist(), df['High'].values.tolist(), df['Low'].values.tolist(), df['Volume'].values.tolist())
MFI(マネー・フロー・インデックス)Money Flow Index
タイプ:オシレーター系
パラメーターの設定
mf(終値, 高値, 安値, 出来高, 期間)
- 終値, 高値, 安値, 出来高:リスト形式の値。期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。(通常に14日)
from pyti.money_flow_index import money_flow_index as mfi period = 14 df['mfi'] = mfi(df['Close'].values.tolist(), df['High'].values.tolist(), df['Low'].values.tolist(), df['Volume'].values.tolist(), period)
MACD(マックディー)Moving Average Convergence Divergence
タイプ:オシレーター系
MACDは通常単独では利用せず、シグナルと言われるMACDの単純移動平均を合わせて利用する。
パラメーターの設定
macd(データ, 短期, 長期)
- データ:リスト形式の値、長期以上のデータ数量がないとエラーになる。
- 短期:短期の期間を設定する。(一般的に12日)
- 長期:長期の期間を設定する。(一般的に26日)
sma(データ, 期間)
- データ:MACDの値をリスト形式にする。
- 期間:期間を設定する。(一般的に9日)
from pyti.moving_average_convergence_divergence import moving_average_convergence_divergence as macd from pyti.simple_moving_average import simple_moving_average as sma macd_period = {'long' : 26, 'short' : 12} sma_period = 9 df['macd'] = macd(df['Close'].values.tolist(), macd_period['short'], macd_period['long']) df['signal'] = sma(df['macd'].values.tolist(), sma_period)
補足
計算式:MACD = 短期EMA – 長期EMA
MAE(エンベロープ)Moving Average Envelope
タイプ:トレンド系
本モジュールでは以下の値を取得できます。
- Upper Band
- Center Band(SMAと同じです)
- Lower Band
パラメーターの設定
center_band(終値, 期間)
upper_band(終値, 期間, %)
lower_band(終値, 期間, %)
- 終値:リスト形式の値。
- 期間:期間を設定する。
- %:パーセントを小数点で指定する。(通常0.01〜0.1)
from pyti.moving_average_envelope import center_band as center_band from pyti.moving_average_envelope import upper_band as upper_band from pyti.moving_average_envelope import lower_band as lower_band period = 14 env_percentage = 0.01 df['center_band'] = center_band(df['close'].values.tolist(), period) df['upper_band'] = upper_band(df['close'].values.tolist(), period, env_percentage) df['lower_band'] = lower_band(df['close'].values.tolist(), period, env_percentage)
OBV(オン・バランス・ボリューム)On Balance Volume
タイプ:トレンド系
パラメーターの設定
obv(終値, 出来高)
- 終値、出来高:リスト形式の値。
from pyti.on_balance_volume import on_balance_volume as obv df['obv'] = obv(df['Close'].values.tolist(), df['Volume'].values.tolist())
プライスチャネル(Price Channels)
タイプ:トレンド系
本モジュールでは以下の値を取得できます。
- Upper Price Channel
- Lower Price Channel
パラメーターの設定
upc(終値, 期間, パーセント)
lpc(終値, 期間, パーセント)
- 終値:リスト形式の値。
- 期間:期間を設定する。(20日)
- パーセント:1くらい
from pyti.price_channels import upper_price_channel as upc from pyti.price_channels import lower_price_channel as lpc period = 20 upper_percent = 1 lower_percent = 1 df['upc'] = upc(df['close'].values.tolist(), period, upper_percent) df['lpc'] = lpc(df['close'].values.tolist(), period, lower_percent)
PPO(プライスオシレーター)Price Oscillator
タイプ:オシレーター系
PROは通常単独では利用せず、シグナル(SIGNAL)と言われるPROの単純移動平均を合わせて利用する。
PROとSIGNALの差分のHistogramも合わせて表示することもある。
パラメーターの設定
pro(データ, 短期, 長期)
- データ:リスト形式の値、長期以上のデータ数量がないとエラーになる。
- 短期:短期の期間を設定する。(一般的に12日)
- 長期:長期の期間を設定する。(一般的に26日)
sma(データ, 期間)
- データ:MACDの値をリスト形式にする。
- 期間:期間を設定する。(一般的に9日)
from pyti.price_oscillator import price_oscillator as pro from pyti.simple_moving_average import simple_moving_average as sma short_period = 12 long_period = 26 signal_period = 9 df['pro'] = pro(df['close'].values.tolist(), short_period, long_period) df['signal'] = sma(df['pro'].values.tolist(), signal_period) df['histogram'] = df['pro'] - df['signal']
ROC(変化率)Rate of Change
タイプ:オシレーター系
パラメーターの設定
roc(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.rate_of_change import rate_of_change as roc period = 14 df['roc'] = roc(df['Close'].values.tolist(), period)
RSI(相対力指数)Relative Strength Index
タイプ:オシレーター系
パラメーターの設定
rsi(データ, 期間)
- データ:リスト形式の値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.relative_strength_index import relative_strength_index as rsi period = 14 df['rsi'] = rsi(df['Close'].values.tolist(), period)
SMA(単純移動平均)Simple Moving Average
タイプ:トレンド系
パラメーターの設定
sma(データ, 期間)
- データ:リスト形式の値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.simple_moving_average import simple_moving_average as sma sma_period = 9 df['signal'] = sma(df['Close'].values.tolist(), sma_period)
SMMA(平滑移動平均)Smoothed Moving Average
タイプ:トレンド系
パラメーターの設定
smma(データ, 期間)
- データ:リスト形式の値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.smoothed_moving_average import smoothed_moving_average as smma period = 5 df['smma'] = smma(df['Close'].values.tolist(), period)
SD(標準偏差)Standard Deviation
タイプ:その他
通常、単独では使わず、他の指標の元データとなっているようです。
パラメーターの設定
sd(データ, 期間)
- データ:リスト形式の値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.standard_deviation import standard_deviation as sd period = 20 df['sd'] = sd(df['Close'].values.tolist(), period)
SV(分散)Standard Variance
タイプ:その他
通常、単独では使わず、他の指標の元データとなっているようです。
パラメーターの設定
sv(データ, 期間)
- データ:リスト形式の値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.standard_variance import standard_variance as sv period = 20 df['sv'] = sv(df['Close'].values.tolist(), period)
ストキャスティクス(Stochastic)
タイプ:オシレーター系
本モジュールでは以下の2つの値を取得することができます。
- %K
- %D
パラメーターの設定
srv_k(データ, 期間)
srv_d(データ, 期間)
- データ:リスト形式の値、期間以上のデータ数量がないとエラーになる。ある程度の期間がないと値がnanになる。
- 期間:期間を設定する。
from pyti.stochastic import percent_k as srv_k from pyti.stochastic import percent_d as srv_d period = 14 df['srv_k'] = srv_k(df['Close'].values.tolist(), period) df['srv_d'] = srv_d(df['Close'].values.tolist(), period)
ストキャスティクス RSI(StochRSI)
タイプ:オシレーター系
パラメーターの設定
srsi(データ, 期間)
- データ:リスト形式の値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.stochrsi import stochrsi as srsi period = 14 df['srsi'] = srsi(df['Close'].values.tolist(), period)
TMA(三角移動平均)Triangular Moving Average
タイプ:トレンド系
tma(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.triangular_moving_average import triangular_moving_average as tma period = 5 df['tma'] = tma(df['Close'].values.tolist(), period)
TEMA(3重指数移動平均)Triple Exponential Moving Average
タイプ:トレンド系
tema(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.triple_exponential_moving_average import triple_exponential_moving_average as tema period = 5 df['tema'] = tema(df['Close'].values.tolist(), period)
TR(トゥルー レンジ)True Range
タイプ:その他
TRの計算式が色々あるのか、私が調べた式とソースの式が異なっています。
またモジュール内の説明の式とソースも一致していないですが、論理的には問題ないです。
TRの計算式の色々
- TR = 高値 – 安値
- TR = max(高値 – 安値, 高値 – 前日終値, 前日終値 – 安値)
- TR = max(期間の終値の高値 – 期間の終値の安値, 期間の終値の高値 – 前日終値, 期間の終値の安値 – 前日終値)
どれが正しいかわかりませんが、最後の式がこのモジュールの計算式です。
もしかすると、TRはATRの計算式に利用され、ATRはDMIに利用されるため、このモジュールではこのような計算式になっているのかも知れません。
パラメーターの設定
tr(データ, 期間)
- データ:リスト形式の終値、期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.true_range import true_range as tr period = 14 df['tr'] = tr(df['Close'].values.tolist(), period)
TP(Typical Price)
タイプ:その他
通常、単独では使わず、他の指標の元データとなっているようです。
パラメーターの設定
tp(終値, 高値, 安値, 出来高)
- 終値, 高値, 安値:リスト形式の値。
from pyti.typical_price import typical_price as tp df['tp'] = tp(df['Close'].values.tolist(), df['High'].values.tolist(), df['Low'].values.tolist())
UO(アルティメット・オシレーター)Ultimate Oscillator
タイプ:オシレーター系
パラメーターの設定
uo(終値, 安値)
- 終値、安値:リスト形式の値。28期間以上のデータ数量がないとエラーになる。
from pyti.ultimate_oscillator import ultimate_oscillator as uo df['uo'] = uo(df['Close'].values.tolist(), df['Low'].values.tolist())
補足
本モジュールは考案者のラリー・ウィリアムズの提案とおりに7日間、14 日間、28日間の3期間から指標を作成します。
もし、別の期間に設定する場合は、UOでは期間指定ができないため、個別に生成して算出するしかないです。
- 個別に算出
- avg_7 = average_7(close_data, low_data, period=7):
- avg_14 = average_14(close_data, low_data, period=14):
- avg_28 = average_28(close_data, low_data, period=28):
- UOを算出
- a7= 4 × avg_7
- a14= 2 × avg_14
- a28= avg_28
- uo= 100 × ((a7+ a14+ a28) ÷ 7)
VHF(Vertical Horizontal Filter)
タイプ:オシレーター系
パラメーターの設定
vhf(データ, 期間)
- データ:リスト形式の値。期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。(12日、または28日)
from pyti.vertical_horizontal_filter import vertical_horizontal_filter as vhf period = 28 df['vhf'] = vhf(df['Volume'].values.tolist(), period)
ボラティリティー(Volatility)
タイプ:その他
このモジュールは、ヒストリカル・ボラティリティです。
パラメーターの設定
volatility(データ, 期間)
- データ:リスト形式の値。期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.volatility import volatility as volatility period = 10 df['volatility'] = volatility(df['Close'].values.tolist(), period)
補足
計算式
Volatility = SD / SV
VAMA(出来高調整済み移動平均線)Volume Adjusted Moving Average
タイプ:トレンド系
パラメーターの設定
vwma(データ, 期間)
- データ:リスト形式の値。期間以上のデータ数量がないとエラーになる。
- 期間:期間を設定する。
from pyti.volume_adjusted_moving_average import volume_adjusted_moving_average as vwma period = 5 df['vwma'] = vwma(df['Close'].values.tolist(), df['Volume'].values.tolist(), period)
VI(ボリューム・インデックス)Volume Index
タイプ:オシレーター系
本モジュールは以下の2つの指標を作成することができます。
- PVI(ポジティブ・ボリューム・インデックス)
- NVI(ネガティブ・ボリューム・インデックス)
パラメーターの設定
pvi(終値, 出来高)
nvi(終値, 出来高)
- 終値, 出来高:リスト形式の値。
from pyti.volume_index import positive_volume_index as pvi from pyti.volume_index import negative_volume_index as nvi df['pvi'] = pvi(df['Close'].values.tolist(), df['Volume'].values.tolist()) df['nvi'] = nvi(df['Close'].values.tolist(), df['Volume'].values.tolist())
ボリューム・オシレーター(Volume Oscillator)
タイプ:オシレーター系
ボリューム・オシレーターには、以下の2つの指標がありますが、本モジュールはPVOとなります。
- AVO =(短期EMA – 長期EMA)
- PVO =(短期EMA – 長期EMA)÷ 長期EMA × 100
パラメーターの設定
vc(出来高, 短期, 長期)
- 出来高:リスト形式の終値。
- 短期、長期:期間を設定します。
from pyti.volume_oscillator import volume_oscillator as vc short_period = 20 long_period = 25 df['vc'] = vc(df['Volume'].values.tolist(), short_period, long_period)
WMA(加重移動平均線)Weighted Moving Average
タイプ:トレンド系
パラメーターの設定
wma(データ, 期間)
- データ:リスト形式の終値。
- 期間:期間を指定します。
from pyti.weighted_moving_average import weighted_moving_average as wma period = 5 df['wma'] = wma(df['Close'].values.tolist(), period)
ウィリアムズ%R(Williams %R)
タイプ:オシレーター系
パラメーターの設定
wpr(データ)
- データ:リスト形式の終値。
from pyti.williams_percent_r import williams_percent_r as wpr df['wpr'] = wpr(df['Close'].values.tolist())
補足
計算式
%R = (終値-過去n日間の最高値) ÷ (過去n日間の最高値-過去n日間の最安値) × 100
とするならば、本モジュールでは期間を指定できないため目的とは異なる値になる。
本モジュールの計算式(ソース)
highest_high = np.max(close_data) lowest_low = np.min(close_data) wr = [((highest_high - close) / (highest_high - lowest_low)) * -100 for close in close_data]
コメント