PR DMM FX 新規口座開設 + 取引で 最大30万円キャッシュバック 詳細 ▶

Pythonで MT5 の発注APIを実装する — Windows VPS で動かすまでの手順

[ 広告 / PR ]
🔰 この記事のポイント (初心者向け)

はじめての方も読めるよう、専門用語はカンタンな言葉に言い換えながら解説します。「なんとなく聞いたことある」レベルの知識で大丈夫です。

📖 この記事で出てくる用語
  • EA = Expert Advisor。MT4/MT5上で動く自動売買プログラム
  • MT5 = MetaTrader 5。世界標準のFXトレードソフト
  • VPS = Virtual Private Server。レンタルできる仮想サーバー(24時間稼働用)
Pythonで MT5 の発注APIを実装する — Windows VPS で動かすまでの手順
イメージ画像
🐍

Python × MT5 実装

📢 広告 (PR) を含む場合があります

Pythonで MT5 の発注APIを実装する — Windows VPS で動かすまでの手順

最終更新: 2026-05-05

著者
Naoki Hashimoto
クラウドアーキテクト
AWS/GCP の SAA/PCA 取得済。複数のFXブローカーで Python EA を運用中。

MT5のPythonライブラリ MetaTrader5 を使うと、Pythonから直接ポジション操作ができます。Windows VPS上で安定稼働させるまでのつまずきポイントを実コードと共に共有します。

動作環境

  • OS: Windows Server 2022 (ConoHa for Windows VPS の 2GB プラン)
  • Python: 3.12.x (公式インストーラから .msi)
  • MT5: ブローカー指定の最新ビルド
  • ライブラリ: MetaTrader5==5.0.45

セットアップ手順

# PowerShell で実行
py -3.12 -m venv venv
.\venv\Scripts\activate
pip install MetaTrader5 pandas numpy

# MT5 GUI で「ツール → オプション → エキスパートアドバイザー」
# 「アルゴリズム取引を許可する」「DLLの使用を許可する」 ✓

最小の発注コード

import MetaTrader5 as mt5

if not mt5.initialize():
    raise SystemExit(f"init失敗: {mt5.last_error()}")

symbol = "EURUSD"
info = mt5.symbol_info(symbol)
price = mt5.symbol_info_tick(symbol).ask

req = {
    "action": mt5.TRADE_ACTION_DEAL,
    "symbol": symbol,
    "volume": 0.01,
    "type": mt5.ORDER_TYPE_BUY,
    "price": price,
    "sl": price - 0.0030,   # 30 pips SL
    "tp": price + 0.0050,   # 50 pips TP
    "deviation": 10,
    "magic": 20260505,
    "comment": "py-test",
    "type_time": mt5.ORDER_TIME_GTC,
    "type_filling": mt5.ORDER_FILLING_IOC,
}

result = mt5.order_send(req)
print(result)
mt5.shutdown()

つまずきポイント 5つ

1. type_filling の選択

ブローカーごとに対応する filling mode が違います。FOK のみ対応の業者で IOC を送ると retcode=10030 で弾かれます。
info.filling_mode をビット演算で確認し、対応する値を選んでください。

2. ポジションのモード (Hedging vs Netting)

口座が Hedging なら 1 銘柄に複数ポジション可、Netting なら自動で相殺。Pythonからは mt5.account_info().margin_mode で判定できます。

3. SL/TPの最小距離

ブローカーは「現在価格から最低N pips離さないとSL/TPを置けない」というルールを持ちます (SYMBOL_TRADE_STOPS_LEVEL)。
スキャル系で短SLを使う場合は、ここで弾かれて発注失敗になりがち。事前に info.trade_stops_level をチェックします。

4. VPSの再起動でMT5が落ちる

Windows Update の自動再起動でMT5が止まると、Pythonスクリプトも気付かず空回ります。
タスクスケジューラの「ログオン時」トリガーで MT5 と Python の両方を自動起動。さらに Python 側でも 60秒に 1回 mt5.terminal_info() で接続生存確認を実装。

5. 多重発注の防止

初心者が引っかかりやすいのが、ループ毎にエントリーしてしまうバグ。Magic Number 単位で既存ポジションをチェックし、既にあればスキップする実装が必須です。

def has_open(symbol, magic):
    pos = mt5.positions_get(symbol=symbol) or []
    return any(p.magic == magic for p in pos)

本番投入前のチェックリスト

  • ☐ デモ口座で1週間連続稼働 (週末を含む) で異常なし
  • ☐ Windows Update 設定でアクティブ時間が EA 動作時間と被らない
  • ☐ Magic Number で識別、複数 EA を共存できる
  • ☐ ロガー (file + stdout) を実装、24時間分のログを保持
  • ☐ 実弾は最初は 0.01 lot で 1〜2 週間

まとめ

Python + MT5 は MQL5 を書かずに高速プロトタイピングできるのが最大の強みです。バックテストは MT5 標準のストラテジーテスターほど厳密でない部分もあるため、検証は MQL5 で、本番運用は Python で、と使い分けると効率が良いと感じています。

参考にした情報源

免責: 本記事は情報提供のみを目的としており、投資勧誘・投資助言ではありません。当サイト管理人は金融商品取引業の登録を行っておらず、個別具体的な投資判断についての助言は行えません。FX/暗号資産は元本毀損のリスクがあります。最終判断はご自身の責任でお願いします。
PR · DMM FX 公式

国内口座数 No.1 — DMM FX

業界最狭水準スプレッド + スマホアプリ高評価 + 最短当日取引開始
新規口座開設で 最大 300,000円 キャッシュバック中

▶ DMM FX 公式サイトで詳細

※本サイトはアフィリエイトプログラムにより収益を得ています。投資はご自身の判断・責任で。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


投稿をさらに読み込む