iMFI 関数
この関数は、任意に設定したパラメータのMFI (マネーフローインデックス) の値を計算して、その値を取得します。MFIはオシレータ系・ボリューム系の両方の特性を持ったインジケータになります。
MFI
MFI (Money Flow Index [マネーフローインデックス]) は、相場が買われすぎか売られすぎかどちらの方向に流れているのかを判断するための指標です。MFIは、値幅の他に出来高も考慮されるもので、RSIより反応が早いと言われています。
MFIは、0から100までの値をとります。一般的には、MFIが80以上の場合は買われすぎ、20以下の場合は売られすぎと判断されます
MT4でチャート上にMFIをプロットする時はナビゲーター中のインディケータ → 「ボリューム」 → 「Money Flow Index」インジケータを使用します。
(MFIの計算式)
MFIの計算式は、以下のようになります。
MFI = 100 − (100 ÷ (1+MR))
MR = (PMFの n期間の合計) ÷ (NMFの n期間の合計)
PMF = TP × V × (現在のバーのTP - 1つ前のTP) ← [現在のバーのTP > 1つ前のTP]
NMF = TP × V × (1つ前のTP - 現在のバーのTP) ← [現在のバーのTP < 1つ前のTP]
TP = (現在のバーの高値 + 現在のバーの安値 + 現在のバーの終値) ÷ 3
V:出来高
n:計算期間(通常は14が使われます)
(MFIの使い方)
MFIは、一般的に次のように使われます。
① MFIが80以上なら買われすぎで、反転のサインになります。逆に、MFIが20以下なら売られすぎで、反転のサインになります。この場合、MFIが中央の50を越えるか越えないかでエントリーのタイミングを決めます。
② MFIがダイバージェンスを示す場合も、反転のサインになります。ダイバージェンスとは、価格とMFIが逆方向に動く現象のことです。
たとえば、価格が高値を更新しているにもかかわらず、MFIがそれに連動していない場合です。この場合、MFIが前回の高値や安値をブレイクするかどうかでエントリーのタイミングを決めます。
データ型と構成・戻り値
double iMFI(①, ②, ③, ④);
戻り値は、任意に設定したパラメータのMFIの値を計算して、その値を返します。
引数 [4]
iMFI関数は 4個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | symbol | string | - | - | 計算対象の通貨ペア名。 「NULL」は選択チャートの通貨ペア名が選択されます。 |
② | timeframe | int | - | - | 時間軸。ENUM_TIMEFRAMES 列挙値から選択。 「0」は現在チャートの時間軸が選択されます。 |
③ | period | int | - | - | MFIの計算期間。MFIを計算するバーの数を数値で設定します。 |
④ | shift | int | - | - | MFIの値を算出するバーの位置。 現在のバーから指定した時間軸のバー数だけ過去へシフトします。たとえば、現在のバーからの計算は「0」、 1つ前のバーから計算する時は「1」になります。 |
使用例
iMFI関数によるMFI値の計算
iMFI関数を使って、現在のMFI値を計算します。
コード
// iMFI関数によるMFI値の計算
#property strict
void OnInit() {
int period = 14; // 計算期間
double MFI = iMFI(NULL, 0, period, 0);
Print("MFI値:", MFI);
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)