いつもありがとうございます。
・各ポジションのエントリーは同じ足では1回までは有効
・複数ポジションがあるEAでローソク足1本で1ポジションのみエントリーする方法を教えてください。(ポジションの優先順位はなしの方法)
例:ポジション5がエントリーした場合、他のポジション1-4、6-9は同じ足でエントリーしない。
・さらに、
ローソク足1本で1ポジションのみエントリー 有効化
ローソク足1本で1ポジションのみエントリー 無効化
をオンオフできるようにしたいのです。
是非、よろしくお願いします
| 検索結果がありません。 |
| 検索結果がありません。 |
個人的にはこれでいけるのかな?と思っているのですが、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;}
以下同じパターン
ご提示の「同じ足では各ポジション1回まで」「EA全体でローソク足1本につき1ポジションのみエントリー」の実現方法について、EAつくーる上での設定と、MQLでの考え方の両面から整理してお伝えします。
結論
まず最短での解決策は、EAつくーるの「オプション」→「一本当たりのエントリー回数制限」にチェックを入れることです。
これにより、同一ローソク足の中ではEA全体としてエントリー回数が1回に制限されます。複数の「ポジション[番号]」を用意していても、その足で最初に条件を満たしたポジションだけが約定し、他のポジションは同じ足ではエントリーしません(優先順位の設定不要・自動で先着順になります)。
設定方法(EAつくーる)
1. 基本項目
通常どおり設定します。
2. オプション
3. 取引条件(各ポジション)
各ポジションのエントリー条件はこれまでどおりで構いません。
上記オプションにより、同じ足で2つ目以降のポジションは自動的に抑制されます。
オン/オフの切り替え方法(運用面)
最も簡単:チャート適用時にEAの入力パラメータ(チェックボックス)で 「一本当たりのエントリー回数制限」をオン/オフ してください。
※EAつくーるで作成したEAでは、多くのオプション項目が外部入力のオン/オフとして表示されます。運用中に切り替えたい場合は、EAの「プロパティ」→「パラメータの入力」からチェックを切り替えます。
もし外部入力として切替できない構成で出力されている場合は、
のどちらかをご利用ください。
取引条件だけで実現・切替したい場合(回避策)
オプションを使わず、取引条件側で“この足で誰もまだエントリーしていない”ことを確認する方法です。
各ポジションのエントリー条件の先頭に、全ポジションの「最終エントリー足」≥1本前というガード条件をANDで追加します(0本前=“今の足でエントリー済み”を意味します)。
例:ポジションが1~10個ある場合、全ポジション共通で次の1行群を各ポジションのエントリー条件の先頭に追加します。
これにより、今の足で誰かが先にエントリーしてしまったら他のポジションは入れないため、結果として“ローソク足1本で1ポジションのみ”が実現します。
オン/オフを切り替えたい場合は、このガード条件ブロック全体を一時的に外す/入れる(setファイルで事前に2パターン用意しておく)運用が現実的です。
MQLでの補足(ご提示の「barsX == Bars」について)
EAつくーるで完結するのが最優先ですが、MQLで実装する場合の考え方だけ簡潔に触れます。
「bars1 == Bars || bars2 == Bars …」の横並びのコピペは非推奨です。
足更新を検知する共通フラグ(例:
currentBarとenteredThisBar)を用意し、enteredThisBar=falseにリセットif(!enteredThisBar)を確認し、約定したらenteredThisBar=trueとするのがシンプルで安全です。
これなら1か所のロジックで全ポジションに効くため、コピペや記述漏れのリスクを避けられます。
まとめ
この手順で、例示の「ポジション5が入ったら、同じ足では1~4・6~9は入らない」を優先順位なしの先着順で実現できます。