Step6【MQL4】1時間足の20SMAを基にエントリーロジックを設定する方法

FX自動売買で使われるEA(エキスパートアドバイザー)では、移動平均線(SMA)を基にトレンドを判定することがよくあります。本記事では、1時間足の20SMAが上向きか下向きかを判定し、その結果を変数 EntryLogic に保存する方法を紹介します。

コード例

以下は、MQL4を使用して1時間足の20SMAの向きを判定するコードです。

//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   // 初期化処理(必要に応じて記述)
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   // エントリーロジックを格納する変数
   int EntryLogic = 0;

   // 1時間足の20SMAの値を取得
   double SMA_Current = iMA(NULL, PERIOD_H1, 20, 0, MODE_SMA, PRICE_CLOSE, 0); // 現在のSMA
   double SMA_Previous = iMA(NULL, PERIOD_H1, 20, 0, MODE_SMA, PRICE_CLOSE, 1); // 1つ前のSMA

   // SMAの向きを判定
   if (SMA_Current > SMA_Previous)
     {
      EntryLogic = 1; // 上向きの場合
     }
   else if (SMA_Current < SMA_Previous)
     {
      EntryLogic = -1; // 下向きの場合
     }

   // 結果を表示(デバッグ用)
   Comment("SMA_Current: ", DoubleToString(SMA_Current, 5),
           "\nSMA_Previous: ", DoubleToString(SMA_Previous, 5),
           "\nEntryLogic: ", EntryLogic);
  }
//+------------------------------------------------------------------+

コードの解説

  1. iMA関数を使用して移動平均線を取得
    • iMA 関数は、指定した移動平均線の値を取得します。
    • NULL は現在の通貨ペアを指定します。
    • PERIOD_H1 は1時間足を意味します。
    • 20 は移動平均線の期間です。
    • PRICE_CLOSE は終値を基に計算することを指定しています。
    • 最後の引数 0 と 1 は、現在のバーと1つ前のバーの値を取得するためのインデックスです。
  2. SMAの向きを判定
    • 現在の20SMA(SMA_Current)が1つ前の20SMA(SMA_Previous)より大きければ、SMAは上向きです。
    • 逆に、小さければSMAは下向きと判定します。
  3. EntryLogicに結果を格納
    • 上向きの場合は EntryLogic = 1
    • 下向きの場合は EntryLogic = -1
  4. デバッグ用に結果を表示
    • Comment 関数を使って、SMAの値と EntryLogic の値をチャート上に表示しています。

実際に使用する際の注意点

  • このコードは OnTick 関数内で動作します。そのため、新しいティック(価格変動)が発生するたびに更新されます。
  • 実際のトレードロジックに組み込む際は、この EntryLogic を基に売買ルールを追加する必要があります。

これで、1時間足の20SMAを基にトレンドを判定するEAの基礎が完成しました。

Step5で紹介した基本構文と組み合わせてみてください。

つづく

タイトルとURLをコピーしました