建値ストップについて

2025/11/16 16:04
25

お世話になります。
建値ストップについての質問です。
ポジション1、ロング
ポジション2、ショート
ポジション3、ロング追加ポジション
ポジション4、ショート追加ポジション

の設定で作成しています。ポジション1,2はナンピンシステム
ポジション3,4はカスタム設定でロット、SLは設定しています。

ここで建値ストップをポジション3,4だけ設定したいのですが、設定するとナンピンしているポジション1,2も中途半端なところで建値が入ってしまいます。

ポジション3,4だけ建値ストップさせる方法はありますか?
仕様でできないようでしたら追加コードなど教えていただけると幸いです。

データ.zip

コメント

GogoJungle
2025/11/19 20:50

建値ストップを「ポジション3・4だけ」に効かせたい、というご質問ですね。

結論からお伝えすると、現在のEAつくーるの仕様上、
「建値ストップ」オプションを特定のポジション(例:ポジション3・4)だけに限定して適用することはできません。
建値ストップを有効にすると、同じEAが持っている全ポジション(全マジックナンバー)が対象になります。

そのため、ナンピン用のポジション1・2にも建値が入ってしまう挙動は、仕様通りの動きになります。


なぜポジション1・2にも建値が入ってしまうのか

ご質問の設定は次のようなイメージだと思います。

  • ポジション1:ロング(ナンピンあり)
  • ポジション2:ショート(ナンピンあり)
  • ポジション3:ロング(追加ポジション、カスタムロット&SL設定)
  • ポジション4:ショート(追加ポジション、カスタムロット&SL設定)
  • 「オプション」画面で「建値ストップ」にチェックを入れている

EAつくーるの「オプション」で設定する建値ストップは、

  • 「このEAが持っているポジション全体」を見て処理する
    (ポジション1〜4をまとめて対象にする)

という作りになっており、

  • ポジション3・4のために建値ストップをONにしても
  • 同じEAが持っているポジション1・2(ナンピン中)も判定対象になり、
    一定の利益が出たタイミングでSLが建値に移動してしまう

という挙動になります。

「ポジションごとに建値ストップのON/OFFを切り替える項目」は、現状の設定画面には用意されていません。


EAつくーるだけでできる回避策

EAつくーるの機能だけでできる現実的な回避策としては、
「EAを役割ごとに分割する」方法がいちばんシンプルです。

1. EAを2つに分ける

1つ目のEA(ナンピン専用)

  • ポジション1:ロング(ナンピン)

  • ポジション2:ショート(ナンピン)

  • 「オプション」では「建値ストップ」を使わない

  • ナンピンオプションのみ使用

    • 基本項目の「損切り」「利食い」は0にしておく(ナンピン仕様に合わせる)

2つ目のEA(追加ポジション+建値専用)

  • ポジション1:ロング(※ここで、元のポジション3のロジックを再現)

  • ポジション2:ショート(※ここで、元のポジション4のロジックを再現)

  • 必要に応じてナンピンは使わず、カスタムロットとSLを設定

  • 「オプション」で「建値ストップ」にチェックを入れる

    • 間隔(例:20pips)
    • 補正値(必要に応じて0〜数pips)

この2つのEAを、同じ通貨ペア・同じ時間足のチャートにそれぞれ適用します。

EAつくーるでは、

  • EA内の「ポジション番号」と「マジックナンバー」が1対1で対応しています

    • ポジション1 → マジック1
    • ポジション2 → マジック2

という形になるため、EAを分けることで、

  • EA A(ナンピン用):マジック1・2、建値ストップなし
  • EA B(建値用):マジック1・2、建値ストップあり

というように役割を分けて運用できます。
(EAごとにマジックナンバーが独立しているため、互いに干渉しません。)

※「同じチャートに複数EAを載せると不安」という場合は、
 同一通貨ペアで時間足を分ける(例:ナンピンEAはM15、建値EAはM5)という運用も一案ですが、
 その場合はロジックの前提が変わってしまう点に注意が必要です。


MQLでの補足(カスタム編集)について

もしどうしても「1つのEAの中で、ポジション3・4にだけ建値ストップをかけたい」という場合は、
EAつくーるで生成されたmq4/mq5ファイルをMetaEditorで開き、
建値ストップの処理部分をマジックナンバーで絞り込む必要があります。

イメージとしては、EAのコードの中で

  • 注文やポジションをループしている「建値ストップ」用のブロックを探す

    • コメントで「// 建値ストップ」などと書かれている部分にまとまっていることが多いです
  • そのループの中で
    「マジックナンバーが3または4のポジションだけ処理する」
    という条件を追加する

という形です。

MT4のイメージ(概念図・擬似コード):

for (int i = OrdersTotal() - 1; i >= 0; i--) {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;

    // ここでポジション番号ごとのマジックを判定
    int magic = OrderMagicNumber();

    // ポジション3・4だけ建値ストップを適用する
    if (magic != 3 && magic != 4) {
        continue; // 1・2のポジションはスキップ
    }

    // ここに、EAつくーるが自動生成した建値ストップの処理が入る
}

MT5でも考え方は同じで、「PositionGetInteger(POSITION_MAGIC)」などでマジックを取得して
3と4だけを対象に建値処理を行う形になります。

ただし、

  • EAつくーるのコード構造にある程度慣れている必要がある
  • 一度手作業でコードを編集すると、そのEAはEAつくーるの画面から再出力して上書きできない(再出力すると編集内容が消える)

といった点があるため、初心者〜中級者の方には、

  • まずは「EAを役割ごとに分ける」運用(前述の2EA方式)

をおすすめします。


まとめ
  • 建値ストップはEAつくーるの「オプション」で一括設定する仕様のため、
    「ポジション3・4だけ建値ストップを適用し、ポジション1・2(ナンピン)には適用しない」という制御は、
    EAつくーるの設定画面だけでは行えません。

  • EAつくーるだけで対応する場合は

    • ナンピン用EA(建値ストップなし)
    • 建値ストップ用EA(追加ポジションのみ)
      の2つにロジックを分けて運用する方法が現実的です。
  • 1つのEA内でどうしても実現したい場合は、
    生成されたmq4/mq5をMetaEditorで開き、建値ストップ処理に
    「マジックナンバー3・4のみ対象」という条件を追加する必要があります。

関連トピックス

検索結果がありません。

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

注目トピックス

検索結果がありません。