開発依頼ガイド

EA開発でトラブルを避けるための仕様書の作り方

EAファンクラブ

EA開発でトラブルを避けるためには、依頼前に仕様書を整理しておくことが重要です。

「エントリー条件だけ」「画像だけ」「このインジと同じように」などの説明だけでは、開発側が判断する範囲が広くなり、完成後に「思っていた動きと違う」「通知の条件が違う」「決済の優先順位が違う」「ログで原因を追えない」といったズレが起きやすくなります。

EAの仕様書では、売買条件だけでなく、シグナル判定、発注処理、ロット管理、決済、停止条件、通知、外部連携、チャート表示、ログ、バックテスト条件、納品物、サポート範囲を分けて整理する必要があります。

この記事では、EA開発でトラブルを避けるための仕様書の作り方を、依頼者側・開発者側の両方で確認しやすい形に整理します。

なお、この記事はMT4/MT5、MQL4/MQL5、EA、インジケーター、コピーEA、通知・診断・補助ツールの開発依頼前整理を目的とした技術記事です。投資助言、売買指示、利益保証、勝率保証、損失回避保証、推奨ロット、推奨銘柄、推奨エントリー、特定ブローカー誘導を目的としたものではありません。

EA開発で仕様書が必要な理由

EAは、相場を見て自動的に判断しているように見えても、実際には決められた条件に従って処理を行うプログラムです。

そのため、どの条件でシグナルを出すのか、どのタイミングで発注するのか、注文できない時にどう扱うのか、どの条件で決済するのか、どのログを残すのかを事前に決めておく必要があります。

仕様書で整理する理由整理しない場合に起きやすい問題確認すべきこと
認識違いを防ぐ依頼者と開発者で条件解釈がずれる条件、タイミング、対象足、ON/OFFを明記する
実装範囲を決める追加機能が後から増え、見積範囲が曖昧になる初回対応範囲と後日追加範囲を分ける
検証しやすくする完成後に何を確認すればよいか分からないバックテスト条件、ログ、確認項目を決める
不具合調査しやすくする動かない理由をログで追えないExpertsログ、Journalログ、エラー時の出力を決める
納品後のトラブルを減らす仕様変更と不具合修正の区別が曖昧になる納品物、確認範囲、サポート範囲を整理する

仕様書に必ず入れたい基本情報

仕様書の冒頭では、対象となるEAの基本情報を整理します。ここが曖昧だと、MT4用なのかMT5用なのか、新規作成なのか既存改修なのか、どの銘柄や時間足で使うのかが分からなくなります。

項目書く内容補足
依頼区分新規EA作成、既存EA改修、MT4からMT5への作り直し、通知追加、ログ追加など作業範囲を明確にするために必要です。
対象環境MT4 / MT5、OS、VPS、ブローカー、口座タイプHedging / Netting、銘柄名、約定条件に影響します。
対象銘柄GOLD、XAUUSD、USDJPYなどsuffixや小数点桁、tick valueも確認対象です。
時間足M1、M5、M15、H1など設置時間足と判定時間足が違う場合は分けます。
使用目的完全自動、半裁量、裁量補助、決済補助、通知、記録など発注機能の有無を明確にします。
納品物ex4 / ex5、mq4 / mq5、setファイル、簡易マニュアル、確認ログなどソース納品の有無は事前に分けてください。
確認方法バックテスト、デモ確認、ログ確認、スクリーンショット確認完成判定に必要な項目です。

EAの責務を分けて書く

EA仕様書では、すべてを「売買条件」としてまとめず、役割ごとに分けて書くことが重要です。

特に、シグナル判定と発注処理、リスク管理と決済処理、通知と外部連携、表示と内部判定を混同すると、実装後の確認が難しくなります。

責務仕様書に書く内容注意点
signalBUY / SELL候補を判定する条件シグナル成立と発注実行は分けます。
execution発注方法、注文タイプ、ロット、スリッページ、発注前チェック注文できない時の扱いも書きます。
risk最大ポジション、ロット制限、証拠金、日次停止、最大損失推奨ロットではなく仕様として整理します。
exitTP、SL、トレーリング、建値移動、時間決済、反対シグナル決済複数決済条件の優先順位を決めます。
notificationアラート、Push通知、Discord通知、メール通知通知条件と通知頻度を整理します。
external controlWebRequest、Google Sheets、外部シート、認証、停止制御通信失敗時の安全側動作を決めます。
UIボタン、パネル、ラベル、ライン、色、表示位置表示系と判定系を分けて扱います。
log初期化、判定、発注、決済、エラー、外部連携のログ不具合調査できる粒度にします。

