勝手に決済されます。

2025/08/14 04:21
22

![スクリーンショット 2025-08-14 041506.png](スクリーンショット 2025-08-14 041506.png)お世話になります。
EAつくーるにて作成したEAが頻繁に謎のExitをするようになったので
決済条件を全て削除し、Entry専用にしましたが、買ってにExitしてしまいます。
初期設定もパラメータからも、TP/SLの設定は0.0にしているので不思議です。
なお、添付画像のエキスパートログで、該当のentry注文にSLが指定されているのは、建値決済の+20.0pips以上になったら建値+3pipsとオプションを使用しています。
[スクリーンショット 2025-08-14 041553.png](スクリーンショット 2025-08-14 041553.png)

コメント

GogoJungle
2025/08/14 15:55

「決済条件をすべて削除したのに、ポジションが勝手にクローズされる。TP/SLは0だが、エキスパートログにはSL付きで約定し、その後Exitしている」というご質問ですね。

まず結論からお伝えします。
今回の「謎のExit」は オプションの建値ストップ(=ブレークイーブン) が有効なために、 エントリー後に自動でSLが建値(+補正)へ移動し、押し目/戻りでそのSLに当たって決済 されているのが原因です。EAつくーるで「決済条件」を削除しても、 オプションによる自動決済系(建値ストップ/トレーリング/指定時刻決済/一定時間経過決済/全決済/ドテン)は独立して動作 します。


まず確認してほしい「ありがちな原因」(こうなっていませんか?)

  1. 建値ストップが有効
  • エキスパートログに「SL が設定された」痕跡があるとのことなので、ほぼこれです。
  • 設定例:「間隔(pips): 20」「補正値: 3」→買いの場合、 +20pips到達でSLが建値+3pips になり、 3pipsの戻し で必ず決済されます。
  1. ドテン機能が有効
  • 反対方向シグナル発生時に 保有ポジションを決済→反対エントリー します。
  • ご提示コードのエントリー条件は「iClose==iClose」で常時買いシグナルですが、もし売りロジックが別ポジションで生きている/過去の設定が混在すると意図せずクローズが起きます。
  1. 指定時刻決済/一定時間経過決済/全決済が有効
  • いずれも 決済条件に関係なくポジションをクローズ します。
  • 「全決済」で マジックナンバー未入力 だと、 すべてのポジションを巻き込んで決済 されます。
  1. 週末取引停止と決済時刻
  • 週末前の 指定時刻以降は新規停止 ですが、設定の仕方によっては その時刻にクローズ と混同されがちです(「指定時刻決済」と別機能です)。
  1. 口座側のストップアウト
  • 強制ロスカット(証拠金不足)でもクローズされます。ログにブローカー側メッセージが出ます。

「エントリー専用(自動決済を一切しない)」にする設定手順

EAつくーるの画面で次を徹底してください。

  • 基本項目

  • ロット数:任意

  • 損切り:0

  • 利食い:0

  • スリッページ:任意

  • オプション (すべて「使わない」)

  • 建値ストップ: チェックを外す

  • トレーリングストップ(固定幅/MA/高値安値/ATR): すべて未チェック

  • 指定時刻決済: 未チェック

  • 一定時間経過決済: 未チェック

  • 全決済: 未チェック (※マジック未指定は全ポジション決済になるので要注意)

  • ドテン機能: 未チェック

  • 週末取引停止: 必要なければ未チェック

  • 取引条件

  • 「決済条件」は 何も置かない (削除済みでOK)

  • 「買い/売りエントリー」だけを残す

これで、 EA自体はポジションをクローズしません (ブローカー強制決済を除く)。


それでも建値ストップを使いたい場合の「頻繁なExit」対策

  • 補正値を小さくする/0にする

  • 例:買いなら「補正値: 0」にすると、 建値ちょうど にSLが置かれ、 微小な戻しでは利益確定にならない (損益0で逃がす)運用ができます。

  • 間隔(pips)を大きく

  • 20→30~50pipsなどにして、 小さな押し目/戻りではSL移動を発動させない

  • トレーリング系と併用しない

  • 設定がぶつかると SLが狭くなりがち です(EAつくーるの仕様上、同時併用は非推奨)。


