【移植#60】DDEをやめて口座スナップショットをCSVへ — 複数MT5を表計算で集計¶

この記事の3行まとめ
- 旧MT4のDDEMap.dllとExcelのライブ接続をそのまま持ち込まない
AccountInfo*で残高・評価額などを読み、共通CSVへ時刻付きで追記する- 複数端末は同じ列形式で集計し、DLL権限やDDE固有の切断問題を避ける
原典の目的¶
原典は、複数業者のMT4を起動し、残高と評価残高をExcelへDDE経由で表示する初心者向け解説です。業者ごとに識別子を変え、各MT4からExcelへ値を送る仕組みでした。
MT5ではDDEをCSVスナップショットへ置き換える¶
MT5版では、AccountInfoDouble()とAccountInfoString()で現在の口座情報を読み、共通ファイル領域のCSVへ1行ずつ追記します。行には次の値を含めます。
- ローカル時刻
- ユーザー指定のブローカーID
- サーバー名と通貨
- 残高、評価額、証拠金、余剰証拠金
各MT5端末でInpBrokerIdを変えれば、同じCSVを表計算ソフトへ読み込んで端末別に集計できます。これはライブDDEではなく、指定間隔で取得した監査用スナップショットです。
60_Account_Snapshot_Csv_Exporter_v1_00.mq5 をダウンロード
安全性と限界¶
インジケータは読み取りとファイル追記だけを行い、注文・ポジション変更やDLL呼び出しはしません。ファイルをExcel側で開いたままにすると共有状態によって書き込みに失敗することがあるため、取り込み時はコピーを使うか、読み取り専用運用にします。
また、共通ファイル領域は同じPC上の端末間共有です。別PC・VPSの口座を一つに集めるには、別途安全な転送手段が必要です。CSVを公開場所へ置いたり、口座番号や認証情報を列へ追加したりしないでください。
検証結果¶
専用MT5(Build 6061、EURUSD・H1)でインジケータと独立capture EAをコンパイルし、エラー0・警告0でした。画像はcaptured=true、画像エラー0で取得でき、注文・ポジション操作はありません。
まとめ¶
DDEは便利ですが、DLL許可、Excel側の表記、端末ごとのIDなど、接続状態の切り分けが難しくなります。MT5では口座情報を標準APIで読み、時刻付きCSVとして残すことで、まず観測可能なデータ連携を作れます。ライブ表示が必要になったら、その後で転送方式を追加すればよいのです。
前後の記事¶
前: 【移植#59】QQEの矢印を確定足だけにする — メインチャートへ安全に表示
次: 【移植#61】日時をUnix秒へ変換する — MT5のdatetimeを往復検証