リアル取引口座を開設する

[広告] 当サイトはアフィリエイト広告を利用しています

FXインジの使い方|MT4・MT5で設定・確定足・検証を確認

FXインジケーターは、価格などのデータを一定の計算方法で表示する道具です。まず目的を決め、同じ銘柄・時間足・設定で表示を確認しましょう。サインが出たことだけで、利益が出るとは判断できません。

最初に決める3つの役割

  • 方向を整理する:移動平均線。過去の価格を平均するため、価格変化への遅れがあります。
  • 値動きの勢いを確認する:RSI。高い数値や低い数値が続くこともあり、70・30だけで反転を決めません。
  • 値幅を把握する:ATR。方向を示す指標ではなく、価格単位とpipsの換算を確認します。

MT4・MT5で使う手順

  1. 標準搭載のインジをチャートに追加し、期間・計算方法・適用価格を記録します。
  2. 同じ銘柄・時間足で、設定を1つずつ変えて表示の違いを確認します。
  3. 配布インジはMT4用とMT5用のファイル形式を確認して導入します。
  4. 未確定足と確定足を分け、チャート再読込後に過去のサインが変わらないか調べます。
  5. 動作を確認した設定はテンプレートで保存し、元の配布ファイルも保管します。

組み合わせる前に条件を文章で残す

「MAが上向き」のような説明だけでは判定が曖昧です。たとえば「確定足の終値と20期間SMAを比較する」と書き、使う時間足・足の位置・見送る条件を揃えます。20期間は説明用の例であり、最適な設定を保証するものではありません。

デモ環境で表示と通知を確認した後、過去データと未使用の期間を分けて検証します。勝率だけでなく損益、取引回数、最大ドローダウン、スプレッド等のコストを記録します。

自作コードを使う場合の注意点

MT4のMQL4とMT5のMQL5は、同じ関数名でも使い方が異なる場合があります。以前掲載していたRSIの数値をMQL4のiMAの適用価格に渡す例は誤りのため削除しました。MQL4で配列の値を平均する場合は、必要なデータを配列に用意してiMAOnArrayを使用します。

自作を始めるときは公式仕様に沿って、コンパイル・表示値・履歴再取得時の再計算を確認してください。FXインジの作り方でMT4とMT5の違いを整理しています。

よくある疑問

確定足ならサインは絶対に変わりませんか?

指標の実装次第です。上位足が未確定の場合や、後から山・谷を判定する指標では、過去表示が変わることがあります。配布説明と実際の再読込結果を照合します。

インジを増やすと分析は正確になりますか?

数を増やすだけでは改善しません。同じ価格データを似た方法で計算する指標を重ねると、同じ情報を繰り返し見ている場合があります。

次に確認する記事

公式仕様

MetaQuotes:MQL4 iMAOnArray、MQL4の標準指標の利用

FXインジの作り方|MQL4のSMA例とMT5との違い

自作インジは「どのデータを、どの条件で、どこに表示するか」をコードにする作業です。まずMT4用のMQL4とMT5用のMQL5を分けて考え、単純な移動平均線から構造を確かめましょう。自作できることと、売買で利益が出ることは別です。

最初に用意するもの

  • 使う端末のMetaEditorと、表示を確認するデモ環境
  • 仕様メモ:銘柄、時間足、期間、適用価格、未確定足の扱い
  • 同じ設定の標準インジ:表示値を比較するために使います。

MT4とMT5はファイルも指標関数も違う

MT4は.mq4を.ex4へ、MT5は.mq5を.ex5へコンパイルします。拡張子の変更だけで移植はできません。MQL4のiMAは値を返しますが、MQL5のiMAはハンドルを返し、CopyBufferで値を取得します。

MQL4のSMAを描く学習用の例

次の例は、終値20本の単純平均をメインチャートに描く構造です。MT4用でありMT5へそのまま貼り付ける例ではありません。計算を理解しやすくするため毎回全範囲を計算します。大量の履歴を扱う実用版ではprev_calculatedを使った再計算範囲の最適化が必要です。

#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
input int Period = 20;
double Buffer[];
int OnInit() {
  if (Period < 1) return(INIT_PARAMETERS_INCORRECT);
  SetIndexBuffer(0, Buffer);
  ArraySetAsSeries(Buffer, true);
  SetIndexStyle(0, DRAW_LINE);
  SetIndexEmptyValue(0, EMPTY_VALUE);
  SetIndexDrawBegin(0, Period - 1);
  return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total, const int prev_calculated,
 const datetime &time[], const double &open[], const double &high[],
 const double &low[], const double &close[], const long &tick_volume[],
 const long &volume[], const int &spread[]) {
  ArraySetAsSeries(close, true);
  ArrayInitialize(Buffer, EMPTY_VALUE);
  if (rates_total < Period) return(0);
  for (int i = rates_total - Period; i >= 0; i--) {
    double sum = 0;
    for (int j = 0; j < Period; j++) sum += close[i + j];
    Buffer[i] = sum / Period;
  }
  return(rates_total);
}

コードの読み方

  • OnInit:描画バッファと線の形式を設定します。SetIndexBufferの後で配列の向きを指定します。
  • OnCalculate:time・open・high・low・close等の引数を公式仕様に揃えます。旧版の記事で欠けていたtime配列も含めています。
  • close[0]:現在形成中の足の終値です。価格の更新でこの足のSMAも変わります。
  • 計算できない古い範囲:EMPTY_VALUEにして、必要本数のない平均を描画しません。

MetaEditorから表示確認まで

  1. カスタムインジケーターの新規ファイルを作り、コードを保存します。
  2. コンパイルし、エラー・警告を確認します。コンパイル成功だけで計算が正しいとは判断しません。
  3. デモのチャートへ追加し、標準Moving Averageを期間20・Simple・Close・シフト0で重ねます。
  4. データウィンドウで複数の確定足を比較します。再起動・時間足変更・履歴再取得後も確認します。
  5. Periodを1や履歴本数より大きい値に変え、境界条件を確認します。

サインや通知を追加する前に

条件を確定足で評価するか、未確定足で評価するかを明示します。過去データの未来を参照しないこと、同じ足で通知が連続しないこと、上位足の確定時刻を混同しないことも確認します。コードを変更した日・端末ビルド・設定と検証結果を残してください。

次に確認する記事

公式仕様

MetaQuotes:MQL4イベント関数、MQL5 iMA

まさと

まさと

カテゴリー

[広告]

XMTrading 公式口座開設バナー
HFM 公式ゴールド・シルバー取引バナー
FXGT 公式口座開設バナー
最近の投稿
アーカイブ
リンク