<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>自動化 on FX検証日記</title><link>https://etherpoc.com/ja/tags/%E8%87%AA%E5%8B%95%E5%8C%96/</link><description>Recent content in 自動化 on FX検証日記</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Wed, 08 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://etherpoc.com/ja/tags/%E8%87%AA%E5%8B%95%E5%8C%96/index.xml" rel="self" type="application/rss+xml"/><item><title>EAの更新をVPSへ手作業で運ぶのをやめた話</title><link>https://etherpoc.com/ja/posts/ea-auto-deploy/</link><pubDate>Wed, 08 Jul 2026 00:00:00 +0000</pubDate><guid>https://etherpoc.com/ja/posts/ea-auto-deploy/</guid><description>&lt;p&gt;このサイトのEAはVPS上のMT5で常時稼働しています。開発は手元のPCでやるので、EAを直すたびにこういう作業が発生していました。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;手元でコンパイルして動作確認、gitにpush&lt;/li&gt;
&lt;li&gt;VPSにリモートデスクトップ(RDP)で入る&lt;/li&gt;
&lt;li&gt;VPS側でgit pull&lt;/li&gt;
&lt;li&gt;MetaEditorを開いて再コンパイル&lt;/li&gt;
&lt;li&gt;チャート上のEAを手動で再起動&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;1回あたり数分とはいえ、本番口座で動いているものなので毎回それなりに神経を使います。しかもうちの場合、EAのコードを直すのは主にAIエージェント(Claude Code)で、人間の仕事が「AIが直した結果をVPSへ運ぶ配達員」だけになっていました。これは自動化するしかない、ということで作ったのが今回の仕組みです。&lt;/p&gt;
&lt;h2 id="できあがった形"&gt;できあがった形&lt;/h2&gt;
&lt;p&gt;最終形はこうなりました。開発機で1コマンド打つと、あとは全部勝手に進みます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;開発機: deploy_ea.ps1 を実行
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├ MetaEditor CLIで全EAをコンパイル(エラーが1つでもあれば中断)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └ .mq5 と .ex5 を commit &amp;amp; push
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓ (GitHub)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;VPS: タスクスケジューラが5分毎に pull_deploy_ea.ps1 を実行
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├ 新しいコミットがあれば git pull
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├ リポジトリの .ex5 と配備先の .ex5 をハッシュ比較
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├ 差があるものだけ MQL5\Experts へコピー(旧版は退避)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └ 配備したターミナルを自動で再起動
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;MT5: チャート・EA・パラメータ・自動売買ONを自動復元して再稼働
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └ EAが起動通知をDiscordへ送信 ← これが届いたら配備完了の合図
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;方式は「pull型」を選びました。VPS側からGitHubを定期的に見に行く形です。逆の「push型」(開発機からSSHでVPSへ直接送り込む)も考えましたが、WindowsのVPSにSSHサーバーを立てて受信ポートを開ける手間と管理が増えるので、&lt;strong&gt;受信経路が一切いらないpull型&lt;/strong&gt;にしました。5分間隔のポーリング遅延はEAの更新では実害がありません。&lt;/p&gt;</description></item></channel></rss>