テクニカル指標の一覧

2023年7月26日テクニカル指標,FX,PythonFX

ここではドル円の動きを見ることで、オシレーター指標について解説します。OANDAの解説記事を参考にしてPythonで実装することで、挙動を確認しています。

https://www.oanda.jp/lab-education/technical_analysis/

サイコロジカルライン

サイコロジカルライン=100 * 終値上昇日数 / n期間

一定期間において、終値が上昇した「日数」がどれくらいあるかを見る指標です。デフォルトでは12を用いるようです。つまり、上昇日が9日ならば75%になります。

def psychological_line(data, period=12):
  delta = data.close.diff()
  rule = delta.apply(lambda d: 1 if d > 0 else 0)
  return rule.rolling(window=period).mean() * 100

Relative Strength Index, RSI

RSIの記事はこちら

モメンタム

現在の終値とn日前の終値を比較して、その差がどれくらいあるかを表すオシレータです。

モメンタム = 現在の終値 - n日前の終値

Rate of Change, ROC:

モメンタムがn期間前との差を表すのに対して、ROCは比率を表します。

ROC = 100 * 現在の終値 / n日前の終値

一目均衡表の遅行スパンは、モメンタムと似た考え方で、26日前に遡って表示するものになっています。

Commodity Channel Index, CCI

一定期間の平均価格の移動平均から、現在値がどれくらい乖離しているか。

平均価格からの乖離を表す。相場の過熱感(買われ過ぎ/売られ過ぎ)から逆張りに用いるというよりは、相場の方向性を判断してトレンドフォローに用いることを得意とします。

-100, 100%にレベルラインが引かれる

$$ CCI = \frac{1}{0.015}\frac{p_t-SMA(p_t)}{MD(p_t)}, $$

ここで、

$$p_t=\frac{p_{high}+p_{low}+p_{close}}{3}$$

となります。Typical priceと言われています。SMAは単純移動平均で、MDはmean absolute deviationです。絶対値偏差の総和平均です。

def calculate_cci(data, period, const=0.015):
    """Commodity Channel Index"""
    pt = (data.close + data.low + data.high) / 3
    sma_pt = pt.rolling(window=period).mean()
    md_pt = (pt - pt.mean()).abs().sum() / len(pt)
    cci = (pt - sma_pt) / (const * md_pt)
    return cci

Williams’ %R

一定期間の最高値と最安値の範囲を基準に、直近の終値が相対的にどの水準にあるかを表します。

ウィリアムズ%Rは-100(下限)~0%(上限)の範囲で表されます(チャートソフトによっては数値の範囲が異なる場合があります。MT4/MT5では-100~0%です)。

%R=(当日終値-過去n日間の最高値)÷(過去n日間の最高値-過去n日間の最安値)×100

ウィリアムズ%Rでは、-80%以下が売られ過ぎ、-20%以上が買われ過ぎと判断します(より厳密に、-90%と-10%を基準にする考え方もあります)

def williams_r(data, r=3):
    # 最高値と最低値の範囲でk期間
    lowest_low = data.low.rolling(window=r).min()
    highest_high = data.high.rolling(window=r).max()

    # ウィリアムズ %R 計算
    percent_r = 100 * (data.close - highest_high) / (highest_high - lowest_low)
    return percent_r

以下に示すストキャスティクスとほぼ同じです。どちらからを使えば良いでしょう。

ストキャスティクス

ストキャスティクスの基本となる%Kは、

%K="一定期間の最安値から最高値の値幅に対して、現在値がその安値から何パーセントに位置しているか"

を意味します。式で書くと以下のようになります。

%K=(当日終値-過去n日間の最安値)÷(過去n日間の最高値-過去n日間の最安値)×100

また、ストキャスティクスでは、%Kに対してさらに移動平均をとってきます。

  • %Kを移動平均したものが%D、
  • %Dを移動平均したものがスロー%D

ストキャスティクスを見る場合、20%以下は売られ過ぎ、80%以上は買われ過ぎと判断します。そして動きが速い方(ファスト:%K、スロー:%D)に着目し、ゾーンを抜け出すとき(ゾーン・エグジット)を逆張りが有効なタイミングと考えます。

