技術講座

MQL5 EA設計パターン完全ガイド|signal・execution・risk・exitの責務分離

EAファンクラブ

MQL5でEAを開発する時は、エントリー条件だけを作ればよいわけではありません。

EAには、条件判定、注文処理、リスク確認、決済処理、認証、外部制御、通知、画面表示、ログ出力、バックテスト確認など、複数の責務があります。

これらを1つの巨大なロジックにまとめてしまうと、どこで判定され、どこで注文され、どこで停止し、どこで通知されたのかが分かりにくくなります。結果として、検証、改修、販売後サポート、不具合調査が難しくなります。

この記事では、MQL5 EAを長期保守しやすくするために、signal、execution、risk、exit、auth、external control、notification、UI / panelを分けて考える設計パターンを整理します。

このページは、MT5 / MQL5の技術学習記事です。投資判断、売買タイミング、利益保証、勝率保証、推奨ロット、推奨銘柄、推奨エントリー、特定ブローカー誘導を目的とした内容ではありません。

MQL5 EAを設計パターンで考える理由

EA開発では、最初に「どんな条件でエントリーするか」に目が行きやすくなります。

しかし、実務上のEAは、エントリー条件だけで成立するものではありません。注文できる状態か、ロットが正しいか、同じポジションを重複して持たないか、損切りや決済条件をどう扱うか、外部制御や通知をどう扱うかまで確認する必要があります。

設計対象主な役割分けて考える理由
signalエントリー候補の判定条件成立と注文実行を混同しないため
execution注文・決済・変更リクエスト取引サーバー応答やretcodeを追跡するため
riskロット、最大数、停止条件、資金制約signal成立後でも取引を止める場合があるため
exit利確、損切り、トレール、時間決済エントリー条件とは別に常時管理するため
notificationメール、Push、Discord、外部通知通知成功と注文成功を混同しないため
UI / panel状態表示、ボタン、ラベル、パネル表示と判定ロジックを分けるため

EAを設計パターンで整理すると、仕様変更や不具合確認の時に、どの層を見ればよいかが明確になります。

1枚の巨大ロジックにしない理由

EAの処理を1つの大きな関数や1つの条件式にまとめると、最初は分かりやすく見える場合があります。

しかし、機能追加が進むと、エントリー条件、時間制御、スプレッド制御、ポジション数制御、外部停止、通知、ログ、決済処理が混ざり、原因切り分けが難しくなります。

状態起きやすい問題改善方針
signalとexecutionが混在条件成立と注文失敗の区別がつかない判定結果と注文結果を別ログにする
riskとexitが混在新規停止と既存決済停止を混同する新規エントリー制限と保有管理を分ける
通知と注文が混在通知失敗でEA本体も失敗したように見えるnotificationは独立した層にする
UIと判定が混在表示更新の不具合が売買ロジックに影響する表示用状態と判定用状態を分ける
ログが不足どの条件で止まったか分からないGATE、SCORE、execution、riskを分けて記録する

巨大ロジックを避ける目的は、コードを細かく分けること自体ではありません。検証、改修、サポート時に、責務とログを追いやすくすることです。

signal / execution / risk / exitの全体像

EAの中心になるのは、signal、execution、risk、exitの4層です。

signalは「候補を出す層」、executionは「注文を出す層」、riskは「許可・停止・制限を見る層」、exitは「保有後の終了条件を管理する層」です。

役割主な入力主な出力
signalエントリー候補を判定する価格、インジ値、時間、状態BUY候補、SELL候補、見送り理由
execution注文・決済リクエストを処理する方向、ロット、価格、SL/TP、Magic注文結果、retcode、ticket、error
risk新規許可、制限、停止条件を確認するロット、ポジション数、証拠金、損益、外部停止許可、ブロック、警告
exit保有ポジションの終了条件を管理するポジション、損益、時間、トレール、決済条件決済候補、SL変更、TP変更、保有継続

signalが成立しても、riskで止まることがあります。riskが許可しても、executionで注文が失敗することがあります。ポジションを保有した後は、signalではなくexitが中心になります。

GATE / SCORE / SPECIAL FILTERS / ENTRYの考え方

signal層を整理する時は、GATE、SCORE、SPECIAL FILTERS、ENTRYを分けると確認しやすくなります。

GATEは通過条件、SCOREは評価点、SPECIAL FILTERSは例外的な除外条件、ENTRYは最終的なエントリー候補です。

