【MQL4勉強プログラミング】EAやインジケーターの開発でForce Indexを使う方法

iForce()関数は、Force Indexの値を取得するために使用します。

「Force Index」は、直訳すると「勢力指数」と訳すことができますが、以下に示すように、Meta Trader4(MT4)に標準で搭載されている「Force Index」は、「投資苑 - 心理・戦略・資金管理」の著者であるアレキサンダー・エルダー(Alexander Elder)博士の開発した「勢力指数」とは異なります。

  • Force Indexの計算式
    当日の出来高×(当日のSMA(13)の値-前日のSMA(13)の値)
    SMA:単純移動平均線
    ()内の数値:SMAの計算期間
  • 勢力指数の計算式
    当日の出来高×(当日の終値-前日の終値)
    上記計算式で求めた値を基にしたEMA(2)とEMA(13)を使用
    EMA:指数移動平均線
    ()内の数値:EMAの計算期間

なお、勢力指数の詳しい見方・使い方については、「投資苑 - 心理・戦略・資金管理」及び「投資苑2 - トレーディングルームにようこそ」で紹介されています。

iForce()関数は、以下のように定義されています。

double iForce(
string symbol,
int timeframe,
int period,
int ma_method,
int applied_price,
int shift
);

各引数の意味は、以下とおりです。

  • string symbol
    Force Indexの値を計算したい通貨ペア名を指定します。
    通貨ペア名は、「気配値表示ウィンドウ」に表示されているとおりに記述します。
    特定の通貨ペア名を指定せず、EA等を適用したチャートのForce Indexの値を取得したい場合は、「NULL」と記述します。
  • int timeframe
    以下の表に従って、Force Indexの値を計算する時間軸を指定します。

    種 類
    定 数
    内 容
    PERIOD_CURRENT
    現在の時間足
    PERIOD_M1
    1分足
    PERIOD_M5
    5分足
    PERIOD_M15
    15
    15分足
    PERIOD_M30
    30
    30分足
    PERIOD_H1
    60
    1時間足
    PERIOD_H4
    240
    4時間足
    PERIOD_D1
    1440
    日 足
    PERIOD_W1
    10080
    週 足
    PERIOD_MN1
    43200
    月 足
  • int period
    Force Indexの値を計算する期間を指定します。
  • int ma_method
    以下の表に従って、Force Indexの値の計算に使用する移動平均線の種類を指定します。

    種 類
    定 数
    内 容
    MODE_SMA
    単純移動平均線
    MODE_EMA
    指数移動平均線
    MODE_SMMA
    平滑移動平均線
    MODE_LWMA
    線形加重移動平均線
  • int applied_price
    以下の表に従って、Force Indexの値の計算に使用する価格データを指定します。

    種 類
    定 数
    内 容
    PRICE_CLOSE
    終 値
    PRICE_OPEN
    始 値
    PRICE_HIGH
    高 値
    PRICE_LOW
    安 値
    PRICE_MEDIAN
    中央値

    (高値+安値)÷2
    PRICE_TYPICAL
    代表値

    (高値+安値+終値)÷3
    PRICE_WEIGHTED
    加重終値

    (高値+安値+終値+終値)÷4
  • int shift
    Force Indexの値を取得したいバーの位置を指定します。
    Force Indexの値を取得したいバーが現在のバーであれば「0」、1本前のバーであれば「1」、2本前のバーであれば「2」……と記述します。

具体例

2本前のバーのForce Indexの値を取得したい場合は、以下のように記述します。


double Force_2
= iForce(NULL,0,13,MODE_SMA,PRICE_CLOSE,2);