EMAを使用したエントリー

2025/09/24 11:22
21

はじめまして。
下記のタイミングでエントリーをするようにできますでしょうか。

買いエントリー:移動平均線(EMA)20日 51日 100日 が上から 20日 51日 100日の順番に並んだパーフェクトオーダーの状態が条件。一度、ローソク足が25日か51日にタッチもしくは下抜け後、再び25日または51日を陽線実態で上に抜けたことを終値確定後エントリー。ただし、100日をタッチした場合はエントリーしない。

売りエントリー:移動平均線(EMA)20日 51日 100日 が上から 100日 51日 20日の順番に並んだパーフェクトオーダーの状態が条件。一度、ローソク足が25日か51日にタッチもしくは上抜け後、再び25日または51日を陰線実態で下に抜けたことを終値で確定後エントリー。ただし、100日をタッチした場合はエントリーしない。

コメント

GogoJungle
2025/09/26 16:55

お問い合わせありがとうございます。
ご提示いただいたロジックは EAつくーるの基本設定では完全には表現できませんが、出力されたコードを一部修正することで実現可能です。以下に条件整理とコード修正例をご案内いたします。


条件の整理

買いエントリー

  1. EMA20, EMA51, EMA100 が上から順に
    20日 < 51日 < 100日 の並びになっている(パーフェクトオーダー)。
  2. 一度、ローソク足が EMA25 または EMA51 にタッチ or 下抜け。
  3. その後、再び EMA25 または EMA51 を陽線実体で上抜け、かつ終値確定。
  4. EMA100 にタッチした場合はエントリーしない。

売りエントリー

  1. EMA20, EMA51, EMA100 が上から順に
    100日 > 51日 > 20日 の並びになっている(逆パーフェクトオーダー)。
  2. 一度、ローソク足が EMA25 または EMA51 にタッチ or 上抜け。
  3. その後、再び EMA25 または EMA51 を陰線実体で下抜け、かつ終値確定。
  4. EMA100 にタッチした場合はエントリーしない。

EAつくーるでの準備
  • EAつくーるでは「シグナル条件」を **ダミー条件(例:常に買いシグナル発生)」**にして出力してください。
  • その上で出力コードを MetaEditor で開き、シグナル判定部分を修正します。

コード修正例(MQL4)

1. EMAの取得

OnTick() 内のエントリー判定箇所の上に、EMAを取得するコードを追記します。

int tf = PERIOD_D1; // 日足
double ema20  = iMA(NULL, tf, 20, 0, MODE_EMA, PRICE_CLOSE, 1);
double ema25  = iMA(NULL, tf, 25, 0, MODE_EMA, PRICE_CLOSE, 1);
double ema51  = iMA(NULL, tf, 51, 0, MODE_EMA, PRICE_CLOSE, 1);
double ema100 = iMA(NULL, tf, 100, 0, MODE_EMA, PRICE_CLOSE, 1);

// ローソク足の実体
double close1 = iClose(NULL, tf, 1);
double open1  = iOpen(NULL, tf, 1);

2. シグナル判定の差し替え

EAつくーる出力では通常こうなっています:

int signal = 0;
// --- ここにシグナル判定が出力される ---

これを次のように置き換えます。

int signal = 0;

// --- 買い条件 ---
if(ema20 &gt; ema51 && ema51 &gt; ema100) {  // パーフェクトオーダー(買い)
   // 陽線かつ25 or 51を上抜け
   bool bullish = (close1 &gt; open1);
   bool cross25 = (close1 &gt; ema25 && open1 &lt; ema25);
   bool cross51 = (close1 &gt; ema51 && open1 &lt; ema51);
   bool touch100 = (close1 &lt;= ema100 && high[1] &gt;= ema100);

   if(bullish && (cross25 || cross51) && !touch100) {
      signal = 1; // 買いシグナル
   }
}

// --- 売り条件 ---
if(ema20 &lt; ema51 && ema51 &lt; ema100) {  // パーフェクトオーダー(売り)
   // 陰線かつ25 or 51を下抜け
   bool bearish = (close1 &lt; open1);
   bool cross25 = (close1 &lt; ema25 && open1 &gt; ema25);
   bool cross51 = (close1 &lt; ema51 && open1 &gt; ema51);
   bool touch100 = (close1 &gt;= ema100 && low[1] &lt;= ema100);

   if(bearish && (cross25 || cross51) && !touch100) {
      signal = -1; // 売りシグナル
   }
}

注意点
  • EAつくーる出力コードはデフォルトで「ローソク足の計算位置=1本前」を基準にします。本例も 直近確定足(1本前)」で判定しています。
  • 「一度タッチした後に再度抜けたか」という履歴判定を厳密にするなら、追加でフラグ管理(前回タッチ時にフラグON、再度クロス時にエントリー&フラグOFF)を組み込む必要があります。
  • 時間足は例として日足(PERIOD_D1)にしています。実際に運用する時間足に応じて変更してください。

関連トピックス

検索結果がありません。

ノーコードで誰でも簡単EA開発!MQL言語学習にも使える! | GogoJungle

注目トピックス

検索結果がありません。