分類役割ログで確認すること
GATE必須通過条件時間内、spread許容、必要データありどのGATEで止まったか
SCORE条件の強さや優先度を評価トレンド一致、複数条件一致、勢い合計点、項目別点数
SPECIAL FILTERS通常条件とは別の除外条件急変、直近決済直後、外部停止、イベント前例外フィルターの発動有無
ENTRY最終的な候補出力BUY候補、SELL候補、見送り最終方向、理由、次層へ渡した内容

GATEで止まった場合は、SCOREを計算しない設計にすることがあります。SCOREが高くても、SPECIAL FILTERSで止まることがあります。

このように分けると、「条件は良かったのになぜ入らなかったのか」をログで追いやすくなります。

TREND / REVERSE / RANGEの役割差

EAのsignal設計では、TREND、REVERSE、RANGEを同じ条件として扱わないことが重要です。

それぞれのモードは、見ている相場状態、判定条件、見送り理由、exitとの関係が異なります。

モード主な役割確認する条件注意点
TREND方向性に沿った候補を探す上位足方向、移動平均、価格位置、勢い逆張り条件と混同しない
REVERSE反転候補を探す行き過ぎ、反転サイン、乖離、ローソク足逆張りのリスク制御を明確にする
RANGE範囲内の状態を確認する高値安値、ボラティリティ、上下限、中心線ブレイク時の扱いを決める

TREND、REVERSE、RANGEを分ける目的は、どれが有利かを決めることではありません。EAの判定構造を整理し、検証時にどのモードが何を判定したかを追えるようにするためです。

signal層で扱うこと

signal層は、エントリー候補を作る層です。

ここでは、価格、インジケーター値、時刻、ローソク足、スコア、GATE、フィルターなどを確認します。ただし、注文処理は行いません。

signalで扱う項目内容扱わないもの
価格条件終値、高値、安値、現在価格、価格位置注文送信
インジ条件CopyBuffer値、iCustom値、状態値ロット確定
時間条件稼働時間、曜日、サーバー時間決済実行
GATE / SCORE通過条件と点数化取引サーバー応答処理
見送り理由条件未成立、データ不足、方向不一致通知の送信成否

signal層の出力は、BUY候補、SELL候補、NO ENTRY、見送り理由などにします。

signal層が注文まで行ってしまうと、後からriskやexecutionの失敗と混ざるため、検証が難しくなります。

execution層で扱うこと

execution層は、注文、決済、変更リクエストを実際に処理する層です。

signalがBUY候補を出したとしても、executionが必ず注文を成功させるとは限りません。取引サーバー、ロット条件、価格条件、自動売買許可、接続状態などで失敗することがあります。

executionで扱う項目確認することログに残すこと
注文方向BUY / SELL / CLOSE / MODIFYrequest action、type
ロット最小ロット、最大ロット、volume steprequested lot、normalized lot
価格Bid、Ask、SL、TPprice、sl、tp、digits
注文結果retcode、order、deal、commentTRADE_RETCODE、GetLastError
失敗時処理再試行、見送り、通知retry count、fail reason

execution層では、成功時だけでなく失敗時のログが重要です。

注文関連エラーやretcodeの確認は、MQL5エラーコード辞典も参考にしてください。

risk層で扱うこと

risk層は、EAの新規処理や運用制限を確認する層です。

ここで重要なのは、risk層を「必ず損失を防ぐ仕組み」と誤解しないことです。risk層は、ロット、ポジション数、証拠金、外部停止、日次制限などを確認し、EAの動作条件を整理するための層です。

risk項目確認する内容注意点
ロット制御最小ロット、最大ロット、volume step銘柄仕様に合わせて丸める
ポジション数最大保有数、方向別数、Magic別数Hedging / Nettingを確認する
証拠金確認必要証拠金、余力、注文可能性注文成功を保証するものではない
日次制限日次損益、回数、停止条件サーバー日付基準を確認する
外部停止シート、ファイル、手動ボタン、認証状態新規停止と保有管理を分ける

risk層で新規エントリーを止める場合でも、既存ポジションのexitや保護処理は継続する設計が必要になることがあります。

exit層で扱うこと

exit層は、保有ポジションをどう終了するかを管理する層です。

エントリー条件と決済条件は別責務です。エントリー条件が出なくなったから決済するのか、別の決済条件で終了するのかを仕様として明確にします。

