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 | 常時稼働する環境です。 | ネットワーク、ファイル保存先、権限を確認します。 |
| AdminDev | 開発・検証用の詳細設定です。 | endpointやtokenを見える状態で検証する場合があります。 |
| UserLive | 利用者向けの簡略設定です。 | 機密情報や危険な設定を見せすぎないようにします。 |
外部連携の開発では、AdminDevとUserLiveを分け、検証用設定と実運用設定を混同しないことが重要です。
依頼前に用意するとよい資料
外部シート連携を依頼する場合は、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に外部シート連携を追加する時は、Google SheetsやCSVだけでなく、通知機能、ログ出力、コンパイル確認、見積依頼前の資料整理もあわせて確認すると、読込・書込・失敗時処理を整理しやすくなります。
| 関連ページ | 確認ポイント |
|---|---|
| EA開発の見積依頼前に整理すること|仕様書・ログ・setファイル・検証条件 | 外部シート連携を依頼する前に、仕様、setファイル、検証条件、外部連携範囲を整理します。 |
| EAに通知機能を追加したい時に整理すること|Discord・メール・LINE・ログ出力 | WebRequestや外部送信を使う通知機能と、シート連携の違いを整理する時に確認します。 |
| EAのログ出力を増やしたい時に整理すること|Experts・Journal・CSV・通知 | CSV出力、外部連携ログ、http_status、apply_resultなどの確認項目を整理します。 |
| MQL5のコンパイルエラー修正を依頼する前に確認すること|エラー行・include・BOM | WebRequest、CSV、include、外部ファイル処理を追加した後のコンパイル確認に使います。 |
まとめ
EAに外部シート連携を追加したい場合は、読込連携なのか、書込連携なのか、双方向連携なのかを最初に分けることが重要です。
Google Sheetsを使う場合は、認証、権限、シート構造、更新頻度、API制限、失敗時処理を確認する必要があります。CSVを使う場合は、保存場所、文字コード、列形式、追記方式、ファイル肥大化を確認します。
WebRequestを使う外部連携では、MT5側の許可URL、送信方式、タイムアウト、HTTP結果、失敗時ログを整理してください。
外部シートでEAを制御する場合は、新規エントリー停止、追加停止、決済管理継続、通知ON/OFFなど、制御範囲を明確にします。外部連携の失敗時にEA本体をどう扱うかも、依頼前に仕様として決めておく必要があります。
依頼前には、ソースコード、setファイル、シート構造、読込項目、書込項目、更新頻度、失敗時処理、ログ項目、検証環境を整理しておくと確認が進めやすくなります。