参考:今回の生成コードが建値ストップでSLを動かす箇所

  • OnTick()

    if(isBreakEven == true) BreakEven(BreakEvenValue, CorrectionValue, Magic1);
    
  • BreakEven() 内で SLを建値±補正へ移動 しています。

    • 買い:new_sl_buy = OrderOpenPrice() + PipsToPrice(correction_value);
    • 売り:new_sl_sell = OrderOpenPrice() - PipsToPrice(correction_value);
    • 価格が「間隔(pips)」以上進んだら setTPSL() でSLを更新。

EAつくーるの機能のみでは止まらないとき(コードで完全に無効化したい場合)

EAつくーるの機能のみで 建値ストップをオフ にできるのが基本ですが、 出力後コード側で確実に殺す ことも可能です。最小変更で「ブレークイーブン呼び出しを条件付きで無効化」する例を提示します。

EAつくーるの機能のみでは完全に意図通りに制御できないケースが残る場合がありますが、出力されたコードを改造することで実現可能であると存じます。
修正方法を考えてみましたので提案させていただきます。

準備

  • EAつくーる側で 建値ストップのチェックを外す (まずは設定で無効化を試す)
  • それでも挙動が気になる場合、ダウンロードした .mq4 を MetaEditor で開きます。

変更点その1:OnTick からの呼び出しをガード

if(isBreakEven == true) BreakEven(...);」を検索して、 一時的に無効化 または 新しい入力フラグ で制御します。

【修正前】

if(isBreakEven == true) BreakEven(BreakEvenValue, CorrectionValue, Magic1);

【修正後(呼び出しを完全停止)】

// if(isBreakEven == true) BreakEven(BreakEvenValue, CorrectionValue, Magic1);

【修正後(別フラグで制御したい場合)】

  1. 先頭の input 群に追加:
input bool UseAutoExit = false; // 自動決済を使うか
  1. OnTick の該当行を置換:
if(isBreakEven == true && UseAutoExit) BreakEven(BreakEvenValue, CorrectionValue, Magic1);

→ これで UseAutoExit=false の限り、 建値ストップは作動しません。

変更点その2(任意):BreakEven 内の「より不利なSL更新の抑止」

売り側は OrderStopLoss()==0 のときにも設定しますが、 既存SLより不利になる更新を拒否 すると、他のオプションと併用しても過剰に狭くなりにくくなります。「void BreakEven( を検索して、売り側条件を少しだけ堅くします。

【修正前(抜粋)】

else if(OrderType() == OP_SELL) {
  if(OrderOpenPrice() - PipsToPrice(break_even_value) >= Ask &&
     (new_sl_sell < OrderStopLoss() || OrderStopLoss() == 0)) {
    setTPSL(0, new_sl_sell, OrderTicket());
  }
}

【修正後(抜粋)】

else if(OrderType() == OP_SELL) {
  if(OrderOpenPrice() - PipsToPrice(break_even_value) >= Ask) {
    // 既存SLより不利(=現在より下)にはしない
    if(OrderStopLoss() == 0 || new_sl_sell > OrderStopLoss()) {
      setTPSL(0, new_sl_sell, OrderTicket());
    }
  }
}

ポイント: 売りのSLは「上にあるほど不利、下にあるほど有利」 です。
上記の条件で「既存より不利な更新」を防ぎます(買い側は元から > 比較で不利更新を抑制)。


仕上げのチェックリスト

  • EAつくーる「オプション」

    • 建値ストップ: 未チェック (または「間隔」を大きく、「補正値:0」)
    • トレーリング系: すべて未チェック
    • 指定時刻決済/一定時間経過決済/全決済/ドテン: 未チェック
  • エキスパートログ

    • OrderModify による SL 更新ログが止まる(無効化後)
    • ブローカー側エラー(invalid stops 145 など)が出ていないか確認
  • それでもクローズされる場合

    • 口座履歴の クローズ理由 (SL/TP/StopOut/手動)を確認
    • 「全決済」や他EAの影響(マジックナンバーの被り)を確認

上記で「勝手にExit」は収まるはずです。特に今回は 建値ストップ(間隔20/補正+3)小さな戻しで必ず引っかかる 設定でしたので、 オフにする間隔・補正の見直し をご検討ください。

関連トピックス

検索結果がありません。

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

注目トピックス

検索結果がありません。