exit項目内容確認すること
固定SL / TP注文時または後から設定するSL/TP価格距離、stops level、digits
トレール利益方向にSLを移動する処理開始条件、幅、更新頻度
時間決済一定時間後や指定時刻で終了する処理サーバー時間か日本時間か
反対条件決済逆方向signalや条件変化で終了する処理signalとexitの接続方法
緊急決済外部停止、異常検知、手動指示優先順位とログ

exit層は、保有後に常時確認されることが多い層です。新規エントリーが停止されている状態でも、exit層を止めるべきかどうかは慎重に設計します。

auth層で扱うこと

auth層は、EAの利用許可や認証状態を確認する層です。

販売用や配布用のEAでは、ライセンス、口座番号、期限、外部認証などを扱う場合があります。

auth項目確認すること注意点
利用許可利用可能な状態か認証失敗時の挙動を明確にする
口座確認許可口座、デモ/リアル区分など口座番号の全桁をログに出さない
期限確認利用期限、更新状態日付基準を明確にする
外部認証WebRequest、CSV、API照合tokenやURLを本文・ログに出さない

auth層は、signalやexecutionとは分けて確認します。認証失敗時に新規エントリーを止めるのか、表示だけ止めるのか、保有ポジションのexitを継続するのかを仕様化します。

external control層で扱うこと

external control層は、EAの外部制御を扱う層です。

外部CSV、Google Sheets、設定ファイル、WebRequest、管理用パネル、手動ボタンなどで、EAの動作を外部から制御する場合に関係します。

外部制御内容確認すること
外部シート停止、方向、時間帯、設定値などを取得する読み込み周期、失敗時の扱い
CSV / ファイルローカル設定や状態を読むFiles / Common、文字コード、更新タイミング
手動ボタンON/OFF、許可、停止、リセットruntime状態とinput初期値を混同しない
外部API認証、状態取得、通知先確認timeout、失敗時、機密情報

外部制御は便利ですが、読み込み失敗時の挙動を必ず決めておく必要があります。

外部連携や通知の安全管理は、MT5外部連携・通知セキュリティガイドも参考にしてください。

notification層で扱うこと

notification層は、EAの状態やイベントを利用者へ知らせる層です。

通知は、signal成立、注文成功、注文失敗、決済、エラー、外部連携失敗などに使われることがあります。

通知対象内容注意点
signal通知条件成立や候補発生を通知する注文実行と混同しない
execution通知注文成功・失敗を通知するretcodeやerrorを確認する
exit通知決済やSL/TP変更を通知する同一イベント重複通知を防ぐ
error通知WebRequest失敗、認証失敗、データ不足など通知しすぎないよう抑制する

通知が届いたことと、注文が成功したことは別です。通知はnotification層、注文結果はexecution層で確認します。

UI / panel層で扱うこと

UI / panel層は、EAの状態をチャート上に表示する層です。

パネル、ボタン、ラベル、ライン、ステータス表示などは、利用者にとって便利ですが、判定ロジックと混ぜると不具合調査が難しくなります。

UI要素役割注意点
ステータス表示EA状態、認証、稼働状態を表示する表示遅延と内部状態を分ける
ボタン手動ON/OFF、リセット、許可操作runtime状態として扱う
ライン・ラベル価格、SL、TP、サイン位置を表示する表示用オブジェクトと判定値を混同しない
パネル複数情報をまとめて表示する描画負荷と更新頻度を確認する

UI層の不具合でEA本体が止まらないように、表示系と判定系は分けて設計します。

input初期値とruntime状態を分ける

EA設計で混同しやすいものに、input初期値とruntime状態があります。

inputはEAを起動する時の設定値です。runtime状態は、EA稼働中に変わる内部状態やボタン操作後の状態です。

分類意味注意点
input初期値起動時に読み込む設定ロット、時間帯、フィルターON/OFF途中で勝手に変えたように見せない
runtime状態稼働中に変わる状態ボタンON/OFF、現在の認証状態、一時停止再起動時に保持するか決める
推奨値説明用・マニュアル用の値確認しやすい標準値保証表現にしない
検証用値テストしやすくする値ログON、短い周期、確認用条件UserLive向け初期値と分ける

input初期値とruntime状態を混同すると、ユーザーが「設定を変えていないのに動作が変わった」と感じる原因になります。

ログファースト設計

ログファースト設計とは、動作確認や不具合調査で必要な情報を、最初からログで追えるように設計する考え方です。

EAでは、動かなかった時に「条件が未成立だったのか」「riskで止まったのか」「注文で失敗したのか」「通知だけ失敗したのか」を分けて確認できる必要があります。