シグナル条件の書き方

シグナル条件は、「買い」「売り」「見送り」を判断するための条件です。仕様書では、BUY条件とSELL条件を分け、どの足で判定するのか、確定足か現在足か、複数条件をANDで見るのかORで見るのかを明確にします。

項目書く内容確認ポイント
BUY条件買い候補になる条件価格、インジケーター値、ローソク足、時間帯などを整理する
SELL条件売り候補になる条件BUY条件の逆なのか、別条件なのかを明記する
判定足現在足、確定足、1本前、複数時間足リペイントや再判定の扱いに影響する
使用インジケーターMA、RSI、ATR、BB、独自インジなどパラメータ、buffer番号、shiftを整理する
フィルタースプレッド、時間帯、曜日、ニュース、ボラティリティシグナル成立後に止める条件を分ける
同時成立時BUYとSELLが同時成立した時の扱い見送り、優先方向、エラー扱いなどを決める
再発注制御同一バー1回、同方向1回、ポジション保有中禁止など重複発注を避けるために必要です。

シグナル条件は、チャート上の見た目だけで判断せず、数値条件として書ける形にすることが重要です。画像で説明する場合でも、どの足のどの価格、どのインジケーター値、どのタイミングを見ているのかを補足してください。

発注処理の書き方

発注処理では、シグナルが成立した後に、どの注文を出すのかを決めます。シグナルが成立していても、ロット、証拠金、スプレッド、取引時間、最大ポジションなどで発注を見送る場合があります。

項目書く内容注意点
注文タイプ成行、指値、逆指値、Buy Stop、Sell StopなどMT4 / MT5で扱いが異なる場合があります。
ロット固定ロット、残高比例、複利、外部指定、手動指定など推奨ロットではなく、計算方式として書きます。
Magic NumberEA識別番号、ロジック別番号、手動注文の扱い複数EA運用では特に重要です。
最大ポジション全体、方向別、ロジック別、銘柄別の上限エントリーしない理由になるためログ化します。
スプレッド制限最大スプレッド、スプレッド拡大時の停止GOLD / XAUUSDなどでは重要です。
取引時間稼働時間、停止時間、曜日、サーバー時間PC時間とサーバー時間を混同しないようにします。
注文失敗時再試行するか、見送るか、ログだけ残すか無限リトライや過剰ログを避けます。

決済条件の書き方

決済条件は、EAの挙動に大きく影響します。TPとSLだけでなく、内部決済、トレーリング、建値移動、反対サイン決済、時間決済、バスケット決済、一括決済などを分けて書いてください。

決済項目書く内容確認ポイント
TP固定pips、価格差、ATR倍率、平均建値基準など注文ごとか、バスケット単位かを分ける
SL固定SL、内部損切り、建値移動、最大損失サーバー上に置くSLか、EA内部判定かを明確にする
トレーリング開始条件、追従幅、更新間隔、対象ポジションTPや建値移動との優先順位を確認する
建値移動開始利益、ロック幅、対象方向トレーリングとの関係を整理する
反対サイン決済反対条件で決済するか、新規反対注文を出すかドテンと単純決済を混同しない
時間決済指定時刻、保有時間、曜日、週末停止サーバー時間基準かPC時間基準かを明記する
一括決済同一Magic、同一方向、全ポジションなど対象範囲を明確にする

複数の決済条件がある場合は、優先順位を必ず書いてください。たとえば、強制損切り、手動全決済、内部決済、トレーリング、通常TPが同時に関係する場合、どれを先に処理するかで結果が変わります。

リスク管理・停止条件の書き方

EA仕様書では、リスク管理や停止条件も重要です。EAが注文する条件だけでなく、注文しない条件、止める条件、通知だけ行う条件を分けてください。

項目書く内容注意点
最大ポジション全体、方向別、ロジック別、銘柄別既存ポジションの扱いを明確にする
最大ロット1注文、合計、日次、ロジック別ブローカーの最小・最大ロットも確認する
最大損失金額、pips、%、日次、週次など実装対象か、利用者側確認かを分ける
含み損制限合計含み損、方向別、Magic別監視対象の範囲を明確にする
連敗停止連敗回数、日次リセット、手動解除履歴判定の対象を決める
外部停止Google Sheets、外部シート、手動スイッチ取得失敗時の扱いを決める
復帰条件翌日復帰、手動復帰、再起動後の扱い停止後に勝手に再開するかを明記する

