EAに外部シート連携を追加したい時に整理すること|Google Sheets・CSV・WebRequest
EAを運用していると、「設定値をGoogle Sheetsで管理したい」「EAの稼働状態を外部シートへ書き出したい」「取引履歴をCSVに残したい」「外部シートで停止条件を切り替えたい」と考えることがあります。
外部シート連携は便利ですが、単に「シートと連携したい」だけでは仕様が不足する場合があります。EAが外部シートから何を読むのか、何を書き込むのか、どのタイミングで更新するのか、通信に失敗した時にどうするのかを分けて整理する必要があります。
特に、Google Sheetsや外部APIを使う場合は、認証、権限、WebRequest許可URL、API制限、送信頻度、タイムアウト、失敗時ログの確認が必要です。
また、外部シートでEAの動作を制御する場合は、signal、execution、risk、exit、external control を混同しないことが重要です。外部シートの値をそのまま売買判断に使うのか、停止条件や設定値として使うのかで、設計方針が変わります。
この記事では、EAに外部シート連携を追加したい時に、開発依頼前に整理したいGoogle Sheets、CSV、WebRequest、読込・書込、認証、権限、更新頻度、失敗時処理、ログ確認をまとめます。
なお、この記事はEA改修や開発依頼前の技術確認を目的とした内容です。外部シートを使った売買指示、推奨エントリー、推奨ロット、利益保証を行うものではありません。
この記事で確認すること
| 確認項目 | 内容 | 依頼前の確認ポイント |
|---|---|---|
| 読込連携 | EAが外部シートから値を読む仕組みです。 | 設定値、停止条件、稼働フラグ、対象銘柄などを整理します。 |
| 書込連携 | EAが外部シートへ状態や履歴を書き込む仕組みです。 | 稼働状態、取引履歴、エラー、集計値などを整理します。 |
| Google Sheets | 外部シートとしてGoogle Sheetsを使う方式です。 | 認証、権限、API制限、更新頻度を確認します。 |
| CSV | ローカルファイルや出力ファイルとして扱う方式です。 | 保存場所、文字コード、列形式、追記方式を確認します。 |
| WebRequest | MT4/MT5から外部URLへ通信する仕組みです。 | 許可URL、送信方式、タイムアウト、失敗時ログを確認します。 |
| 失敗時処理 | 連携失敗時にEAをどう扱うかです。 | ログのみ、前回値継続、停止、再試行などを分けます。 |
EAの外部シート連携とは
EAの外部シート連携とは、EAの設定値、稼働状態、取引履歴、エラー情報、集計結果などを、MT4/MT5の外部にあるシートやファイルと連携する仕組みです。
外部シート連携には、大きく分けて「EAが外部から読む連携」と「EAが外部へ書き込む連携」があります。
| 連携方向 | 内容 | 確認すること |
|---|---|---|
| 読込 | EAが外部シートから設定値や制御値を読みます。 | 何を読むか、どの頻度で読むか、失敗時にどうするかを確認します。 |
| 書込 | EAが外部シートへ状態や履歴を書きます。 | 何を書き込むか、上書きか追記か、頻度を確認します。 |
| 双方向 | 読込と書込を両方行います。 | 責務が複雑になるため、範囲を明確にします。 |
| CSV出力 | 取引履歴や状態をCSVへ保存します。 | 保存先、列形式、追記方法、ファイル肥大化を確認します。 |
| 外部制御 | 外部シートの値でEAの動作を制御します。 | 新規停止、追加停止、決済継続などを分けて確認します。 |
| 運用記録 | EAの状態を記録・集計します。 | 取引判断ではなく記録目的かを確認します。 |
依頼前には、外部シートを「設定を読むため」に使うのか、「履歴を書き込むため」に使うのか、「運用状態を確認するため」に使うのかを分けて整理してください。
読込連携で整理すること
読込連携では、EAが外部シートから値を取得し、EA内部の動作に反映します。
読込対象には、稼働ON/OFF、BUY許可、SELL許可、新規停止、ナンピン停止、ロット設定、時間帯、対象銘柄、通知設定などがあります。
| 読込項目 | 内容 | 依頼前の確認ポイント |
|---|---|---|
| 稼働フラグ | EAを稼働させるか停止するかです。 | 新規だけ停止か、全処理停止かを分けます。 |
| 売買方向 | BUY、SELL、両方の許可です。 | 初回エントリーだけに効かせるか確認します。 |
| ロット設定 | 外部シートからロット値を読む方式です。 | 変更反映タイミングと上限を確認します。 |
| 停止時間 | 時間帯でエントリーを止める設定です。 | サーバー時間か日本時間かを確認します。 |
| ナンピン停止 | 追加エントリーだけを止める設定です。 | 既存ポジションの決済管理を続けるか確認します。 |
| 通知設定 | 通知ON/OFFや通知先の切替です。 | 通知機能と外部制御を分けて確認します。 |
| 対象銘柄 | どの銘柄に設定を適用するかです。 | チャート銘柄、複数銘柄、シート行の対応を確認します。 |
外部シートから読む値は、EA内部のinput初期値とは別に、runtime状態として扱う場合があります。依頼時には、input初期値と外部シートから取得した現在値を混同しないようにしてください。
書込連携で整理すること
書込連携では、EAが外部シートへ稼働状態、注文履歴、決済履歴、エラー、集計情報などを書き込みます。
書込対象を増やしすぎると、通信回数が増えたり、シートが重くなったり、失敗時の処理が複雑になる場合があります。そのため、何を必須で書くのか、何はログだけでよいのかを整理します。
| 書込項目 | 内容 | 依頼前の確認ポイント |
|---|---|---|
| 稼働状態 | EA起動中、停止中、認証状態などです。 | 上書き更新か履歴追記かを確認します。 |
| 注文履歴 | エントリー時の注文情報です。 | ticket、symbol、direction、lot、priceを含めるか確認します。 |
| 決済履歴 | 決済時の結果情報です。 | profit、close_reason、close_priceなどを確認します。 |
| エラー履歴 | 注文失敗や通信失敗の記録です。 | retcode、GetLastError、HTTP結果を含めるか確認します。 |
| 集計値 | 日次損益、保有数、総ロットなどです。 | 更新頻度と算出基準を確認します。 |
| 現在状態 | 最新の状態だけを保持する行です。 | UPSERT方式か追記方式かを確認します。 |
| 検証ログ | バックテストや動作確認用の記録です。 | 本番運用時に出しすぎないようにします。 |
書込連携では、追記型にするのか、最新状態を上書きするのかで設計が変わります。運用記録として残したいのか、現在状態だけを見たいのかを分けて整理してください。
Google Sheets連携で確認すること
Google Sheetsを使う場合は、EAから直接アクセスする方式、Webアプリや中継サーバーを経由する方式、CSV公開データとして読む方式など、複数の構成が考えられます。
どの方式を使うかによって、認証、権限、URL管理、セキュリティ、更新頻度、失敗時処理が変わります。
| 確認項目 | 内容 | 依頼前の注意点 |
|---|---|---|
| 利用目的 | 読込、書込、双方向のどれかです。 | 目的により認証や設計が変わります。 |
| シート構造 | 列名、行構成、キー項目です。 | EAが読む列、書く列を固定します。 |
| 認証方式 | APIキー、OAuth、サービスアカウント、中継方式などです。 | 実装方式と権限管理を確認します。 |
| 公開範囲 | シートを非公開にするか、限定公開にするかです。 | 誰が読めるか、誰が書けるかを確認します。 |
| 更新頻度 | 何秒・何分ごとに読む/書くかです。 | API制限や通信負荷に注意します。 |
| エラー処理 | 認証失敗、権限不足、通信失敗などです。 | EA本体への影響を分けて決めます。 |
| 機密情報 | トークン、URL、キーなどです。 | ログや画面表示にそのまま出さないようにします。 |
Google Sheetsは外部サービスであるため、利用時点の仕様、認証方式、権限、制限を確認したうえで設計してください。
CSV連携で確認すること
CSV連携は、EAの設定や履歴をファイルとして扱う方法です。
Google Sheetsなどの外部APIより構成が単純になる場合がありますが、保存場所、文字コード、区切り文字、ファイル肥大化、バックテスト時の扱い、VPS上のファイル管理を確認する必要があります。
| 確認項目 | 内容 | 依頼前の注意点 |
|---|---|---|
| 保存場所 | Filesフォルダや共通フォルダなどです。 | MT5のファイルアクセス範囲を確認します。 |
| 読込CSV | EAが設定値を読むCSVです。 | 列順、ヘッダー有無、空欄時の扱いを確認します。 |
| 出力CSV | EAが履歴や状態を書き込むCSVです。 | 追記方式、上書き方式、ローテーションを確認します。 |
| 文字コード | UTF-8、Shift_JISなどです。 | 日本語や記号の文字化けに注意します。 |
| 区切り文字 | カンマ、タブ、セミコロンなどです。 | 小数点や日本語項目との混同を避けます。 |
| ファイル肥大化 | 長期運用でファイルが大きくなる問題です。 | 日別分割、上限行数、古いファイル削除を検討します。 |
| バックテスト | Strategy Testerでのファイル扱いです。 | 実運用と保存先が異なる場合があります。 |
CSV連携は、外部APIを使わずに運用記録を残したい場合や、あとからExcelやGoogle Sheetsへ取り込む用途で検討できます。
WebRequestで確認すること
MT5から外部サービスへ通信する場合、WebRequestを使うことがあります。
WebRequestを使う場合は、EA側のコードだけでなく、MT5側の許可URL、送信方式、タイムアウト、HTTP結果、失敗時ログを整理する必要があります。
| 確認項目 | 内容 | 依頼前の注意点 |
|---|---|---|
| 許可URL | MT5でWebRequestを許可する送信先です。 | 送信先ドメインを明示的に登録する必要があります。 |
| 送信方式 | GET、POST、JSON、CSV取得などです。 | 連携先サービスの仕様に合わせます。 |
| タイムアウト | 外部通信の待ち時間です。 | 長すぎるとEA動作に影響する場合があります。 |
| HTTP結果 | 通信の成功・失敗結果です。 | ステータスコードやレスポンスをログに残します。 |
| 再試行 | 失敗時に再度送る処理です。 | 連投や処理遅延に注意します。 |
| 送信頻度 | 読み書きする間隔です。 | API制限や外部サービス負荷に注意します。 |
| 機密情報 | トークンや認証情報です。 | ログや画面にそのまま出さない設計にします。 |
WebRequestを使う外部連携では、通信失敗が発生しても、EAの売買処理をどう扱うかを明確にすることが重要です。
外部シートで制御する範囲を整理する
外部シートからEAの動作を制御する場合は、制御範囲を明確にする必要があります。
外部シートの値で何でも変更できるようにすると、便利な反面、誤入力、反映タイミング、検証困難、責務混在の問題が出る場合があります。
| 制御項目 | 内容 | 依頼前の確認ポイント |
|---|---|---|
| 新規エントリー停止 | 新しい注文だけを止めます。 | 既存ポジションの決済管理を続けるか確認します。 |
| BUY / SELL許可 | 方向別にエントリーを許可します。 | 初回のみか、追加エントリーにも適用するか確認します。 |
| ナンピン停止 | 追加エントリーを止めます。 | 平均建値や決済管理を続けるか確認します。 |
| 通知ON/OFF | 通知機能の有効/無効を切り替えます。 | 通知と売買制御を混同しないようにします。 |
| ロット変更 | 外部シートでロット値を変更します。 | 反映タイミング、上限、入力ミス対策を確認します。 |
| 時間帯制御 | 外部シートで稼働時間を管理します。 | サーバー時間か日本時間かを確認します。 |
| 緊急停止 | 外部シートでEA停止を指示します。 | 何を停止し、何を継続するかを明確にします。 |
外部シート連携では、「外部制御はFIRST_ENTRY_ONLYにする」「既存ポジションの決済管理は継続する」など、影響範囲を明確にしておくと安全に設計しやすくなります。
更新頻度と反映タイミングを整理する
外部シート連携では、どのタイミングでシートを読むか、どのタイミングで書き込むかを決める必要があります。
OnTickごとに毎回通信すると、通信回数が多くなりすぎたり、EAの動作に影響したり、外部サービス側の制限にかかる場合があります。そのため、更新頻度を設計することが重要です。
| 更新方式 | 内容 | 注意点 |
|---|---|---|
| 起動時のみ | EA起動時に一度だけ読み込みます。 | 運用中の変更は反映されません。 |
| 一定間隔 | 数十秒、数分ごとに読み込みます。 | 通信負荷と反映速度のバランスを確認します。 |
| バー更新時 | 新しい足ができた時に読み込みます。 | 時間足に依存します。 |
| イベント時 | 注文や決済などのイベント時に書き込みます。 | 連続注文時の書込頻度に注意します。 |
| 手動更新 | ボタンや設定で更新します。 | 半裁量EAや管理用EAで使う場合があります。 |
| エラー時停止 | 連携失敗時に更新を止めます。 | 復帰条件とログを確認します。 |
更新頻度は、速ければよいとは限りません。外部連携は、EA本体の判定や注文処理に影響しないように設計する必要があります。
失敗時処理を整理する
外部シート連携では、通信失敗、認証失敗、権限不足、シート構造変更、CSV読込失敗などが起きる可能性があります。
そのため、連携に失敗した時にEAをどう動かすかを、あらかじめ仕様として決めておく必要があります。
| 失敗時の扱い | 内容 | 依頼前の確認ポイント |
|---|---|---|
| 前回値を継続 | 最後に正常取得した値を使います。 | 古い設定を使い続けるリスクを確認します。 |
| デフォルト値へ戻す | EA内のinput初期値を使います。 | runtime値とinput値を分けて管理します。 |
| 新規停止 | 外部連携失敗時に新規エントリーを止めます。 | 既存ポジションの決済管理を続けるか確認します。 |
| ログのみ | 失敗を記録してEA本体は継続します。 | 影響範囲を小さくしやすい方式です。 |
| 再試行 | 一定回数または一定間隔で再接続します。 | 過剰な通信にならないよう制御します。 |
| 通知する | 連携失敗をDiscordやログで通知します。 | 通知連携自体が失敗している場合も考慮します。 |
| EA停止 | EA全体を停止扱いにします。 | 取引処理への影響が大きいため慎重に決めます。 |
外部シート連携の失敗時処理は、EAのリスク管理や決済処理と競合しないように設計する必要があります。
シート構造を整理する
外部シート連携では、シートの列構成やキー項目が重要です。
列名が変わる、行の位置が変わる、空欄が入る、数値と文字列が混ざる、といった状態になると、EA側で正しく読み取れない場合があります。
| シート項目 | 内容 | 依頼前の注意点 |
|---|---|---|
| キー項目 | EA名、口座、銘柄、Magic Numberなどです。 | どの行をEAが読むかを識別します。 |
| 列名 | 設定名や出力項目です。 | EA側で参照するため、表記ゆれを避けます。 |
| データ型 | 数値、文字列、ON/OFF、時刻などです。 | 小数点、空欄、全角文字に注意します。 |
| 有効値 | 受け付ける値の範囲です。 | 想定外の値をどう扱うか決めます。 |
| 更新者 | 誰がシートを編集するかです。 | 誤入力や権限管理を確認します。 |
| 更新日時 | 最後に更新された時刻です。 | EA側で反映済みか確認する場合があります。 |
| ステータス列 | EAが読込結果やエラーを書き戻す列です。 | 読込用列と書込用列を分けます。 |
シート構造は、運用中に簡単に変えない前提で設計することが重要です。見た目の分かりやすさだけでなく、EAが安定して読み取れる構造にする必要があります。
ログで確認したい項目
外部シート連携では、連携が成功したのか、失敗したのか、取得した値をEAがどう扱ったのかをログで確認できることが重要です。
| ログ項目 | 確認内容 | 例 |
|---|---|---|
| sheet_read_check | 読込処理を実行したか確認します。 | sheet_read_check=Y |
| sheet_write_check | 書込処理を実行したか確認します。 | sheet_write_check=Y |
| external_status | 外部連携の状態です。 | OK、FAIL、SKIP、DISABLED |
| http_status | WebRequest結果です。 | 200、204、400、401、403、429など |
| read_values | 取得した値の概要です。 | 機密情報はマスクします。 |
| validation_result | 取得値が妥当かどうかです。 | valid、invalid、out_of_range |
| apply_result | EA内部へ反映した結果です。 | applied、ignored、fallback |
| write_result | 外部シートへの書込結果です。 | success、fail、retry |
| skip_reason | 読込・書込を見送った理由です。 | throttle_skip、disabled、no_change |
ログには、APIキー、Webhook URL、トークン、口座番号などの機密情報をそのまま出さないように注意してください。
バックテストと実運用で分けて考える
外部シート連携は、バックテストと実運用で挙動が変わる場合があります。
バックテストでは外部通信を使わず固定値で検証する、テスト用CSVを使う、外部書込を無効化するなど、検証用の設定を分けておくと確認しやすくなります。
| 環境 | 確認内容 | 注意点 |
|---|---|---|
| バックテスト | 外部通信を使うか、固定値で検証するかです。 | 実運用と同じ前提にしすぎないようにします。 |
| デモ口座 | 実際に外部連携を試す環境です。 | 本番シートではなく検証用シートを使うと安全です。 |
| リアル口座 | 本番運用環境です。 | 誤入力や通信失敗時の扱いを事前に決めます。 |
| VPS | 常時稼働する環境です。 | ネットワーク、ファイル保存先、権限を確認します。 |
| 開発・検証用設定 | 開発・検証用の詳細設定です。 | endpointやtokenを見える状態で検証する場合があります。 |
| 利用者向け設定 | 利用者向けの簡略設定です。 | 機密情報や危険な設定を見せすぎないようにします。 |
外部連携の開発では、開発・検証用設定と利用者向け設定を分け、検証用設定と実運用設定を混同しないことが重要です。
外部シート連携とあわせて通知機能を追加する場合
EAの通知機能とは
EAの通知機能とは、EAの状態や取引イベントを、チャート上だけでなく外部の通知先やログへ送る機能です。
通知対象には、エントリー、決済、注文失敗、SL/TP変更、建値移動、トレーリング、認証結果、WebRequestエラー、稼働開始、稼働停止、スプレッドブロック、時間帯ブロックなどがあります。
| 通知対象 | 内容 | 確認すること |
|---|---|---|
| エントリー通知 | 新規注文が出た時の通知です。 | BUY / SELL、ロット、価格、Magic Numberを含めるか確認します。 |
| 決済通知 | ポジションを閉じた時の通知です。 | 決済理由、損益、チケット、close_reasonを確認します。 |
| エラー通知 | 注文失敗や外部送信失敗の通知です。 | retcode、GetLastError、HTTP結果を確認します。 |
| 起動通知 | EA起動時や初期化完了時の通知です。 | 口座、銘柄、時間足、設定状態を含めるか確認します。 |
| 停止通知 | EA停止や条件ブロック時の通知です。 | 停止理由、時間帯、スプレッド、認証状態を確認します。 |
| ログ出力 | 通知とは別にExpertsログへ記録します。 | 通知成功・失敗を後から確認できるようにします。 |
依頼前には、通知したいイベントを一覧にし、「必ず通知するもの」と「必要な時だけ通知するもの」を分けて整理してください。
通知先を整理する
通知機能を追加する場合は、どこへ通知するかを先に決める必要があります。
通知先によって、実装方法、必要な設定、送信形式、認証情報、失敗時の確認方法が変わります。
| 通知先 | 主な用途 | 依頼前の確認ポイント |
|---|---|---|
| Discord | EAの稼働状態、注文、決済、エラーをチャンネルへ通知します。 | Webhook URL、送信先チャンネル、通知形式を確認します。 |
| メール | 重要イベントやエラーをメールで受け取ります。 | MT5側のメール設定、送信先、件名、本文を確認します。 |
| LINE連携 | LINE側で通知を受け取りたい場合に検討します。 | 現在利用できる方式、認証、送信条件を確認します。 |
| Expertsログ | EA側の動作記録として残します。 | 通知成功、通知失敗、送信内容を確認できるようにします。 |
| ファイル出力 | CSVやテキストへ通知履歴を残します。 | 保存場所、ファイル名、蓄積上限、削除ルールを確認します。 |
| Google Sheetsなど | 運用記録や集計に使います。 | API仕様、認証、送信頻度、失敗時処理を確認します。 |
複数の通知先を使う場合は、すべてに同じ内容を送るのか、通知先ごとに内容を変えるのかも整理してください。
通知タイミングを整理する
通知機能では、いつ通知するかが重要です。
通知タイミングが曖昧だと、同じイベントが何度も通知されたり、重要なエラーだけ通知されなかったりする場合があります。
| 通知タイミング | 内容 | 依頼前の注意点 |
|---|---|---|
| EA起動時 | OnInitや初期化完了時に通知します。 | 毎回通知するか、エラー時のみ通知するか確認します。 |
| 認証結果 | ライセンス認証や口座確認の結果を通知します。 | 成功も通知するか、失敗だけ通知するか確認します。 |
| エントリー時 | 新規注文が成功した時に通知します。 | 注文送信時か約定後かを確認します。 |
| 決済時 | ポジション決済時に通知します。 | TP、SL、手動、内部決済など理由を含めるか確認します。 |
| SL/TP変更時 | 建値移動やトレーリング更新時に通知します。 | 更新のたびに通知するか、初回だけにするか確認します。 |
| エラー発生時 | 注文失敗、WebRequest失敗、認証失敗などを通知します。 | 同じエラーの連投を防ぐ条件を確認します。 |
| 停止条件成立時 | 時間停止、スプレッド停止、証拠金停止などを通知します。 | 毎Tick通知にならないよう制御します。 |
通知タイミングは、OnTickごとに送るのではなく、状態変化やイベント発生時に送る設計にすると整理しやすくなります。
通知内容を整理する
通知内容は、あとから見返した時に何が起きたか分かるように整理します。
ただし、通知文に情報を詰め込みすぎると読みづらくなります。通知先ごとに、必要な項目を分けて考えます。
| 通知項目 | 内容 | 例 |
|---|---|---|
| EA名・バージョン | どのEAからの通知かを識別します。 | EA名、version |
| 口座情報 | デモ・リアルや口座識別に使います。 | 口座番号は必要に応じてマスクします。 |
| 銘柄・時間足 | どのチャートで発生したかを示します。 | GOLD、USDJPY、M15など |
| 注文方向 | BUY / SELLを示します。 | BUY、SELL |
| ロット | 注文数量です。 | 0.10 lotなど |
| 価格 | 約定価格、SL、TPなどです。 | entry_price、sl、tp |
| 理由 | 通知の発生理由です。 | ENTRY_OK、CLOSE_TP、SPREAD_BLOCKなど |
| エラー内容 | 失敗時の詳細です。 | retcode、GetLastError、HTTP code |
| 時刻 | サーバー時間やPC時間です。 | server_time、local_time |
口座番号、トークン、Webhook URL、APIキーなどの機密情報は、通知文や公開ログにそのまま出さないように注意してください。
Discord通知を追加したい場合
Discord通知では、指定したチャンネルへEAの状態やイベントを送る設計がよく使われます。
Discordへ通知する場合は、Webhook URL、通知先チャンネル、メッセージ形式、送信頻度、失敗時ログを整理します。
| 確認項目 | 内容 | 依頼前の注意点 |
|---|---|---|
| Webhook URL | Discordへ送信するためのURLです。 | 公開場所に貼らず、取り扱いに注意します。 |
| 送信先チャンネル | 通知を受け取るDiscordチャンネルです。 | テスト用と本番用を分けるか確認します。 |
| 通知形式 | 通常テキスト、整形メッセージなどです。 | 読みやすさと情報量のバランスを確認します。 |
| 送信頻度 | 通知を送る間隔や上限です。 | 同一通知の連投を防ぐ設計が必要です。 |
| 失敗時処理 | 送信に失敗した時の扱いです。 | HTTPコード、エラー内容、再試行有無をログに残します。 |
| テスト通知 | 設定確認用の通知です。 | EA起動時やボタン操作で送るか確認します。 |
Discord通知は、送信頻度が多すぎると確認しづらくなったり、外部サービス側の制限にかかったりする場合があります。依頼前に、どのイベントだけ通知するかを整理してください。
メール通知を追加したい場合
メール通知は、重要なイベントやエラーをメールで受け取りたい場合に検討します。
MT4/MT5側のメール設定を使う場合は、送信先、件名、本文、送信タイミング、送信失敗時の確認方法を整理します。
| 確認項目 | 内容 | 依頼前の注意点 |
|---|---|---|
| 送信先メール | 通知を受け取るメールアドレスです。 | 公開場所に記載しないよう注意します。 |
| 件名 | メールタイトルです。 | EA名、銘柄、イベント種別を含めるか確認します。 |
| 本文 | 通知内容です。 | 注文情報、エラー理由、時刻を含めるか確認します。 |
| 送信タイミング | いつメールを送るかです。 | エラー時だけか、通常イベントも送るか確認します。 |
| 送信テスト | メール設定が有効か確認します。 | EA側だけでなくMT5側設定も確認します。 |
| 送信失敗ログ | メール送信失敗時の記録です。 | JournalログやExpertsログで確認します。 |
メール通知は、重要なエラーや停止通知には向いていますが、頻繁なエントリー通知や細かい状態通知をすべて送ると確認が難しくなる場合があります。
LINE連携を検討する場合
LINEでEA通知を受け取りたい場合は、現在利用できる通知方式を確認する必要があります。
LINE系の通知サービスは、提供状況やAPI仕様が変わる場合があります。そのため、古いトークン方式や過去の通知サービスを前提にせず、現行の利用可能な方式、認証、送信条件、費用、利用規約を確認してから仕様を決めることが重要です。
| 確認項目 | 内容 | 依頼前の注意点 |
|---|---|---|
| 利用方式 | 現在利用できるLINE連携方式です。 | 古い方式が使える前提にしないよう確認します。 |
| 認証情報 | 送信に必要なトークンや設定です。 | 公開場所に貼らず、取り扱いに注意します。 |
| 送信先 | 個人、グループ、公式アカウントなどです。 | 方式によって送信先の扱いが異なります。 |
| 送信内容 | EA名、銘柄、イベント、エラー内容などです。 | 情報量を整理します。 |
| 送信頻度 | 通知間隔や上限です。 | 連投防止と失敗時ログを設計します。 |
| 代替手段 | Discord、メール、ログ出力などです。 | LINE連携が難しい場合の選択肢を確認します。 |
LINE連携は、外部サービス仕様の確認が必要なため、依頼時点で利用可能な方式を確認したうえで、代替通知先もあわせて整理しておくと安全です。
通知頻度と重複通知を整理する
通知機能では、通知が多すぎると確認しづらくなります。
特にOnTickで条件を確認するEAでは、同じ条件が続いている間に同じ通知を何度も送ってしまう場合があります。そのため、通知済みフラグ、送信間隔、状態変化時のみ通知などの制御が必要です。
| 制御項目 | 内容 | 依頼前の確認ポイント |
|---|---|---|
| 通知済みフラグ | 同じイベントを何度も送らないための管理です。 | イベント単位、チケット単位、状態単位で管理するか確認します。 |
| 送信間隔 | 一定時間内の連投を防ぎます。 | 秒、分、イベント単位で制限します。 |
| 状態変化通知 | 状態が変わった時だけ送ります。 | 正常から異常、停止から再開などを整理します。 |
| エラー通知抑制 | 同じエラーの連続通知を防ぎます。 | 初回だけか、一定間隔ごとかを確認します。 |
| 重要度分類 | 通知内容を重要度で分けます。 | 通常通知、警告、エラー、緊急を分けます。 |
| 通知先分岐 | 内容ごとに送信先を変えます。 | エラーだけメール、通常はDiscordなどを検討します。 |
依頼前には、「全部通知する」のではなく、どの通知を必須にするか、どの通知はログだけでよいかを整理してください。
ログ出力もあわせて整理する
通知機能を追加する場合は、通知そのものだけでなく、ログ出力も重要です。
通知が届かなかった時に、EA側で送信しなかったのか、送信したが外部サービス側で失敗したのか、WebRequestが許可されていなかったのかを区別できるようにします。
| ログ項目 | 確認内容 | 例 |
|---|---|---|
| notify_check | 通知判定を行ったか確認します。 | notify_check=Y |
| notify_event | 通知対象イベントを確認します。 | ENTRY、CLOSE、ERROR、INIT |
| notify_target | 通知先を確認します。 | DISCORD、MAIL、LINE、LOG |
| notify_message | 通知文の概要を確認します。 | 機密情報はマスクします。 |
| send_result | 送信成功・失敗を確認します。 | success、fail、skip |
| http_status | 外部送信の結果を確認します。 | 200、204、400、401、429など |
| error_detail | 失敗理由を確認します。 | webrequest_not_allowed、timeout、rate_limitなど |
| throttle_state | 連投防止で見送ったか確認します。 | throttle_skip、duplicate_skip |
通知ログには、Webhook URLやトークンなどの機密情報をそのまま出さず、必要に応じてマスクする設計が必要です。
通知失敗時の扱いを決める
外部通知は、通信状況、サービス側の制限、設定ミス、認証情報の誤りなどで失敗する場合があります。
通知失敗時に、EAの売買処理を止めるのか、通知だけ失敗としてログに残すのかは、あらかじめ決めておく必要があります。
| 失敗時の扱い | 内容 | 依頼前の確認ポイント |
|---|---|---|
| ログのみ | 通知失敗をログに残し、EA本体は継続します。 | 通常は外部通知と売買処理を分離しやすい方式です。 |
| 再試行 | 一定回数だけ再送します。 | 連投や処理遅延に注意します。 |
| 次回にまとめる | 失敗した通知を後でまとめます。 | 必要性と実装範囲を確認します。 |
| 通知停止 | 連続失敗時に通知だけ停止します。 | 復帰条件を決めておきます。 |
| EA停止 | 通知失敗でEA自体を止めます。 | 取引処理への影響が大きいため慎重に判断します。 |
| 画面表示 | チャート上に通知異常を表示します。 | ユーザーが気付きやすい反面、表示管理が必要です。 |
通知機能は、EA本体のsignal、execution、risk、exitとは分けて扱うと、保守や不具合確認がしやすくなります。
テスト通知と本番通知を分ける
通知機能を追加する場合は、テスト通知と本番通知を分けて確認できるようにすると安全です。
たとえば、EA起動時にテスト通知を送る、設定画面で通知テストを有効にする、検証用チャンネルへ送る、本番用Webhookと検証用Webhookを分ける、といった方法があります。
| テスト項目 | 内容 | 確認すること |
|---|---|---|
| 起動時テスト | EA起動時にテスト通知を送ります。 | 毎回送るか、設定ON時だけ送るか確認します。 |
| 手動テスト | ボタンや入力設定でテスト通知を送ります。 | 本番通知と区別できる文面にします。 |
| 検証用送信先 | テスト用チャンネルやメールへ送ります。 | 本番環境へ誤通知しないようにします。 |
| 失敗テスト | URL未許可やトークン誤りで失敗ログを確認します。 | 失敗時ログが出るか確認します。 |
| 連投テスト | 短時間に複数イベントが起きた時の挙動を確認します。 | 重複通知やレート制限を確認します。 |
| 復旧テスト | 一度失敗した後に復旧できるか確認します。 | 通知停止状態から戻る条件を確認します。 |
依頼前に用意するとよい資料
外部シート連携を依頼する場合は、EA本体だけでなく、シート構造、読込項目、書込項目、更新頻度、失敗時処理を整理します。
| 資料 | 内容 | 注意点 |
|---|---|---|
| 現在のソースコード | mq5、mqhなどのソース一式です。 | ex5だけでは直接改修できない場合があります。 |
| 現在のsetファイル | EAの入力設定です。 | 外部シート値との関係を確認します。 |
| シート項目案 | 読みたい列、書きたい列、キー項目です。 | 列名とデータ型を固定します。 |
| サンプルシート | 実際の行・列構成が分かる資料です。 | 機密情報は伏せた検証用を用意します。 |
| 読込頻度 | 何秒・何分ごとに読むかです。 | 通信負荷と反映速度のバランスを確認します。 |
| 書込頻度 | いつ外部へ書き込むかです。 | イベント時、一定間隔、日次などを分けます。 |
| 失敗時処理 | 通信失敗や認証失敗時の動作です。 | EA本体を止めるか、ログのみかを決めます。 |
| ログ項目 | 読込、書込、HTTP結果、反映結果です。 | 検証時に追跡できるようにします。 |
| 検証環境 | デモ口座、検証用シート、検証用endpointです。 | 本番環境と分けて確認します。 |
依頼前チェック表
| チェック項目 | 確認内容 |
|---|---|
| 読込連携か書込連携か整理した | EAが外部から読むのか、外部へ書くのかを分けます。 |
| Google SheetsかCSVか決めた | 外部APIを使うのか、ローカルファイルを使うのかを整理します。 |
| シート構造を用意した | 列名、キー項目、データ型、サンプル値を整理します。 |
| 読込項目を決めた | 稼働フラグ、方向、ロット、停止条件などを整理します。 |
| 書込項目を決めた | 稼働状態、取引履歴、エラー、集計値などを整理します。 |
| WebRequest設定を確認した | MT5側の許可URL、送信方式、タイムアウトを確認します。 |
| 認証・権限を確認した | 誰が読めるか、誰が書けるか、認証情報の扱いを確認します。 |
| 更新頻度を決めた | 起動時、一定間隔、バー更新時、イベント時などを整理します。 |
| 失敗時処理を決めた | 前回値継続、デフォルト値、ログのみ、新規停止などを分けます。 |
| ログで確認したい項目を整理した | external_status、http_status、apply_resultなどを確認します。 |
| 検証環境を分けた | 本番シートと検証用シートを分けます。 |
| ソースコードの有無を確認した | mq5、mqhがあるかを確認します。 |
FAQ
EAにGoogle Sheets連携を追加できますか?
ソースコードがあり、外部通信や認証方式を設計できる場合は相談できます。読込か書込か、シート構造、認証、権限、更新頻度、失敗時処理を整理してください。
CSV連携とGoogle Sheets連携はどちらがよいですか?
用途によって異なります。CSVはローカル記録や簡易出力に向き、Google Sheetsは外部から確認・編集しやすい反面、認証や通信、API制限の確認が必要です。
外部シートの値でEAを停止できますか?
設計次第で可能です。ただし、新規エントリー停止、追加停止、決済管理継続など、どの機能を止めるかを分けて整理する必要があります。
WebRequestが失敗した時はどうなりますか?
仕様によります。前回値を使う、デフォルト値へ戻す、新規停止する、ログだけ残す、再試行するなど、依頼前に失敗時処理を決めておく必要があります。
バックテストでも外部シート連携を使えますか?
実運用と同じ外部通信を使うかは慎重に分ける必要があります。バックテストでは固定値、検証用CSV、外部書込無効など、検証用の設計にする場合があります。
ex5ファイルだけでも外部シート連携を追加できますか?
ex5だけでは既存EAへ直接外部シート連携を追加できない場合があります。通常はmq5やmqhなどのソースコードが必要です。ソースがない場合は、補助EAや外部監視ツールとして検討する場合があります。
追加・移行する機能についてよくある質問
EAにDiscord通知を追加できますか?
ソースコードがあり、外部送信が可能な設計であれば相談できます。Webhook URL、通知イベント、通知文、WebRequest設定、送信頻度、失敗時ログを整理してください。
LINE通知を追加できますか?
LINE連携は、現在利用できる方式や外部サービス仕様を確認したうえで検討します。古い通知方式が使える前提にせず、代替通知先も含めて整理してください。
通知失敗でEAを止めるべきですか?
通知機能と売買処理は分けて考えるのが基本です。通知失敗時にEAを止めるか、ログだけ残して継続するかは、依頼前に仕様として決める必要があります。
関連ページ
相談内容に関係する設定や検証方法は、次のページで確認できます。
| 確認する内容 | 関連ページ |
|---|---|
| 既存EA・インジケータ改修を依頼する前に整理すること | 既存EA・インジケータ改修を依頼する前に整理すること |
| EA・インジケーター開発を依頼する前に | EA・インジケーター開発を依頼する前に|MT5新規開発・既存改修・外部連携の選び方 |
| MQL5のコンパイルエラー修正を依頼する前に確認すること | MQL5のコンパイルエラー修正を依頼する前に確認すること|エラー行・include・BOM |
相談先・利用条件を確認する
| 確認したい内容 | 案内ページ |
|---|---|
| 見積依頼前の確認事項 | 見積依頼前の確認事項 |
あわせて確認したいページ
今回の確認内容に関連する補足ページです。必要な項目だけ確認してください。
| 確認目的 | 関連ページ |
|---|---|
| 読後の任意の手続き・一覧入口。本文解決や購入の必須前提にしない | 外部連携開発 |
| 「EA Google Sheets 外部連携 追加依頼」の読後に「Google Sheets連携ツールを使う前に確認すること」を補足確認 | Google Sheets連携ツールを使う前に確認すること |
| 「EA Google Sheets 外部連携 追加依頼」の読後に「MQL5ファイル操作・CSVログ出力完全ガイド」を補足確認 | MQL5ファイル操作・CSVログ出力完全ガイド |
| 「EA Google Sheets 外部連携 追加依頼」の読後に「MQL5外部連携EA実務ノート」を補足確認 | MQL5外部連携EA実務ノート |
まとめ
EAに外部シート連携を追加したい場合は、読込連携なのか、書込連携なのか、双方向連携なのかを最初に分けることが重要です。
Google Sheetsを使う場合は、認証、権限、シート構造、更新頻度、API制限、失敗時処理を確認する必要があります。CSVを使う場合は、保存場所、文字コード、列形式、追記方式、ファイル肥大化を確認します。
WebRequestを使う外部連携では、MT5側の許可URL、送信方式、タイムアウト、HTTP結果、失敗時ログを整理してください。
外部シートでEAを制御する場合は、新規エントリー停止、追加停止、決済管理継続、通知ON/OFFなど、制御範囲を明確にします。外部連携の失敗時にEA本体をどう扱うかも、依頼前に仕様として決めておく必要があります。
依頼前には、ソースコード、setファイル、シート構造、読込項目、書込項目、更新頻度、失敗時処理、ログ項目、検証環境を整理しておくと確認が進めやすくなります。
お問い合わせはEAFC公式LINEへ
EAFCサイト内の記事、商品、導入前確認、設定確認、ログ確認、開発依頼前のご相談など、各種お問い合わせはEAFC公式LINEより受け付けています。
※投資助言、売買指示、利益保証、推奨ロット、推奨銘柄の案内は行っておりません。
口座番号、認証情報、Webhook URL、GAS URL、APIキーなどの機密情報は送信しないでください。