ログ分類確認する内容
INIT起動時の設定、認証、環境version、symbol、timeframe、input summary
GATE必須条件の通過・停止spread NG、time NG、data insufficient
SCORE判定点数や条件一致trend score、reverse score
RISKロット、上限、停止状態max positions、external stop、margin check
EXECUTION注文・決済結果retcode、order、deal、error
EXIT決済条件、トレール、保有管理trail start、close reason、position status
NOTIFY通知送信結果sent、failed、http code

ログを出しすぎると確認しにくくなるため、通常運用、検証、バックテストでログ量を切り替えられる設計が有効です。

AdminDevとUserLiveの違い

EA開発では、開発者向けのAdminDev版と、利用者向けのUserLive版を分けて考えることがあります。

AdminDevは検証や設定確認をしやすくするための版です。UserLiveは実際の利用者向けに、不要な開発用設定を見せすぎないように整理した版です。

項目AdminDevUserLive
目的開発、検証、ログ確認利用者向け運用
input表示検証用項目を広めに表示必要項目を中心に整理
ログ詳細ログを出しやすい通常は抑制し、必要時に確認
外部連携endpointや検証設定を確認しやすい誤操作しにくい形にする
サポート不具合調査に向く利用者が扱いやすい構成にする

AdminDevとUserLiveを分ける目的は、機能差を作ることではなく、検証しやすさと利用しやすさを両立することです。

BTとLIVEの責務分離

BTはバックテスト、LIVEはリアルタイム環境での確認です。

同じEAでも、BTとLIVEでは、価格データ、spread、約定、外部連携、通知、時刻、ログ量の扱いが変わる場合があります。

項目BTLIVE設計上の注意
価格データヒストリカルデータに依存リアルタイム配信に依存データ条件をログに残す
spreadテスター設定や履歴に依存変動する場合があるspreadログを分ける
外部連携制限や分岐が必要な場合があるWebRequestや通知が動くBT用分岐を明記する
ログ量大量になりやすい読みやすさ重視ログプロファイルを分ける
検証目的条件と処理の再現確認実環境での動作確認結果保証と誤解させない

バックテスト結果は将来の結果を保証するものではありません。BTでは、条件、分岐、ログ、注文処理の再現性を確認することが重要です。

表示系と判定系を分ける

EAでは、チャート表示やパネル表示を行うことがあります。

ただし、表示されている情報と内部で判定している値は分けて確認する必要があります。

分類分ける理由
表示系パネル、ラベル、矢印、ライン、色利用者に見せるための情報
判定系内部変数、signal結果、risk許可、exit状態EAの処理を決める情報
ログ系Expertsログ、CSV、通知ログ後から確認するための情報

表示系だけを見て「条件が成立した」と判断すると、内部判定とズレる場合があります。EAの検証では、表示、ログ、注文履歴を合わせて確認します。

関連ログ・関連エラー

責務分離したEAでは、エラーや不具合も層ごとに確認します。

出やすい問題確認するログ
signal条件が成立しない、データ不足GATE、SCORE、CopyBuffer、CopyRatesログ
execution注文失敗、retcodeエラーEXECUTION、Journal、TRADE_RETCODE
risk新規停止、ロット不正、上限到達RISK、symbol info、position count
exit決済されない、トレールしないEXIT、position status、trail log
auth認証失敗、期限不一致AUTH、認証状態、マスク済み口座情報
notification通知が届かない、連続通知NOTIFY、HTTP status、throttle

エラーコードの確認は、MQL5エラーコード辞典も参考にしてください。

EA利用者向けの確認ポイント

EA利用者は、コードの詳細を理解していなくても、どの層で止まっているかを整理できます。

  • 条件が成立していないのか
  • 条件は成立したが新規エントリーが停止されたのか
  • 注文処理で失敗したのか
  • 保有後の決済条件が未成立なのか
  • 通知だけが届いていないのか
  • 認証や外部制御で停止しているのか
  • 表示だけが更新されていないのか

問い合わせ前には、チャート画像だけでなく、Expertsログ、Journalログ、setファイル、発生時刻、銘柄名、時間足を整理してください。

MQL5開発者向けの確認ポイント

MQL5開発者は、各層の入力、出力、ログを決めてから実装すると、保守しやすくなります。

設計項目確認すること目的
signal出力方向、理由、スコア、GATE状態注文前の判定を追えるようにする
execution結果retcode、ticket、error、comment注文失敗を追えるようにする
risk判定停止理由、ロット、上限、外部停止なぜ止めたかを説明できるようにする
exit状態保有状態、決済理由、トレール状態保有後の挙動を確認できるようにする
notification結果送信先、送信結果、抑制理由通知不具合を切り分ける
UI更新表示対象と更新頻度描画負荷とロジック混在を避ける

