EAの決済ロジックだけを改修したい時に整理すること|TP/SL・建値・トレーリング・一括決済
既存EAを使っていて、「エントリー条件はそのままで、決済ロジックだけを変えたい」と考えることがあります。
たとえば、TPやSLの幅を設定式にしたい、建値移動を追加したい、トレーリングストップを変更したい、複数ポジションを一括決済したい、ナンピン中の平均建値決済を調整したい、といった相談です。
ただし、EAの決済ロジックは、単に「利益が出たら閉じる」「損失が出たら閉じる」だけではありません。対象ポジション、Magic Number、BUY / SELL方向、銘柄、TP/SL、建値、トレーリング、部分決済、一括決済、決済優先順位などを分けて整理する必要があります。
また、エントリー条件は変更しないつもりでも、決済条件を変えることで、保有時間、ポジション数、証拠金維持率、バックテスト結果、ログの見え方が変わる場合があります。
この記事では、EAの決済ロジックだけを改修したい時に、開発依頼前に整理したいTP/SL、建値、トレーリング、一括決済、部分決済、対象ポジション、優先順位、ログ、検証条件をまとめます。
なお、この記事はEA改修や開発依頼前の技術確認を目的とした内容です。特定の売買手法、推奨TP/SL、推奨決済条件、推奨ロット、利益保証を行うものではありません。
この記事で確認すること
| 確認項目 | 内容 | 依頼前の確認ポイント |
|---|---|---|
| TP | 利益確定の価格や条件です。 | 固定値、価格差、pips、point、平均建値基準などを確認します。 |
| SL | 損切りの価格や条件です。 | 固定SL、内部SL、口座側SL、緊急停止を分けて確認します。 |
| 建値 | エントリー価格や平均建値を基準にした管理です。 | BE開始条件、移動先、手数料やスプレッドを確認します。 |
| トレーリング | 利益方向へSLを追従させる処理です。 | 開始条件、追従幅、更新タイミングを確認します。 |
| 一括決済 | 複数ポジションをまとめて閉じる処理です。 | 対象範囲、Magic Number、方向、銘柄を確認します。 |
| 決済優先順位 | 複数の決済条件が同時に成立した時の順番です。 | SL、TP、建値、トレーリング、一括決済の優先度を整理します。 |
決済ロジックだけを改修するとは
決済ロジックだけを改修するとは、EAのエントリー判定は大きく変えず、保有中ポジションの閉じ方や管理方法を変更することです。
ただし、EA内部ではエントリー、ポジション管理、リスク制御、決済処理がつながっている場合があります。そのため、決済だけの改修に見えても、実際にはポジション管理やリスク処理の確認が必要になることがあります。
| 改修対象 | 内容 | 注意点 |
|---|---|---|
| TP変更 | 利益確定幅や利益確定条件を変更します。 | 固定TPか内部決済かを分けて確認します。 |
| SL変更 | 損切り幅や損切り条件を変更します。 | 口座側SLとEA内部SLを分けて確認します。 |
| 建値移動 | 一定条件でSLを建値付近へ移動します。 | 手数料、スプレッド、移動先価格を確認します。 |
| トレーリング | 価格が有利に動いた時にSLを追従させます。 | 開始条件、幅、更新間隔を確認します。 |
| 一括決済 | 複数ポジションをまとめて閉じます。 | 対象Magic Numberや方向を確認します。 |
| 部分決済 | ポジションの一部ロットだけを閉じます。 | 最小ロット、ロットステップ、残ロットを確認します。 |
依頼前には、「エントリー条件は変更しない」「決済だけ変更したい」という希望を伝えるだけでなく、どの決済処理をどう変えたいのかを分けて整理します。
エントリーと決済を分けて整理する
EA改修では、エントリー条件と決済条件を分けて考えることが重要です。
エントリーは新規注文を出す条件です。決済は、すでに保有しているポジションを閉じる条件です。どちらもEAの成績に影響しますが、開発上の責務は異なります。
| 区分 | 主な役割 | 依頼前に整理すること |
|---|---|---|
| エントリー | 新規注文を出す条件です。 | 今回は変更するか、変更しないかを明確にします。 |
| ポジション管理 | 保有中ポジションの状態を管理します。 | Magic Number、方向、銘柄、保有数を確認します。 |
| リスク制御 | 最大損失、証拠金、稼働停止などを管理します。 | 決済改修と競合しないか確認します。 |
| 決済 | TP、SL、建値、トレーリング、一括決済などを行います。 | 条件、対象、優先順位を整理します。 |
| 通知・ログ | 決済理由やエラーを記録します。 | close_reasonやmodifyログを確認します。 |
「決済だけ変更したい」場合でも、リスク制御やポジション管理と競合しないかを確認する必要があります。
TP/SLを改修したい場合に整理すること
TPとSLは、EAの決済ロジックで最も相談が多い項目です。
ただし、TP/SLには、口座側へ実際に設定するTP/SLと、EA内部だけで判定して成行決済する内部決済があります。依頼前には、どちらを使いたいのかを確認します。
| 確認項目 | 内容 | 依頼前の注意点 |
|---|---|---|
| 固定TP | エントリー価格から一定距離で利益確定します。 | pips、point、価格差の単位を確認します。 |
| 固定SL | エントリー価格から一定距離で損切りします。 | 口座側SLか内部SLかを確認します。 |
| 平均建値TP | 複数ポジションの平均建値を基準にTPを置きます。 | ナンピンEAでは特に確認が必要です。 |
| 内部決済 | EAが条件成立時に成行決済します。 | MT5上のTP/SL表示とは異なる場合があります。 |
| 銘柄別設定 | GOLD / XAUUSDなどで幅を変える設定です。 | digits、point、tick_valueを確認します。 |
| 時間帯別設定 | 時間帯によってTP/SLを変える設計です。 | サーバー時間基準か確認します。 |
TP/SL幅の推奨値は、この記事では扱いません。依頼時には、現在の設定、変更したい内容、単位、対象銘柄、対象ロジックを整理してください。
建値・ブレイクイーブンを追加したい場合
建値やブレイクイーブンは、一定の含み益が出た後に、SLを建値付近へ移動する処理として使われることがあります。
ただし、建値といっても、エントリー価格ぴったりなのか、スプレッドや手数料を考慮して少し上に置くのか、平均建値を基準にするのかで仕様が変わります。
| 確認項目 | 内容 | 依頼前の注意点 |
|---|---|---|
| BE開始条件 | どの程度有利に動いたら建値移動するかです。 | point、価格差、金額、pipsなどの単位を確認します。 |
| BE移動先 | SLをどこへ移動するかです。 | 建値ぴったりか、少し利益側かを確認します。 |
| 対象方向 | BUY、SELL、両方のどれに適用するかです。 | 方向別に条件が異なる場合があります。 |
| 対象ポジション | 単独ポジションか、複数ポジションかです。 | 平均建値を使うかを確認します。 |
| 1回だけ実行 | 一度だけ建値移動するかです。 | 何度もmodifyを出さない設計が必要です。 |
| ログ出力 | BE実行理由を記録します。 | BE_CHECK、BE_MODIFYなどのログがあると確認しやすくなります。 |
建値機能を依頼する場合は、単に「建値を付けたい」ではなく、開始条件、移動先、対象ポジション、手数料やスプレッドの扱いを整理してください。
トレーリングストップを改修したい場合
トレーリングストップは、価格が有利な方向へ動いた時に、SLを一定間隔で追従させる処理です。
トレーリングには、開始条件、追従幅、更新間隔、更新単位、BUY / SELL別の計算、既存SLとの関係など、整理すべき項目があります。
| 確認項目 | 内容 | 依頼前の注意点 |
|---|---|---|
| 開始条件 | どの程度利益方向へ動いたら開始するかです。 | 価格差、point、pips、金額を確認します。 |
| 追従幅 | 現在価格からどれくらい離してSLを置くかです。 | 銘柄ごとのpoint単位に注意します。 |
| 更新間隔 | 何point動いたら次に更新するかです。 | 過剰なOrderModifyを避ける設計が必要です。 |
| 対象ポジション | どのポジションに適用するかです。 | Magic Number、方向、銘柄を確認します。 |
| 既存SLとの関係 | 現在のSLより不利にしないかです。 | SLを逆方向へ戻さない条件を確認します。 |
| ログ出力 | 更新理由や変更結果を記録します。 | TRAIL_CHECK、TRAIL_MODIFYなどを確認します。 |
トレーリングを改修する場合は、バックテストだけでなく、実運用でのmodify頻度、スプレッド、約定環境も確認が必要です。
一括決済を追加したい場合
一括決済とは、複数のポジションをまとめて閉じる処理です。
一括決済は便利な一方で、対象を誤ると、閉じる予定ではないポジションまで決済してしまう可能性があります。そのため、対象範囲を明確にすることが重要です。
| 確認項目 | 内容 | 依頼前の注意点 |
|---|---|---|
| 対象銘柄 | チャート銘柄だけか、全銘柄かです。 | GOLDだけ、USDJPYだけなどを明確にします。 |
| 対象Magic Number | どのEAのポジションを閉じるかです。 | 手動ポジションや他EAを巻き込まないよう確認します。 |
| 対象方向 | BUYだけ、SELLだけ、両方かです。 | 方向別に一括決済する場合があります。 |
| 対象ロジック | 複数ロジックEAでどのロジックを対象にするかです。 | Logic1だけ、全ロジックなどを確認します。 |
| 決済条件 | 利益合計、損失合計、時間、手動ボタンなどです。 | 条件成立時の優先順位を確認します。 |
| 失敗時の処理 | 一部決済失敗時にどうするかです。 | 再試行、ログ、通知を確認します。 |
一括決済を依頼する場合は、「全部閉じる」ではなく、どの銘柄、どのMagic Number、どの方向、どのロジック、どの条件で閉じるかを整理してください。
部分決済を追加したい場合
部分決済とは、保有ポジションの一部ロットだけを決済する処理です。
部分決済では、最小ロット、ロットステップ、残ロット、口座タイプ、ブローカー仕様を確認する必要があります。
| 確認項目 | 内容 | 依頼前の注意点 |
|---|---|---|
| 決済ロット | 何ロットを閉じるかです。 | 固定ロットか割合指定かを確認します。 |
| 残ロット | 決済後に残すロットです。 | 最小ロット未満にならないか確認します。 |
| ロットステップ | 注文できるロット刻みです。 | 0.01刻み、0.1刻みなどを確認します。 |
| 実行回数 | 1回だけか、複数段階かです。 | 何度も部分決済しない制御が必要です。 |
| 対象ポジション | どのポジションを部分決済するかです。 | 古いポジション、新しいポジション、利益順などを確認します。 |
| ログ出力 | 部分決済の結果を記録します。 | PARTIAL_CLOSE、close_volumeなどを確認します。 |
決済優先順位を整理する
決済ロジック改修で重要なのが、複数の決済条件が同時に成立した時の優先順位です。
たとえば、トレーリング、建値、TP、SL、一括決済、リスク停止が同時に関係する場合、どれを先に処理するかで結果が変わる場合があります。
| 決済条件 | 確認すること | 注意点 |
|---|---|---|
| 強制停止系 | 口座リスク、最大損失、緊急停止などです。 | 通常決済より優先するか確認します。 |
| SL | 損切り条件です。 | 内部SLと口座側SLを分けて確認します。 |
| TP | 利益確定条件です。 | 固定TPと内部TPを分けて確認します。 |
| 建値 | SLを建値付近へ移動する処理です。 | 決済ではなくSL変更の場合があります。 |
| トレーリング | SLを利益方向へ追従させる処理です。 | 建値後に開始するか確認します。 |
| 一括決済 | 複数ポジションをまとめて閉じる処理です。 | 他の決済条件と競合する場合があります。 |
| 手動決済 | ボタンや手動操作による決済です。 | EAの自動決済と競合しないか確認します。 |
依頼前には、「どの条件を最優先にしたいか」ではなく、「仕様上どの順番で処理すべきか」を整理します。これは売買判断ではなく、EA内部の処理順序の確認です。
対象ポジションを明確にする
決済ロジックを改修する場合、どのポジションを対象にするかを明確にする必要があります。
特に、複数EA、複数Magic Number、手動ポジション、コピーEA、ナンピンEAが同じ口座で動いている場合、対象の切り分けが重要です。
| 対象条件 | 確認内容 | 注意点 |
|---|---|---|
| 銘柄 | チャート銘柄だけか、複数銘柄かです。 | Symbol指定を確認します。 |
| Magic Number | どのEAのポジションかを識別します。 | 0番の手動ポジションを含めるか確認します。 |
| 方向 | BUY、SELL、両方のどれかです。 | 方向別に条件が違う場合があります。 |
| ロジック番号 | 複数ロジックEAの内部分類です。 | Magicやコメントで識別する場合があります。 |
| コメント | 注文コメントで識別する場合があります。 | ブローカーやコピーEAで変わる場合があります。 |
| 手動ポジション | 裁量で入れたポジションです。 | EA決済対象に含めるかを明確にします。 |
ログで確認したい項目
決済ロジック改修では、ログ設計も重要です。
決済条件が成立したのか、見送ったのか、注文変更に成功したのか、決済に失敗したのかを確認できるようにしておくと、検証や不具合切り分けが進めやすくなります。
| ログ項目 | 確認内容 | 例 |
|---|---|---|
| close_check | 決済判定を行ったか確認します。 | close_check=Y |
| close_reason | 決済理由を確認します。 | TP、SL、TRAIL、BE、MANUAL |
| be_check | 建値移動条件を確認します。 | be_start、be_lock |
| trail_check | トレーリング条件を確認します。 | trail_start、trail_width |
| modify_result | SL/TP変更の結果を確認します。 | modify_success、modify_fail |
| close_result | 決済注文の結果を確認します。 | close_success、close_fail |
| retcode | MT5の取引結果コードを確認します。 | trade retcode |
| skip_reason | 条件未成立や見送り理由を確認します。 | spread_block、time_block、target_none |
「決済されない」という相談では、決済条件が未成立なのか、条件は成立したが注文に失敗しているのかをログで分けて確認します。
バックテストで確認すること
決済ロジックを改修した場合は、改修前後でバックテスト条件をそろえて確認することが重要です。
ただし、バックテスト結果は将来の結果を保証するものではありません。ここで確認するのは、改修した決済処理が仕様どおり動いているかどうかです。
| 確認項目 | 内容 | 注意点 |
|---|---|---|
| EAバージョン | 改修前後のバージョンを記録します。 | 比較できるように分けて保存します。 |
| setファイル | 同じ設定で比較します。 | 変更したパラメータを記録します。 |
| 検証期間 | 同じ期間で比較します。 | 相場期間の違いを混ぜないようにします。 |
| 銘柄・時間足 | 同じ銘柄と時間足で確認します。 | GOLD / XAUUSDではpointやdigitsも確認します。 |
| 決済理由 | TP、SL、BE、TRAILなどを確認します。 | 取引履歴だけでは分からない場合があります。 |
| 最大DD | 資金の落ち込みを確認します。 | 利益だけで判断しないようにします。 |
| 注文失敗 | 決済失敗やmodify失敗を確認します。 | ログとあわせて確認します。 |
依頼前に用意するとよい資料
決済ロジック改修を依頼する場合は、現在のEA仕様と、変更したい決済仕様を分けて整理します。
| 資料 | 内容 | 注意点 |
|---|---|---|
| 現在のソースコード | mq5、mqhなどのソース一式です。 | ex5だけでは直接改修できない場合があります。 |
| 現在のsetファイル | 今使っている入力設定です。 | 改修前後の比較に使います。 |
| 変更したい決済条件 | TP/SL、建値、トレーリング、一括決済などです。 | 条件、単位、対象を分けて書きます。 |
| 残したい処理 | 変えたくない既存機能です。 | エントリーやリスク制御を残す場合は明記します。 |
| 取引履歴 | 現在の決済結果や問題が分かる履歴です。 | 該当期間やチケットを示すと確認しやすくなります。 |
| Expertsログ | EA側の決済判定やエラーです。 | close_reasonやmodify_resultを確認します。 |
| Journalログ | MT5側の注文、変更、決済結果です。 | retcodeや注文失敗の確認に使います。 |
| バックテスト条件 | 銘柄、時間足、期間、スプレッド、モデルです。 | 改修前後で比較できるようにします。 |
依頼前チェック表
| チェック項目 | 確認内容 |
|---|---|
| エントリー条件を変更するか確認した | 決済だけの改修か、エントリーも含むかを分けます。 |
| TP/SLの種類を整理した | 固定TP/SL、内部決済、平均建値基準などを確認します。 |
| 建値条件を整理した | 開始条件、移動先、対象ポジションを確認します。 |
| トレーリング条件を整理した | 開始条件、追従幅、更新間隔を確認します。 |
| 一括決済の対象を整理した | 銘柄、Magic Number、方向、ロジック番号を確認します。 |
| 部分決済の有無を確認した | 決済ロット、残ロット、最小ロットを確認します。 |
| 決済優先順位を整理した | TP、SL、BE、TRAIL、一括決済、リスク停止の順番を確認します。 |
| 対象ポジションを確認した | 手動ポジションや他EAを含めるかを確認します。 |
| ログで確認したい項目を整理した | close_reason、modify_result、retcodeなどを確認します。 |
| 改修前後の比較条件を整理した | EAバージョン、setファイル、銘柄、時間足、期間を保存します。 |
| ソースコードの有無を確認した | mq5、mqhがあるかを確認します。 |
| 修正範囲を明確にした | コンパイル修正、決済改修、動作確認、バックテストを分けます。 |
FAQ
EAのエントリーはそのままで決済だけ改修できますか?
ソースコードがあり、EA内部の構造上分離できる場合は相談できます。ただし、決済処理がエントリー、リスク制御、ポジション管理と強く結びついている場合は、周辺処理の確認も必要です。
TP/SLだけ変更する場合でもソースコードは必要ですか?
入力設定だけで変更できるEAもありますが、仕様そのものを変更する場合は、通常mq5やmqhなどのソースコードが必要です。ex5だけでは直接改修できない場合があります。
建値機能を追加する時は何を決めればよいですか?
BE開始条件、SLの移動先、対象ポジション、BUY / SELL方向、手数料やスプレッドを考慮するか、1回だけ実行するかを整理します。
トレーリングを追加する時は何を確認しますか?
開始条件、追従幅、更新間隔、対象ポジション、既存SLとの関係、modifyの頻度、ログ出力を確認します。
一括決済で注意することは何ですか?
対象銘柄、Magic Number、BUY / SELL方向、ロジック番号、手動ポジションを含めるかを明確にします。対象を誤ると、閉じる予定ではないポジションまで決済する可能性があります。
決済ロジック改修後は何を確認しますか?
コンパイル、起動、ログ、決済理由、SL/TP変更結果、close_result、retcode、バックテスト、取引履歴を確認します。改修前後で同じ条件を使って比較することが重要です。
関連ページ
EAの決済ロジックを改修する時は、見積依頼前の資料整理に加えて、ナンピンEA、コピーEA、ログ出力との関係も確認しておくと、対象ポジションや決済理由を整理しやすくなります。
| 関連ページ | 確認ポイント |
|---|---|
| EA開発の見積依頼前に整理すること|仕様書・ログ・setファイル・検証条件 | 決済ロジック改修を依頼する前に、仕様書、setファイル、ログ、検証条件を整理します。 |
| ナンピンEAを改修したい時に整理すること|追加条件・倍率・最大本数・停止条件 | 平均建値決済、一括決済、追加ポジション管理を含むナンピンEAの改修時に確認します。 |
| EAのログ出力を増やしたい時に整理すること|Experts・Journal・CSV・通知 | close_reason、modify_result、retcodeなど、決済理由や注文結果のログ確認に使います。 |
| コピーEAの同期ズレを相談する前に整理すること|コピー元・コピー先・ロット・Magic Number | コピーEAで決済タイミングや対象ポジションがズレる場合の確認に使います。 |
まとめ
EAの決済ロジックだけを改修したい場合は、エントリー条件、ポジション管理、リスク制御、決済処理を分けて整理することが重要です。
TP/SL、建値、トレーリング、一括決済、部分決済は、それぞれ確認すべき条件が異なります。特に、対象銘柄、Magic Number、BUY / SELL方向、ロジック番号、手動ポジションを含めるかどうかは、依頼前に明確にしてください。
また、複数の決済条件が同時に成立する場合は、決済優先順位を整理する必要があります。SL、TP、建値、トレーリング、一括決済、リスク停止、手動決済が競合しないように仕様を分けて確認します。
改修後は、コンパイル確認だけでなく、起動ログ、決済理由、SL/TP変更結果、close_result、retcode、取引履歴、バックテスト条件を確認し、改修前後の挙動を比較してください。