通知・外部連携の書き方

Discord通知、Google Sheets連携、CSV出力、外部シート制御、ライセンス認証を使う場合は、売買ロジックとは別に仕様を書きます。

外部連携では、送信内容、送信タイミング、送信先、失敗時の扱い、通知頻度、認証情報の扱いを明確にしてください。

連携項目仕様書に書く内容注意点
Discord通知起動、停止、注文、決済、エラー、日次集計などWebhook URLはそのまま共有しない
Google Sheets記録項目、列構成、送信タイミング、GASの扱い書き込み失敗時の扱いを決める
CSV出力保存先、ファイル名、列、文字コード、追記方式検証用か運用記録用かを分ける
外部シート制御ON/OFF、取引方向、停止時間、設定値の取得取得失敗時は安全側に倒すかを決める
ライセンス認証口座認証、期限、通信失敗、認証ログ認証失敗時に注文を止めるか明記する
WebRequest許可URL、送信先、HTTPステータス、タイムアウトMT5側の設定も確認対象にする

表示・パネルUIの書き方

チャート上にボタン、パネル、ラベル、ライン、損益情報、状態表示を出すEAでは、UI仕様を別に整理します。

表示内容と内部判定を混同すると、表示が変わっただけでロジックが変わったように見えることがあります。表示系と判定系は分けて書いてください。

UI項目書く内容確認ポイント
表示位置左上、右上、チャート下部、固定座標など画面サイズや縮尺で崩れないか確認する
ボタンBUY、SELL、CLOSE、RESET、ON/OFFなど誤操作防止、押下後ログを整理する
状態表示READY、BLOCK、ERROR、AUTH、SPREADなど判定理由を簡潔に見せる
ラインEntry、TP、SL、Trail、平均建値など削除時・再起動時の扱いを決める
色・表示切替状態ごとの色、表示ON/OFF、簡易表示見やすさと負荷のバランスを取る
Object管理作成、更新、削除、残存チェックEA削除時や時間足変更時の挙動を確認する

ログ仕様の書き方

EA開発では、ログ仕様を最初から決めておくと、不具合調査や納品後の確認がしやすくなります。

ログは多ければよいわけではありません。初期化、設定読込、シグナル判定、発注前チェック、注文結果、決済理由、外部連携、エラー、停止理由を追える粒度で整理します。

ログ区分出す内容用途
INITEA名、バージョン、銘柄、時間足、主要設定起動時の確認
SELFCHECK自動売買許可、銘柄仕様、ロット条件、WebRequest設定導入時の不備確認
GATE必須条件のOK / NGエントリーしない理由を追う
SCORE任意条件やスコア判定シグナル強度や見送り理由を確認する
ENTRY発注前チェック、注文要求、注文結果注文処理の確認
EXIT決済条件、対象ポジション、決済結果決済理由の確認
RISK停止条件、損失制限、最大ポジション、証拠金安全制御の確認
EXTERNAL通知、WebRequest、Google Sheets、CSV、認証外部連携の確認
ERRORエラー番号、retcode、失敗理由不具合調査

バックテストではログ量が多すぎると検証速度に影響する場合があります。通常ログ、詳細ログ、バックテスト用簡易ログを分ける仕様にしておくと、運用と検証の両方で確認しやすくなります。

Inputs・setファイルの書き方

EA仕様書では、ユーザーが変更するinput、固定値にする項目、開発中だけ見せる項目を分けて整理します。

販売用や配布用のUserLive版では、endpoint、token、内部固定値、危険な検証スイッチを見せない方がよい場合があります。一方、AdminDev版では検証のために詳細inputを残す場合があります。

項目書く内容確認ポイント
ユーザー設定ロット、Magic Number、時間帯、通知ON/OFF、ログON/OFFなど利用者が変更する項目に限定する
推奨初期値初期値、検証用値、配布時の値利益保証ではなく動作確認用として扱う
固定値ユーザーに見せない内部設定UserLive化時に整理する
外部連携設定Webhook、GAS、APIキー、endpoint、token実値の扱いに注意する
ログ設定通常、詳細、バックテスト、通知ログログ過多を避ける
setファイル用途別set、検証用set、初期配布set変更前後を分けて保存する