MQL5関数の役割は、MQL5関数辞書も参考になります。

検証担当者向けの確認ポイント

検証担当者は、EAの動作結果だけでなく、どの層のログがどう出ているかを確認します。

  • INITログで環境と設定が確認できるか
  • GATEで止まった理由が分かるか
  • SCOREの内訳が確認できるか
  • riskで停止した理由が確認できるか
  • executionのretcodeが確認できるか
  • exitの決済理由が確認できるか
  • notificationの送信成否が分かるか
  • BTとLIVEでログ量や分岐が整理されているか

検証環境の整理は、MT5検証・運用環境ガイドも参考にしてください。

よくある誤解

誤解実際の確認注意点
signalが成立すれば必ず注文されるriskやexecutionで止まることがある判定成立と注文成功を分ける
通知が届けば注文も成功している通知と注文は別責務executionログを確認する
risk層があれば損失を防げるrisk層は制限・確認の層保証表現にしない
パネル表示が正しければ内部判定も正しい表示と内部状態は分けて確認するログと注文履歴も確認する
バックテストで動けばLIVEも完全に同じ価格配信、spread、外部連携、約定条件が異なる場合があるBTとLIVEの責務を分けて確認する

開発依頼前に仕様化する項目

EA開発や改修を相談する場合は、最初から関数名を指定するよりも、責務ごとに何をしたいかを整理する方が確認しやすくなります。

仕様項目整理する内容必要な資料
signalエントリー候補条件、GATE、SCORE、時間足条件メモ、インジ名、スクリーンショット
execution注文方向、ロット、SL/TP、Magic Number希望仕様、既存EAログ、取引例
risk最大数、停止条件、ロット制御、外部停止setファイル、運用条件メモ
exit決済条件、トレール、時間決済、手動決済後の扱い決済条件メモ、ログ、取引履歴
notification通知条件、通知先、抑制条件通知文面案、送信条件
UI表示したい状態、ボタン、パネル、ライン画面イメージ、必要項目一覧

開発依頼前の資料整理は、MT5開発依頼前に用意する資料まとめも参考にしてください。

問い合わせ前に送る情報

MQL5 EA設計や改修について相談する場合は、次の情報を整理してください。

情報必要性注意点
EA名・バージョン対象特定古い版と混在しないようにする
対象銘柄・時間足再現条件サフィックス込みで記録する
setファイル入力条件の再現認証情報やURLが含まれないか確認する
ExpertsログEA内部状態の確認問題発生前後を含める
JournalログMT5端末側の確認注文、接続、テスター関連を含める
スクリーンショット表示状態の確認口座番号や個人情報を隠す
希望する改修内容責務範囲の確認signal、execution、risk、exitに分けて書く

送ってはいけない情報

EA開発や改修相談では、ログやスクリーンショットが重要です。ただし、次の情報はそのまま送らないでください。

  • 口座番号の全桁
  • 投資家パスワード
  • マスターパスワード
  • Webhook URLの実値
  • GAS URLの実値
  • APIキー
  • 認証トークン
  • 外部サービスの秘密情報
  • 個人情報
  • 第三者の個人情報が入ったログ

問い合わせが必要な場合は、必要情報を整理したうえで、不具合報告・サポート依頼を確認してください。

MQL5 EA設計パターン確認チェック表

  • □ signalとexecutionを分けて整理した
  • □ riskとexitを分けて整理した
  • □ GATE / SCORE / SPECIAL FILTERS / ENTRYを分けて確認した
  • □ TREND / REVERSE / RANGEの役割差を確認した
  • □ auth層の有無を確認した
  • □ external control層の有無を確認した
  • □ notification層の責務を確認した
  • □ UI / panel層と判定系を分けた
  • □ input初期値とruntime状態を分けた
  • □ AdminDevとUserLiveの違いを整理した
  • □ BTとLIVEの違いを整理した
  • □ 各層のログを確認できるようにした
  • □ setファイル、Expertsログ、Journalログを保存した
  • □ 口座番号や認証情報をマスクした

次に読む技術講座

この講座とあわせて確認すると、MT5・MQL5開発、検証、不具合調査の流れを整理しやすくなります。