def calucate_stochastics(data, k=3, d=3):
    # 最高値と最低値の範囲でk期間
    lowest_low = data.low.rolling(window=k).min()
    highest_high = data.high.rolling(window=k).max()

    # ストキャスティクス %K 計算
    percent_k = 100 * (data.close - lowest_low) / (highest_high - lowest_low)
    # ストキャスティクス %D 計算(%K の d期間のSMA)
    percent_d = percent_k.rolling(window=d).mean()
    slow_percent_d = percent_d.rolling(window=d).mean()
    return {"k": percent_k, "d": percent_d, "slow_d": slow_percent_d}  

ダイバージェンス

ダイバージェンス(乖離)とは、「価格のトレンドライン」と「テクニカル指標のライン」が逆の動きをしている状況を表します。 すなわち、価格のトレンドラインとモメンタム指標またはオシレーター(RSI、MACDなど)との間に生じる不一致を指します。

ダイバージェンスの種類には3つあります。

  1. ブリッシュ(Bullish)ダイバージェンス
  2. ベアリッシュ(Bearish)ダイバージェンス
  3. ヒドゥン(Hidden)ダイバージェンス

ブリッシュ・ダイバージェンス

価格が新たな低値をつけている間に、モメンタム指標がそれに対応して新たな低値をつけない状況を指します。これは、下降トレンドの弱体化と、可能性としては反転(上昇)を示していると解釈されます。

以下の図ではドル円が価格が下落しているにもかかわらず、RSIのラインが上昇をし始めています。このような状況はブリッシュ・ダイバージェンスと呼ばれ、上昇のサインとなります。

引用元: How to Spot Bullish and Bearish Divergence Patterns

ベアリッシュ・ダイバージェンス

格が新たな高値をつけている間に、モメンタム指標がそれに対応して新たな高値をつけない状況を指します。これは、上昇トレンドの弱体化と、可能性としては反転(下降)を示していると解釈されます。

ブリッシュとは逆の状況です。

ヒドゥン・ダイバージェンス:

既存のトレンドの継続を示すシグナルとして解釈されます。これは、相場が一時的な反動を示しているが、主要なトレンドが続く可能性が高いことを示唆します。ヒドゥン・ダイバージェンスは、主にトレンドフォローの戦略で利用されます。ヒドゥン・ダイバージェンスには、強気と弱気の2種類があります強気と弱気の2種類があります。

  1. ヒドゥン強気ダイバージェンス(Hidden Bullish Divergence):これは、価格が高値を更新する(上昇トレンド中)一方で、モメンタム指標が前回の高値よりも低い値を示す状況を指します。これは、一時的な価格の下落(反落)があったにもかかわらず、上昇トレンドが続く可能性が高いことを示しています。
  2. ヒドゥン弱気ダイバージェンス(Hidden Bearish Divergence):これは、価格が低値を更新する(下降トレンド中)一方で、モメンタム指標が前回の低値よりも高い値を示す状況を指します。これは、一時的な価格の上昇(反発)があったにもかかわらず、下降トレンドが続く可能性が高いことを示しています。

参考記事:
https://www.ig.com/jp/trading-strategies/how-to-trade-bullish-and-bearish-divergences-210407

Average Directional Movement Index, ADX

ADXの記事はこちら

TA-Lib

テクニカル指標を計算するためのライブラリです。非常に多くの種類があるので、ローソク足のパターン認識手法についても載せていきます。

https://github.com/TA-Lib/ta-lib-python

TA-Lib is widely used by trading software developers requiring to perform technical analysis of financial market data.

  • Includes 150+ indicators such as ADX, MACD, RSI, Stochastic, Bollinger Bands, etc.
  • Candlestick pattern recognition
  • Open-source API for C/C++, Java, Perl, Python and 100% Managed .NET

Pattern Recognition

ローソク足の形からエントリーを行う時に利用できる関数一覧です。

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

Two Crows(二羽烏(にわがらす))

通常、強い上昇トレンドの後に発生し、逆転を示すベアリッシュ(下降)パターンです。

Black Three Crows (三羽烏(さんばがらす))

陰線が3本続いた状態です。