複数ポジションのEAで足1本1エントリーのみにする

EAつくーる
希望の星チャート
2025/10/21 13:09
26

いつもありがとうございます。

・各ポジションのエントリーは同じ足では1回までは有効
・複数ポジションがあるEAでローソク足1本で1ポジションのみエントリーする方法を教えてください。(ポジションの優先順位はなしの方法)

例:ポジション5がエントリーした場合、他のポジション1-4、6-9は同じ足でエントリーしない。

・さらに、
ローソク足1本で1ポジションのみエントリー 有効化
ローソク足1本で1ポジションのみエントリー 無効化
をオンオフできるようにしたいのです。

是非、よろしくお願いします

コメント

希望の星チャート
2025/10/21 15:15

個人的にはこれでいけるのかな?と思っているのですが、bars1 == Bars ||bars2 == Barsの部分が全部コピペでよいのか?というあたりが不安です。
正しい記載方法がありましたら是非よろしくお願いします

☆ポジション10個の場合

input bool candle1position1= true;
ポジション1
if(bars1 == Bars) signal = 0;
f(candle1position1 == true) {if(bars1 == Bars ||bars2 == Bars || bars3 == Bars || bars4 == Bars || bars5 == Bars || bars6 == Bars || bars7 == Bars || bars8 == Bars || bars9 == Bars || bars10 == Bars) signal = 0;}

ポジション2
if(bars2 == Bars) signal = 0;
f(candle1position1 == true) {if(bars1 == Bars ||bars2 == Bars || bars3 == Bars || bars4 == Bars || bars5 == Bars || bars6 == Bars || bars7 == Bars || bars8 == Bars || bars9 == Bars || bars10 == Bars) signal = 0;}

ポジション3
if(bars3 == Bars) signal = 0;
f(candle1position1 == true) {if(bars1 == Bars ||bars2 == Bars || bars3 == Bars || bars4 == Bars || bars5 == Bars || bars6 == Bars || bars7 == Bars || bars8 == Bars || bars9 == Bars || bars10 == Bars) signal = 0;}

以下同じパターン

GogoJungle
2025/10/23 16:19

ご提示の「同じ足では各ポジション1回まで」「EA全体でローソク足1本につき1ポジションのみエントリー」の実現方法について、EAつくーる上での設定と、MQLでの考え方の両面から整理してお伝えします。

結論

まず最短での解決策は、EAつくーるの「オプション」→「一本当たりのエントリー回数制限」にチェックを入れることです。
これにより、同一ローソク足の中ではEA全体としてエントリー回数が1回に制限されます。複数の「ポジション[番号]」を用意していても、その足で最初に条件を満たしたポジションだけが約定し、他のポジションは同じ足ではエントリーしません(優先順位の設定不要・自動で先着順になります)。


設定方法(EAつくーる)

1. 基本項目

通常どおり設定します。

  • ロット数:任意
  • 損切り・利食い:任意(ナンピン/ピラミッディングを使う場合は0)
  • スリッページ:任意

2. オプション

  • 一本当たりのエントリー回数制限:チェック(これで「ローソク足1本=EA全体で1回のみ」になります)

併用上の注意

  • ナンピン/ピラミッディングと同時使用すると、同一足内での追加エントリーが制限されるため、設計意図とズレるケースがあります。これらのオプションを使う運用では、本オプションは原則オフを推奨します。
  • 「トレーリングストップ」「建値ストップ」等との直接の競合はありませんが、「同一足で2回目以降の新規エントリーが出ない」という制限だけは常に効きます。

3. 取引条件(各ポジション)

各ポジションのエントリー条件はこれまでどおりで構いません。
上記オプションにより、同じ足で2つ目以降のポジションは自動的に抑制されます。


オン/オフの切り替え方法(運用面)
  • 最も簡単:チャート適用時にEAの入力パラメータ(チェックボックス)で 「一本当たりのエントリー回数制限」をオン/オフ してください。
    ※EAつくーるで作成したEAでは、多くのオプション項目が外部入力のオン/オフとして表示されます。運用中に切り替えたい場合は、EAの「プロパティ」→「パラメータの入力」からチェックを切り替えます。

  • もし外部入力として切替できない構成で出力されている場合は、

    1. チェック有り版/無し版の2つのEAを作成して使い分ける、
    2. 次の「取引条件での回避策」を使う、
      のどちらかをご利用ください。

取引条件だけで実現・切替したい場合(回避策)

オプションを使わず、取引条件側で“この足で誰もまだエントリーしていない”ことを確認する方法です。
各ポジションのエントリー条件の先頭に、全ポジションの「最終エントリー足」≥1本前というガード条件をANDで追加します(0本前=“今の足でエントリー済み”を意味します)。

例:ポジションが1~10個ある場合、全ポジション共通で次の1行群を各ポジションのエントリー条件の先頭に追加します。

最終エントリー足(ポジション:1) >= 数値(値:1)
AND
最終エントリー足(ポジション:2) >= 数値(値:1)
AND
最終エントリー足(ポジション:3) >= 数値(値:1)
AND
…
AND
最終エントリー足(ポジション:10) >= 数値(値:1)

これにより、今の足で誰かが先にエントリーしてしまったら他のポジションは入れないため、結果として“ローソク足1本で1ポジションのみ”が実現します。
オン/オフを切り替えたい場合は、このガード条件ブロック全体を一時的に外す/入れる(setファイルで事前に2パターン用意しておく)運用が現実的です。

こうなっていませんか?(よくあるつまずき)

  • ORでつないでしまう:上記ガードはANDで全て満たす必要があります。どれか1つでも「0本前(=今の足でエントリー済み)」があればブロックしたいので、ANDが正解です。
  • 計算位置の指定漏れ:本項目は内部的に“本数”で返るため、特に追加設定は不要ですが、他の条件と混在させる時は**「計算位置:0本前」**の前提を意識しておくと混乱が減ります。

MQLでの補足(ご提示の「barsX == Bars」について)

EAつくーるで完結するのが最優先ですが、MQLで実装する場合の考え方だけ簡潔に触れます。

  • 「bars1 == Bars || bars2 == Bars …」の横並びのコピペは非推奨です。
    足更新を検知する共通フラグ(例:currentBarenteredThisBar)を用意し、

    • バーが変わったら enteredThisBar=false にリセット
    • 各ポジションのエントリー直前で if(!enteredThisBar) を確認し、約定したら enteredThisBar=true
      とするのがシンプルで安全です。
      これなら1か所のロジックで全ポジションに効くため、コピペや記述漏れのリスクを避けられます。

まとめ
  • 最優先案:オプションの 「一本当たりのエントリー回数制限」 にチェック → EA全体で同一足のエントリーは自動的に1回のみ。
  • 切替:運用時に外部入力のチェックをオン/オフ。もし外部入力が出ていない場合は、チェック有/無のEAを2本用意するか、下記回避策を使用。
  • 回避策(条件で制御):各ポジションのエントリー条件の先頭に 「全ポジションの最終エントリー足 >= 1」 をANDで追加。
  • ナンピン/ピラミッディング併用時は、本制限と相性が悪いため設計意図を再確認のうえ使用可否を判断。

この手順で、例示の「ポジション5が入ったら、同じ足では1~4・6~9は入らない」を優先順位なしの先着順で実現できます。

関連トピックス

検索結果がありません。

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

注目トピックス

検索結果がありません。