【開発開始】「MT5 × React」で自作トレードアプリの土台が完成!土日の相場休場を乗り越えた話

開発実験ログ

こんにちは、びーすけです。

今日は土曜日ですが、昨日の「業者選定(外為ファイネスト)」の興奮も冷めやらぬまま、いよいよ自作アプリの開発に着手しました。

本日のミッションは、「自作アプリ(React)のボタンを押して、MT5で実際に注文を通すこと」

これさえできれば、あとは機能を追加していくだけ。いわばアプリの「心臓部」を作る作業です。
AI(Google AI Studio)に導かれながら進めた結果、いくつかのトラブルに見舞われつつも、「自作ボタンでビットコインを買う」というピタゴラスイッチのような連携に成功しました!

その開発の一部始終を、実験ログとして公開します。

1. 現代の最強構成?「MT5 × Python × React」とは

まず、AI先生におすすめされたシステム構成がこちらです。

  • MT5 (MetaTrader 5): トレード実行部。Windows上で動く手足。
  • Python (FastAPI): MT5を操る頭脳。Reactからの指示を受け取る通信係。
  • React: コックピット。私たちが操作する画面(UI)。

「業務経験がない私にできるのか?」と不安でしたが、AIいわく「役割分担がはっきりしているので、一つずつ作れば必ず動く」とのこと。
この言葉を信じて、VS Codeで開発環境を構築し、GitHubでのソース管理まで行いました。これでいつPCが壊れても安心です。

2. 立ちはだかる壁!開発中の「あるあるトラブル」

環境構築はスムーズにいきましたが、いざ注文機能を実装しようとしたところで、いくつかの壁にぶち当たりました。失敗談としてシェアします。

トラブル①:シンボルが見つからない?

PythonからMT5に接続できたものの、注文を出そうとすると Symbol not found というエラーが……。

原因は、国内業者特有の「通貨ペアの接尾辞(サフィックス)」でした。
MT5上の表記が USDJPY ではなく USDJPYjaUSDJPY.oj のようになっている場合、プログラム側でも正確にその名前を指定しないといけないんですね。

トラブル②:注文が拒否される(Filling Mode)

次に発生したのが Unsupported filling mode エラー。
これは注文の「約定方式」の設定ミスでした。

  • 外為ファイネスト(NDD)など: 「FOK(全数量約定しなければキャンセル)」
  • 他の多くの業者: 「IOC(約定できる分だけ約定)」

業者によってこの「方言」を使い分けないといけないことを学びました。

3. 最大の誤算「土曜日は市場が休み」

エラーを一つずつ潰し、ついにコードが完成!
いざ、自作の「BUYボタン」を押してテストだ!……と思ったその時です。

Error: Market closed

……そうでした。今日は土曜日。為替市場はお休みです。
プログラムは完璧なのに、肝心の市場が閉まっているため、注文が通りません。これでは成功したかどうかの確認ができない!

ここで諦めて月曜を待つか? いや、今の熱量のまま動くところを見たい!
そこでAIが出した打開策が、「XMのデモ口座(Crypto)でテストする」ことでした。

ご存知の通り、ビットコイン(BTCUSD)などの仮想通貨は土日も動いています。
急いで接続先を「外為ファイネスト」から「XMTrading(デモ)」に書き換え、ターゲットをBTCUSDに変更して再トライしました。

4. 感動の瞬間!ピタゴラスイッチ成功

準備は整いました。
Reactで作ったシンプルな画面にある、赤い「BUY」ボタンをクリックします。

  1. Reactが信号を送る。
  2. Pythonがそれを受け取り、MT5に命令する。
  3. MT5がXMのサーバーに注文を飛ばす。

一瞬の静寂の後、画面に表示されたのは……

Success! Ticket: 12345678

そしてMT5側からも「チャリーン!」という約定音が!

「動いた……!!」

自分が作ったプログラムを通じて、実際にポジションを持つことができた。
エンジニアの方からすれば「Hello World」レベルのことかもしれませんが、トレーダーである私にとっては、「自分だけの武器を手に入れた」と思える大きな一歩でした。

まとめと次回予告

今日は、アプリ開発の第一歩として以下の土台が完成しました。

  • 開発環境: VS Code + GitHub
  • バックエンド: Python FastAPIによるMT5操作
  • フロントエンド: Reactによる発注ボタン

次回は、このボタンだけの殺風景な画面を、「現在のレート」や「保有ポジション」が表示される、もっとカッコいいコックピットに進化させていきたいと思います。

「AIがいれば、ここまでできる」。
そんなワクワク感を、引き続きお届けしていきます!

それでは、また!

最新スクショ公開

コメント

タイトルとURLをコピーしました