検証条件・完成判定の書き方

EA開発では、何をもって完成とするかを事前に決めておくことが重要です。

コンパイルエラーがないことは最低条件ですが、それだけでは完成とはいえません。初期化、設定読込、注文前チェック、注文結果、決済、通知、ログ、バックテスト、デモ確認などを分けて確認します。

確認項目確認内容判定例
コンパイルmq4 / mq5がエラーなくコンパイルできるかコンパイルエラーなし
初期化チャート設置時にエラーなく起動するかINIT OK、設定読込OK
入力項目Inputsが仕様どおりか不要な項目が出ていない
注文前チェックスプレッド、時間、証拠金、最大ポジションを確認するか見送り理由がログに出る
発注条件成立時に注文要求が出るか注文成功または失敗理由が分かる
決済TP、SL、内部決済、トレーリングが仕様どおりか決済理由が追える
通知通知条件と通知内容が合っているか通知過多や通知漏れがない
バックテスト指定条件で検証できるか異常停止なし、ログ確認可能
デモ確認実際のMT5環境で基本動作するか環境差を確認できる

よくある仕様書の不足例

仕様書が曖昧な場合、完成後に修正範囲や追加費用、確認範囲で認識違いが起きやすくなります。以下のような不足がないか確認してください。

不足している内容起きやすい問題補足すべきこと
確定足か現在足か不明サインやエントリー位置が想定とずれるshift 0 / shift 1、確定足判定を明記する
BUY条件だけ書いてあるSELL条件の解釈が開発側判断になるBUY / SELLを別々に書く
決済優先順位がないTP、SL、反対決済、トレーリングの結果が変わる優先順位を明記する
既存ポジションの扱いが不明手動注文や他EAのポジションを巻き込むMagic Number、symbol、comment範囲を決める
通知条件が曖昧通知漏れや通知過多が起きる通知するイベントと頻度を決める
ログ仕様がない不具合時に原因を追えない最低限のINIT、GATE、ENTRY、EXIT、ERRORを決める
外部連携失敗時の扱いがない通信失敗時にEAが止まるか続行するか不明安全側動作を明記する
完成判定がないどこまで確認すれば納品完了か分からないコンパイル、ログ、BT、デモ確認を分ける

仕様書テンプレート

以下の項目を埋める形にすると、EA開発依頼前の整理が進めやすくなります。すべてを最初から完璧に書く必要はありませんが、不明点は「未定」「相談したい」として残してください。

【1. 依頼概要】
・依頼区分:
・MT4 / MT5:
・新規作成 / 既存改修:
・対象ファイル:
・対象銘柄:
・時間足:
・利用環境:

【2. EAの目的】
・完全自動 / 半裁量 / 裁量補助 / 決済補助 / 通知 / 記録:
・このEAで実現したいこと:
・このEAで行わないこと:

【3. signal】
・BUY条件:
・SELL条件:
・判定足:
・使用インジケーター:
・フィルター:
・同時成立時の扱い:

【4. execution】
・注文タイプ:
・ロット計算:
・Magic Number:
・最大ポジション:
・スプレッド制限:
・取引時間:
・注文失敗時の扱い:

【5. risk】
・最大ロット:
・最大損失:
・含み損制限:
・連敗停止:
・外部停止:
・復帰条件:

【6. exit】
・TP:
・SL:
・トレーリング:
・建値移動:
・反対サイン決済:
・時間決済:
・一括決済:
・決済優先順位:

【7. notification / external】
・通知先:
・通知条件:
・WebRequest:
・Google Sheets:
・CSV出力:
・外部シート制御:
・認証:

【8. UI / 表示】
・パネル:
・ボタン:
・ライン:
・ラベル:
・色:
・削除時の扱い:

【9. log】
・INIT:
・SELFCHECK:
・GATE:
・ENTRY:
・EXIT:
・RISK:
・ERROR:
・外部連携ログ:

【10. 検証】
・バックテスト条件:
・デモ確認条件:
・確認するログ:
・確認するスクリーンショット:
・完成判定:

【11. 納品物】
・ex4 / ex5:
・mq4 / mq5:
・setファイル:
・簡易マニュアル:
・更新履歴:
・サポート範囲:

送らない方がよい情報

仕様書、setファイル、ログ、スクリーンショットを共有する時は、機密情報をそのまま含めないようにしてください。

送らない方がよい情報理由対応方法
MT4 / MT5のログインパスワード口座へ接続できる可能性があるため共有しない
投資家パスワード口座情報を閲覧できる可能性があるため共有しない
VPSログイン情報第三者が接続できる可能性があるため共有しない
Discord Webhook URL通知先へ送信できる可能性があるため実値を伏せる
Google Apps Script URL外部連携先へアクセスできる可能性があるため実値を伏せる
APIキー・認証トークン外部サービスや認証情報に関わるため先頭・末尾以外を伏せる
口座番号の全桁個人情報・口座情報に関わる可能性があるため一部を伏せる
第三者EAの保護解除依頼権利や利用規約に反する可能性があるため対応不可として扱う

相談前に確認する関連ページ

EA開発の仕様書を整理する時は、開発相談ページ、資料整理ページ、EA開発依頼前チェック、ログ確認、setファイル確認、不具合報告のページもあわせて確認してください。

確認したい内容関連ページ使い方
開発・改修相談全体を確認したい開発・改修の相談ページEA作成、インジ作成、既存改修、外部連携追加の相談前に確認します。
依頼前資料を整理したいMT5開発依頼前に用意する資料まとめ仕様書、setファイル、ログ、スクリーンショットを整理します。
MT5 EA開発依頼前の条件を確認したいMT5 EA開発を依頼する前に整理することEA開発依頼前の条件整理に使います。
ログを問い合わせ前に整理したいEAのログを問い合わせ前に確認する方法Expertsログ、Journalログ、発生時刻、再現条件を整理します。
setファイルを送る前に確認したいMT5でEAのsetファイルを送る前に確認すること現在使用中set、変更前後、外部連携情報の有無を確認します。
不具合報告を送りたい不具合報告・サポート依頼動作不具合、ログ、スクリーンショット、再現条件を整理して相談します。

よくある質問

仕様書がない状態でもEA開発を相談できますか?

相談は可能です。ただし、仕様書がない場合は、目的、対象銘柄、時間足、エントリー条件、決済条件、通知の有無、ログの有無、現在困っていることを分かる範囲で整理してください。内容が曖昧な場合は、まず仕様整理から進める形になります。

画像や動画だけで仕様書の代わりになりますか?

参考資料にはなりますが、画像や動画だけでは条件を正確に実装できない場合があります。どのタイミングで、どの条件が成立し、どの処理を行うのかを文章や表で補足してください。

売買ロジックの相談もできますか?

依頼者が指定した条件を技術仕様として整理し、EAとして実装する相談は可能です。ただし、売買判断、相場予測、利益保証、勝率保証、推奨ロット、推奨銘柄、推奨エントリーの提示は行いません。

既存EAのex5ファイルだけでも仕様書を作れますか?

ex5ファイルだけでは内部ロジックを直接確認できません。動作を観察して仕様を再整理することはできますが、内部処理の完全な再現や保護解除を前提とした改修には対応できません。mq5やmqhなどのソースコードがあるか確認してください。

仕様変更と不具合修正はどう分けますか?

事前に合意した仕様どおりに動かない場合は不具合確認の対象です。一方、当初仕様にない条件追加、通知追加、表示変更、ロジック変更、外部連携追加は仕様変更として扱う場合があります。仕様書に完成判定とサポート範囲を書いておくと分けやすくなります。

まとめ

EA開発でトラブルを避けるためには、売買条件だけでなく、signal、execution、risk、exit、notification、external control、UI、log、validationを分けて仕様書に整理することが重要です。

特に、確定足か現在足か、BUY条件とSELL条件、発注前チェック、Magic Number、決済優先順位、通知条件、外部連携失敗時の扱い、ログ仕様、完成判定は、後から認識違いが起きやすい部分です。

仕様書を用意する時は、対象環境、対象銘柄、時間足、エントリー条件、決済条件、リスク管理、通知、外部連携、表示、ログ、検証条件、納品物、サポート範囲を分けて整理してください。

Webhook URL、GAS URL、APIキー、認証トークン、VPSログイン情報、口座番号などの機密情報は、そのまま共有しないようにしてください。技術確認に必要な情報と、共有すべきでない情報を分けることも、EA開発依頼前の重要な準備です。

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