No講座確認できること
LEARN-002MQL5開発入門MQL5開発の前提を確認する
LEARN-007MQL5注文・ポジション・履歴管理完全ガイド注文・ポジション管理との接続を確認する
LEARN-014MQL5デバッグ・ログファースト開発完全ガイドログファースト設計を確認する
LEARN-020MQL5イベント処理完全ガイドイベント処理の責務分離を確認する
LEARN-022MQL5長時間稼働・安定化完全ガイド長時間稼働時の安定化を確認する

次に確認するページ

技術講座を確認した後、導入・商品確認・開発相談・不具合報告へ進む場合は、以下のページも確認してください。

ページ確認できること
技術講座一覧MT5・MQL5・EA開発に関する技術講座を順番に確認できます。
導入ガイドEA、インジケーター、補助ツールを導入する前の確認事項を整理できます。
商品一覧EAファンクラブで扱う補助ツール、インジケーター、コピーEAなどを確認できます。
開発代行ページEA、インジケーター、補助ツールの新規作成・改修相談を確認できます。
不具合報告・サポート依頼ログ、スクリーンショット、再現手順を整理して相談する場合に確認できます。

よくある質問

EA設計でsignalとexecutionを分ける理由は何ですか?

条件成立と注文実行を分けて確認するためです。signalはエントリー候補を出す層で、executionは注文や決済リクエストを処理する層です。分けておくと、条件は成立したのに注文できなかった理由を確認しやすくなります。

GATEとSCOREは何が違いますか?

GATEは必須通過条件、SCOREは条件の強さや一致度を評価する考え方です。GATEで止まった場合は、SCOREが高くてもENTRYへ進まない設計にすることがあります。

risk層とexit層は分ける必要がありますか?

分けた方が確認しやすくなります。risk層は主に新規許可や制限を確認し、exit層は保有後の決済やトレールを管理します。新規停止中でも既存ポジションのexitを継続する場合があります。

外部制御や通知はEA本体に直接入れてよいですか?

機能として入れることはありますが、責務としては分けて設計する方が安全です。外部制御はexternal control層、通知はnotification層として扱うと、不具合調査がしやすくなります。

AdminDevとUserLiveは何が違いますか?

AdminDevは開発・検証・ログ確認をしやすくする版、UserLiveは利用者向けに必要項目を整理した版です。検証用設定や詳細ログをそのまま利用者向けに出しすぎないことが重要です。

BTとLIVEは同じ設計でよいですか?

基本ロジックは同じでも、価格データ、spread、外部連携、通知、ログ量などは分けて確認する必要があります。バックテスト結果は将来の結果を保証するものではありません。

UIパネルの表示とEA内部状態は同じですか?

同じとは限りません。UIは表示層であり、内部の判定状態とは別に管理する必要があります。検証では、パネル表示、Expertsログ、注文履歴を合わせて確認してください。

ログは多いほどよいですか?

多ければよいわけではありません。INIT、GATE、SCORE、RISK、EXECUTION、EXIT、NOTIFYなど、目的別に必要なログを出し、通常運用と検証時でログ量を切り替えられる設計が有効です。

開発依頼前にどこまで仕様を決めるべきですか?

最低限、signal、execution、risk、exit、notification、UIのどこを作りたいのかを整理してください。EA名、対象銘柄、時間足、setファイル、ログ、スクリーンショットもあると確認しやすくなります。

GATE / SCORE / SPECIAL FILTERSは必ず必要ですか?

すべてのEAで必須ではありません。ただし、条件が複数あるEAでは、通過条件、点数化、例外フィルター、最終ENTRYを分けると、検証やログ確認がしやすくなります。

まとめ

MQL5 EAを長期的に保守しやすくするには、signal、execution、risk、exit、auth、external control、notification、UI / panelを分けて設計することが重要です。

signalは候補を出す層、executionは注文・決済を処理する層、riskは許可や制限を確認する層、exitは保有後の終了条件を管理する層です。

GATE / SCORE / SPECIAL FILTERS / ENTRYを分けると、条件が成立したのか、どこで止まったのか、なぜ見送ったのかをログで追いやすくなります。

AdminDevとUserLive、BTとLIVE、input初期値とruntime状態、表示系と判定系を分けることで、検証、改修、販売後サポートの負担を減らしやすくなります。

EA開発や改修を相談する場合は、EA名、バージョン、対象銘柄、時間足、setファイル、Expertsログ、Journalログ、スクリーンショットを整理し、口座番号や認証情報は必ずマスクしてください。

MT4/MT5 技術講座へ戻る

ABOUT ME
記事URLをコピーしました