コンテンツへスキップ
プロップEA攻略
戻る

MT5 vs cTrader|同じEAロジックで比較した運用の実態

はじめに

EAを開発するとき、最初に決めなければならないのがプラットフォームの選択です。MT5かcTraderか。この選択は戦略そのものと同じくらい重要です。

筆者は同一のトレーディングロジックをMT5(MQL5)とcTrader(C#)の両方で実装し、複数のプロップファームで並行運用しています。「どちらが優れているか」ではなく、「どの場面でどちらが適しているか」を、実運用のデータをもとに整理します。

言語とエコシステム

項目MT5 (MQL5)cTrader (C#)
言語MQL5(C++ライク独自言語)C#(.NET 6)
IDEMetaEditor(専用)Visual Studio / Rider
デバッグプリントデバッグ中心本格的なデバッガ利用可
ライブラリMQL5標準ライブラリNuGetパッケージ全体
AI補完対応が限定的GitHub Copilot等が高精度

開発体験はcTraderが圧倒的に快適です。C#は汎用言語のため、AIコード補完の精度が高く、NuGetで統計ライブラリなども自由に使えます。MQL5は独自言語のため、AIの学習データが少なく補完精度が低い傾向があります。

一方、MQL5はEA開発に特化しているため、トレード関連のコードは簡潔に書ける場面もあります。インジケーターの呼び出しやポジション管理は、MQL5の方がコード量が少なく済むことが多いです。

バックテスト

速度比較

同一ロジック、USDJPY H1のバックテスト結果です。

テストモデルMT5cTrader
生成ティック(7年)3.4秒非対応
リアルティック(7年)53秒
リアルティック(2年)37秒

MT5のバックテスト速度は圧倒的です。特に「生成ティック(Every tick)」モードは数秒で7年分のテストが完了します。

cTraderにもバックテスト機能はありますが、MT5ほどの速度と柔軟性はありません。WFA(ウォークフォワード分析)のような大量の反復テストが必要な場合、MT5の速度は大きなアドバンテージになります。

データ品質

データ種別説明信頼性
生成ティック1分足データからティックを擬似生成低〜中
リアルティックブローカーの実ティックデータ
QDM(Quantly Data Manager)Dukascopyのティックデータをダウンロードし、MT5に反映させた高品質データ最高

生成ティックとリアルティックで結果が大きく異なるEAは危険です。ティック精度に依存するスキャルピング系は特に注意が必要です。H1以上の時間足を使う戦略であれば、生成ティックでも実用的な精度が得られます。

VPS運用

EA運用で最も差が出るのがサーバー運用です。

MT5の運用

項目内容
OSWindows必須
GUI必須(GUIなしでは動作しない)
接続方法RDP(リモートデスクトップ)
メモリ~500MB〜1GB/インスタンス
同時実行1インスタンスにつき1口座

MT5はGUIアプリケーションのため、常にリモートデスクトップ接続でGUIセッションを維持する必要があります。SSH経由でのバックグラウンド実行はできません。

複数口座を運用するには、MT5を複数インストールするか、PortableMode用のフォルダを複数作成する必要があります。口座数が増えるとメモリ消費が急増します。

cTraderの運用

項目内容
OSWindows / Linux(Wine経由)
GUI不要(CLI版あり)
接続方法SSH
メモリ~200MB/プロセス(CLI版)
同時実行プロセス単位で無制限

cTraderにはCLI版(ctrader-cli.exe)が存在し、GUIなしでcBotを実行できます。これが運用面での最大のアドバンテージです。

GUI版: ~1.6GB / プロセス
CLI版: ~200MB / プロセス(約1/8)

メモリ消費が1/8になるため、安価なVPS(RAM 2GB程度)でも複数プロセスを稼働できます。

Linux (Wine) での運用

cTrader CLIはWindows用バイナリですが、Wine経由でLinux上でも動作します。

構成要素説明
WineWindows APIエミュレーション
Xvfb仮想ディスプレイ(.NETが要求するGDI+用)
systemdプロセス管理・自動再起動
.NET GC最適化メモリ消費を抑制する設定
systemd (自動再起動)
  → Wine (Windows API変換)
    → ctrader-cli.exe (.NET 6)
      → cBot
        → cTrader Server (WebSocket)

systemdのテンプレートサービスを使えば、1つの設定ファイルで任意の数のcBotインスタンスを管理できます。

# 口座Aの起動
systemctl start ctrader-bot@account-a

# 口座Bの起動
systemctl start ctrader-bot@account-b

# 全口座の状態確認
systemctl status ctrader-bot@*

ただしWineの運用には注意点があります。

監視と自動復旧

24時間稼働のEAにはwatchdog(監視)が必要です。

MT5の場合

MT5にはネイティブの自動復旧機能がありません。外部スクリプト(PowerShell等)で監視する必要があります。

cTraderの場合

systemdのRestartポリシーを設定するだけで、基本的な自動復旧は完了します。

設定
Restarton-failure
RestartSec30秒
OOMScoreAdjust-500(OOM Kill優先度を下げる)

プロセスが異常終了すれば30秒後に自動再起動します。systemdのジャーナルにログが残るため、障害分析も容易です。

プロップファーム対応

プラットフォーム選択はプロップファーム側の対応状況にも依存します。

プロップファームMT5cTrader
Fintokei
FTP(Funded Trading Plus)
Fundora
Funded7
DarwinexZero
FundedHive

MT5のみ対応、cTraderのみ対応のファームがそれぞれ存在します。両方で実装を持っていると、選択肢が最大化されます。

同一ロジックでの性能差

同一ロジックをMT5とcTraderの両方で実装した結果、以下のことがわかりました。

一致する点

異なる点

差異要因説明
スプレッドブローカーごとに異なる。特に早朝・指標時の開きに差が出る
約定方式MT5: Market Execution中心。cTrader: Market/Limit/Stop
ティック配信ティックの粒度・タイミングがブローカーにより微妙に異なる
スワップブローカー・プロップファームにより異なる(Swap-free口座もある)

ロジックの違いではなく、ブローカー環境の違いが成績差の主因です。同一プラットフォーム・同一ブローカーであれば、MT5とcTraderの実行結果は実質的に同じになります。

どちらを選ぶべきか

用途推奨理由
戦略開発・バックテストMT5バックテスト速度が圧倒的。WFA等の大量テストに必須
本番運用・マルチ口座cTraderCLI対応、低メモリ、systemd管理、Linux対応
MT5専用ファームMT5選択の余地なし(FTP等)
cTrader専用ファームcTrader選択の余地なし(Fundora等)
予算が限られているcTrader安価なLinux VPSで運用可能

理想的には、MT5で開発・検証し、cTraderで本番運用するワークフローが最も効率的です。開発速度と運用安定性の両方を確保できます。

もちろん、同一ロジックを2言語で実装・保守するコストはかかります。戦略が頻繁に変わる段階ではMT5一本に絞り、戦略が固まってからcTraderに移植するのが現実的な進め方です。

おわりに

MT5とcTraderは「どちらが優れているか」ではなく、フェーズと用途で使い分けるのが正解です。


この記事をシェア:

Next Post
EA×複数口座スケーリングの数学|確率で勝つプロップファーム戦略