


5年程前に簡単な比較記事を書いたのですが、MT5のバージョンアップが繰り返され、機能差もさらに大きなものとなってきましたので、改めて情報を整理してみたいと思います。
MT4は2005年にリリースされて以降、長年にわたりトレーディングプラットフォーム市場の主力製品として活躍し、根強い人気を誇っていますが、現在はMT5を使用することが推奨されています。
一方で、MT4で開発した資産(EA、インジケータ)がMT5へ簡単に移行できない問題がありMT4を使い続けているユーザーが多い状態が続いていますが、MT4を使い続けることのデメリットは日増しに大きくなっています。
本記事では改めてMT5とMT4の機能の違いを最新情報を元におさらいすることで、MT4を使い続けることのデメリット、MT5を使用するメリットそれぞれについて情報をまとめてみたいと思います。
製品を比較する前の大前提として、MT4は既に衰退フェーズに入っている製品のため、いまから新規に使い始めることは推奨されていないことを理解する必要があります。
MetaTraderの開発を行っている MetaQuotes社 CEO Renat Fatkhullin 氏が、MQL5.comコミュニティ内でMT4ライセンスが既にブローカー向けに販売されていないことについて言及しています。
念のため、MT4プラットフォームも提供している証券会社HFMのビジネスディベロップメントチームにも照会してみましたが、
という趣旨の回答がありました。 MT4のライセンスが証券会社向けに販売終了されていることは間違いないと思われます。
個人投資家が今すぐに現在の証券会社でMT4が利用できなくなるわけではありませんが、今後MT4の利用が拡大する見込みが無いことは確実です。
MT4のリリースノートを遡ると、2015年前後までは何かしらの機能改善が行われていますが、それ以降は更新の頻度が下がり、セキュリティアップデートや不具合対応と思われるリリースしかされていないことが分かります。
一方、MT5のリリースノートを見ると、おおよそ3ヶ月サイクルで大幅な機能追加、改善が繰り返されています。
MT4は10年近く機能追加が行われていないことになり、時間の経過とともにMT5とMT4の機能差は大きく広がっています。
Renat Fatkhullin 氏の上記発言の中で、「2023年中のサポート停止」という趣旨の発言があったものの、現時点ではサポート終了の発表には至っていないようです。
しかし、遅かれ早かれMT5よりも先にMT4がEOLに至ることは避けられないと考えられます。
製品のサポートが終了になると、WindowOSの最新バージョンとの互換性が保証されなくなったり、セキュリティ対策等のメンテナンスも行われなくなることから、MT4を安定して利用することが難しくなることが予想されます。
MT4ユーザーはこの事実を理解した上で、リスクを理解して使い続けるか、早めに移行準備を進めるかについて真剣に検討すべきと考えられます。
これらの理由から、新たにトレーディングプラットフォームを利用し始める場合は、MetaTrader 5(MT5)を選択することを強くお勧めします。
MT5は、既にMT4に比べて多くの点で優れています。MT5を選択することが最適な選択肢と言えるでしょう。
具体的にどのような機能の違いがあるのかを一覧にまとめました。 尚、根拠については公式ドキュメント、リリースノートを中心に情報を整理しました。
各行ごとの詳細な比較は、次の章以降に説明しています。 非常に長いため、必要な箇所のみ目次からジャンプして頂くなどしてご参照ください。
https://www.metatrader5.com/en/trading-platform/comparison-mt5-mt4
https://www.metatrader5.com/ja/releasenotes
| 分類 | 項目 | MT5 | MT4 |
|---|---|---|---|
| 取引環境 | サポートする市場 | 為替、先物、オプション、株式、債権 | 為替(、先物、オプション、株式、債権) |
| 時間足 | 21種類 | 9種類 | |
| 注文方式 | 部分決済 | 可能 | 不可能 |
| フィルポリシー | FOK | IOC | Return | FOK | |
| 保留注文の種類 | 6種類 | 4種類 | |
| 機能 | 経済指標カレンダーの利用 | 可能 | 不可能 |
| チャートオブジェクトの種類 | 44 | 31 | |
| テクニカルインジケータ | 109 | 51 | |
| python統合 | 可能 | 不可能 | |
| バックテスト | アーキテクチャ | マルチスレッド | シングルスレッド |
| 複数通貨取引 | 可能 | 不可能 | |
| データモデル | リアルティックあり | リアルティックなし | |
| マルチプロセス対応 | 対応 | 未対応 | |
| 複数PCでの分散処理 | 対応 | 未対応 | |
| クラウドリソース活用 | 対応 | 未対応 | |
| ヒストリカルデータ | 証券会社データ(口座タイプ別) | MetaQuotes社レート | |
| スプレッド | リアルデータ | 固定値 |
| 分類 | 項目 | MQL5 | MQL4 |
|---|---|---|---|
| 言語仕様 | オブジェクト指向プログラミング | 対応 | 一部対応 |
| 機能 | データベースアクセス | SQLite3をサポート | 未対応 |
| Python統合 | pythonライブラリを使用しpythonからMT5操作が可能 | 未対応 | |
| 機械学習モデル組み込み | ONNX形式をサポート | 未対応 | |
| OpenCL対応 | 対応 | 未対応 | |
| 行列・ベクトル計算用関数 | 対応 | 未対応 |
MetaQuotes公式の比較表には「MT5は 為替、先物、オプション、株式、債権に対応し、MT4は為替のみ」と書かれているようですが、実際に同一証券会社で銘柄比較をして見るとMT4でも株式、債権のレートが取引可能な状態で配信されるケースもあることが分かりました。
例として、証券会社HFMにおける、MT5(Premium口座)とMT4(Premium口座)の提供銘柄の差を比較してみました。
| 分類 | HFM(Premium) MT5 | HFM(Premium) MT4 |
|---|---|---|
| Forex | 60 | 59 |
| Metals & Energies | 8 | 8 |
| Futures & Indices | 27 | 27 |
| Commodities | 7 | 7 |
| Stock | 193 | 94 |
| ETFs | 23 | 0 |
| Crypto | 19 | 20 |
| 合計 | 337 | 215 |
銘柄の総数は、MT5が337件、MT4が215件となり、MT5の方が多いことが分かります。
FXトレーダーが普段よく見ている為替銘柄(Forex)は差がほとんどないものの、株式個別銘柄(Stock)、ETF(ETFs)を中心にMT5の方が選択肢が豊富になっています。
MT5やMT4は自動売買ツールを実行できることが大きな魅力の一つですが、株式指標、個別株式、セクター別ETF、コモディティ等に対しても自動売買が出来るのはとても魅力的で、トレードの選択肢が大きく広がります。
普段FX銘柄しか見ていない方々は、これだけ多くの銘柄に対してトレードできる機会があるので、手持ちのロジックが機能する銘柄がないか、広範囲にスキャンしてみるのも面白そうですね。
次に、MT5でも証券会社によって銘柄の違いがあるのかを見てみます。 HFM(Premium口座)と、XM(Standard口座)で比較を行いました。
| 分類 | HFM(Premium) MT5 | XM(Standard) MT5 |
|---|---|---|
| Forex | 60 | 57 |
| Metals & Energies | 8 | 0 |
| Futures & Indices | 27 | 41 |
| Commodities | 7 | 0 |
| Stock | 193 | 0 |
| ETFs | 23 | 0 |
| Crypto | 19 | 31 |
| 合計 | 337 | 129 |
XMはHFMと比較すると200銘柄もの差があり、数だけ見るとかなり少ないことがわかります。
銘柄が属するグループは各社独自の名称で管理され統一感がないため個別に名寄せを行いましたので、意図しないところに分類されているかもしれませんが、件数が大きく違うことは明らかです。
特に個別株式やETFの提供がないことは大きな差となっていますので、既にXMを利用している投資家も、複数の証券会社を並行して利用する、または乗り換えることで新たなトレード機会が広がるかもしれません。
| 時間足 | 時間足(プログラム上の表記) | MT5 | MT4 |
|---|---|---|---|
| 1分 | PERIOD_M1 | ||
| 2分 | PERIOD_M2 | ||
| 3分 | PERIOD_M3 | ||
| 4分 | PERIOD_M4 | ||
| 5分 | PERIOD_M5 | ||
| 6分 | PERIOD_M6 | ||
| 10分 | PERIOD_M10 | ||
| 12分 | PERIOD_M12 | ||
| 15分 | PERIOD_M15 | ||
| 20分 | PERIOD_M20 | ||
| 30分 | PERIOD_M30 | ||
| 1時間 | PERIOD_H1 | ||
| 2時間 | PERIOD_H2 | ||
| 3時間 | PERIOD_H3 | ||
| 4時間 | PERIOD_H4 | ||
| 6時間 | PERIOD_H6 | ||
| 8時間 | PERIOD_H8 | ||
| 12時間 | PERIOD_H12 | ||
| 1日 | PERIOD_D1 | ||
| 1週間 | PERIOD_W1 | ||
| 1ヶ月 | PERIOD_MN1 |
MT5は21種類、MT4は9種類となっており、MT5はMT4に比べて多くの時間足をサポートしています。これにより、トレーダーはより詳細かつ柔軟な市場分析が可能となります。
MT5では、部分決済をサポートしています。これは、トレーダーが保有するポジションの一部を特定の価格で決済し、残りのポジションを維持することができる機能です。部分決済は、リスク管理や利益確定のための柔軟なツールとして非常に有用です。
例えば、あるポジションが目標価格に達した際に、その一部を決済して利益を確定し、残りのポジションでさらなる価格上昇を狙うことができます。これにより、トレーダーは利益を確保しつつ、市場の動向に応じて戦略を調整することが可能となります。
フィルポリシーは、市場の流動性が低い場合、高速かつ大量の取引を行う場合等において、全ての約定が通らない場合にどのように対応するのか、その方式を定めるものです。
FX銘柄を一般的なロット数で取引している範囲ではあまり意識することがないものですが、上記に該当する場合に注文が通らない場合や、自動売買ツールから取引を行う場合に明示する必要があるなど、一部の利用者には関係する内容です。
| フィルポリシー | 説明 | MT5 | MT4 |
|---|---|---|---|
| FOK(Fill or Kill) | 注文が指定された数量ですぐに完全に執行されるか、まったく執行されないかのいずれかです。部分的な執行は許されません。 | ||
| ICO(Immediate or Cancel) | 注文ができるだけ多くの数量で直ちに執行され、残りの数量はキャンセルされます。部分的な執行が可能です。 | ||
| Return | 注文ができるだけ多くの数量で直ちに執行され、残りの数量も継続して注文を行います。 |
MT5の方が、複数のフィルポリシーをサポートしていることが分かります。
プラットフォームの差があることは分かりまりましたが、実際のところはユーザーが自由に指定できるものではなく、各証券会社が定めたものを固定で使用することになります。
これは、各銘柄の「仕様」を確認すると記述されているため、ご自身で確認頂くことができます。 HFMはFOK、XMはIOCが使用されているようです。
| HFM | XM |
|---|---|
![]() | ![]() |
以下の表は、MT4とMT5でサポートされる保留注文の種類とその説明を比較したものです。
| 保留注文の種類 | 日本語表記 | 説明 | MT5 | MT4 |
|---|---|---|---|---|
| Buy Limit | 買い指値 | 現在の市場価格より低い価格で買い注文を設定します。価格が指定価格まで下がった場合に注文が実行されます。 | ||
| Sell Limit | 売り指値 | 現在の市場価格より高い価格で売り注文を設定します。価格が指定価格まで上がった場合に注文が実行されます。 | ||
| Buy Stop | 買い逆指値注文 | 現在の市場価格より高い価格で買い注文を設定します。価格が指定価格まで上がった場合に注文が実行されます。 | ||
| Sell Stop | 売り逆指値注文 | 現在の市場価格より低い価格で売り注文を設定します。価格が指定価格まで下がった場合に注文が実行されます。 | ||
| Buy Stop Limit | 買いストップリミット注文 | Buy StopとBuy Limitを組み合わせた注文方式です。価格がBuy Stopまで上がったら、あらかじめ指定した買い指値注文が有効化されます。 | ||
| Sell Stop Limit | 売りストップリミット注文 | Sell StopとSell Limitを組み合わせた注文方式です。価格がSell Stopまで下がったら、あらかじめ指定した売り指値注文が有効化されます。 |
MT5は標準でストップリミット注文が使用できるようになっています。
各保留注文の取引イメージと、実際の注文画面の入力項目との対応関係を図にまとめました。
| 買い指値 | ![]() | ![]() |
| 売り指値 | ![]() | ![]() |
| 買い逆指値注文 | ![]() | ![]() |
| 売り逆指値注文 | ![]() | ![]() |
| 買いストップリミット注文 | ![]() | ![]() |
| 売りストップリミット注文 | ![]() | ![]() |
MT5は、標準機能として経済指標カレンダーのデータを統合しています。これは、トレーダーが重要な経済イベントや指標の発表を追跡し、取引決定に反映させるための強力なツールです。
この機能はEAからもデータにアクセス可能なため、当日の指標発表時刻やイベント名、重要度を取得し、トレードに活用する(指標前のエントリを見送る、他)こともできます。
重要な指標発表前後は相場が荒れることが予想されるため、自動化するにしても経済指標カレンダーの情報の活用し、トレードを世業することは必要不可欠です。
この機能を使用するためだけでもMT5を利用するメリットがあると言えるほど、大きな機能ですね。
尚、指標発表の予想値、結果も取得が可能ではありますが、 経済指標の結果は各国が公開するWebページのデータを自動収集する仕組みとなっているようで、指標発表後はそれらのデータがコンマ数秒の遅延もなく速やかに入手できるものではないようです。
ある程度の遅延も起きることから、経済指標の発表値を元にしたトレードは実現が困難です。
※元々イベント発表直後の取引(特にハイレバ、大口ロットでの取引)は、証券会社の利用規約によって制限されている場合もありますので、仮に実施する場合は十分に確認を行ってから取引するようにしましょう。
以下の表は、MT4とMT5で標準提供されるテクニカルインジケータを分類して比較したものです。
| 分類 | インジケータ | MT5 | MT4 |
|---|---|---|---|
| トレンド系 | Adaptive Moving Average | ||
| Average Directional Movement Index | |||
| Average Directional Movement Index Wilder | |||
| Bollinger Bands | |||
| Double Exponential Moving Average | |||
| Envelopes | |||
| Fractal Adaptive Moving Average | |||
| Ichimoku Kinko Hyo | |||
| Moving Average | |||
| Parabolic SAR | |||
| Standard Deviation | |||
| Triple Exponential Moving Average | |||
| Variable Index Dynamic Average | |||
| オシレーター | Average True Range | ||
| Bears Power | |||
| Bulls Power | |||
| Chaikin Oscillator | |||
| Commodity Channel Index | |||
| DeMarker | |||
| Force Index | |||
| MACD | |||
| Momentum | |||
| Moving Average of Oscillator | |||
| Relative Strength Index | |||
| Relative Vigor Index | |||
| Stochastic Oscillator | |||
| Triple Exponential Average | |||
| Williams' Percent Range | |||
| ボリューム系 | Accumulation/Distribution | ||
| Money Flow Index | |||
| On Balance Volume | |||
| Volumes | |||
| ビル・ウィリアムズ | Accelerator Oscillator | ||
| Alligator | |||
| Awesome Oscillator | |||
| Fractals | |||
| Gator Oscillator | |||
| Market Facilitation Index | |||
| Examples | FlameChart | ||
| ChartPanel | |||
| SimplePanel | |||
| Accelerator | |||
| AD | |||
| ADX | |||
| ADXW | |||
| Alligator | |||
| AMA | |||
| ASI | |||
| ATR | |||
| Awesome | |||
| BB | |||
| Bears | |||
| Bulls | |||
| BW‐ZoneTrade | |||
| CCI | |||
| CHO | |||
| CHV | |||
| ColorBars | |||
| ColorCandlesDaily | |||
| ColorLine | |||
| Custom Moving Average | |||
| DEMA | |||
| DeMarker | |||
| DPO | |||
| Envelopes | |||
| Force_Index | |||
| Fractals | |||
| FrAMA | |||
| Gator | |||
| Gator_2 | |||
| Heiken_Ashi | |||
| Ichimoku | |||
| iExposure | |||
| MACD | |||
| MarketFacilitationIndex | |||
| MFI | |||
| MI | |||
| Momentum | |||
| OBV | |||
| OsMA | |||
| ParabolicSAR | |||
| Price_Channel | |||
| PVT | |||
| ROC | |||
| RSI | |||
| RVI | |||
| StdDev | |||
| Stochastic | |||
| TEMA | |||
| TRIX | |||
| Ultimate_Oscillator | |||
| VIDYA | |||
| Volumes | |||
| VROC | |||
| WPR | |||
| W_AD | |||
| ZigZag | |||
| ZigZagColor | |||
| Free Indicators | Camarilla Channel | ||
| DeMark Channel | |||
| Donchian Channel | |||
| Fibonacci Channel | |||
| Keltner Channel | |||
| MarketProfile Canvas | |||
| MarketProfile | |||
| MurreyMath Channel | |||
| NRTR Channel | |||
| Parabolic Channel | |||
| Pivot Channel |
MT5は109件、MT4は51種類のインジケータが標準機能として配置されていることが分かりました。 ※公式の比較ページではMT5が38件、MT4が30件と書かれていますが、単純にツリーに表示されているものを全件カウントした結果、左記の通りとなりました。
MT5のインジケータのExample 配下のインジケータは、その他のグループ配下のものと重複するものがあるようですが、(Example配下は単にインジケータそのものの提供だけでなくサンプルソースコードの提供もあるため、同一インジケータが存在するようです)
その重複を差し引いてもMT5の方が非常に多くのインジケータがすぐに使える状態になっています。
標準機能として備わっているものは市場参加者がよく使用するもの(=結果的によく見られ、機能しやすいもの)と考えられますので、まずはこの範囲のインジケータを中心に使用してみることをお勧めします。
どうしても標準機能で満たせない要件がある場合は、MT5、MT4共にカスタムインジケータを使用すれば独自のルールを機能化することができます。
尚、カスタムインジケータを作成する場合は、MT5を使用した方が圧倒的に有利です。 これはMT5で使用されるプログラミング言語(MQL5)と、MT4で使用されるプログラミング言語(MQL4)の違いによるものですが、 言語の機能差異についても大きな違いがあるため、言語の違いについては後述します。
以下の表は、MT4とMT5で利用可能なチャートオブジェクトの種類を比較したものです。
| チャートオブジェクトの種類 | 説明 | MT5 | MT4 |
| 垂直線 | チャート上の特定の時間を示す垂直線 | ||
|---|---|---|---|
| 水平線 | チャート上の特定の価格レベルを示す水平線 | ||
| トレンドライン | トレンドの方向を示すための斜めの線 | ||
| アングルトレンド | 一定の角度を持つトレンドラインで、価格の変動角度を示す | ||
| サイクルライン | 一定の周期で繰り返される市場の動きを示すための縦線 | ||
| 矢印線 | 矢印の付いた線で、方向や特定の動きを示す | ||
| 平行チャネル | 平行な2本のトレンドラインで構成されるチャネル | ||
| 標準偏差チャネル | 移動平均線と価格の標準偏差を基にしたチャネル | ||
| 回帰チャネル | 回帰分析に基づいたチャネル | ||
| アンドリューピッチフォーク | 3つのポイントを基に描かれるトレンドチャネル | ||
| ギャンライン | ギャン理論に基づく価格と時間の関係を示す | ||
| ギャンファン | 価格のサポートとレジスタンスレベルを示す | ||
| ギャングリッド | 価格と時間のバランスを視覚化する。 | ||
| フィボナッチリトレースメント | 価格の反転ポイントを示すためのフィボナッチリトレースメント | ||
| フィボナッチタイムゾーン | 時間の経過に基づくフィボナッチレベルを示す | ||
| フィボナッチファン | 価格のサポートとレジスタンスレベルを示す | ||
| フィボナッチアーク | 価格の戻りとサポート・レジスタンスレベルを示す | ||
| フィボナッチチャネル | フィボナッチ比率に基づいたチャネル | ||
| フィボナッチエクスパンション | 価格の戻りとサポート・レジスタンスレベルを示す | ||
| エリオット推進波 | 価格が主要トレンドに沿って5つの波動で動くことを示す | ||
| エリオット修正波 | 価格が主要トレンドに対して修正される際に3つの波動で動くことを示す | ||
| 長方形 | 特定の価格範囲を囲むために使用される長方形 | ||
| 三角形 | 価格の収束や拡散を示すために使用される三角形 | ||
| 楕円形 | 特定の価格範囲や注目する領域を強調するために使用される楕円形 | ||
| サムズアップ | 特定のポイントを強調するために使用されるアイコンで、一般的には肯定的なシグナルを示す | ||
| サムズダウン | 特定のポイントを強調するために使用されるアイコンで、一般的には否定的なシグナルを示す | ||
| 上向き矢印 | 価格の上昇を示すために使用される矢印 | ||
| 下向き矢印 | 価格の下降を示すために使用される矢印 | ||
| ストップサイン | 特定のアクションを停止する必要があるポイントを示すアイコン | ||
| チェックサイン | 特定のポイントを確認するために使用されるアイコン | ||
| 左プライスラベル | チャートの左側に価格情報を表示するためのラベル | ||
| 右プライスラベル | チャートの右側に価格情報を表示するためのラベル | ||
| 買いサイン | チャート上で買いシグナルを示すアイコン | ||
| 売りサイン | チャート上で売りシグナルを示すアイコン | ||
| 矢印 | チャート上で特定の方向やポイントを示すための基本的なアイコン | ||
| テキスト | チャート上に任意のテキストを追加 | ||
| テキストラベル | 特定のポイントにラベルを付けるためのテキストオブジェクト | ||
| ボタン | チャート上にインタラクティブなボタンを追加するオブジェクト | ||
| チャート | データの視覚化に使用されるグラフィカルな表示オブジェクト | ||
| ビットマップ | チャート上に画像を表示するオブジェクト | ||
| ビットマップレベル | 画像とテキストを組み合わせたラベルで、チャート上の特定のポイントに固定される | ||
| 編集 | チャート上にテキスト入力フィールドを追加するオブジェクト | ||
| イベント | 特定のイベントをトリガーするためのオブジェクト | ||
| 長方形ラベル | 長方形の背景を持つテキストラベル |
MT5は44種類、MT4は31種類のオブジェクトが使用可能です。
これらの機能の違いは手作業でチャートの設定を行う場合だけでなく、カスタムインジケータを作成する場合に使用可能なオブジェクトの幅も広いことを意味します。
よりグラフィカルで操作性の高いインジケータを開発するうえでは、MT5を使用した方が大幅に有利です。
MT5は汎用的なプログラミング言語であるPythonとの連携が可能です。Pythonはデータサイエンスや機械学習の分野でも広く使用されている言語であり、その強力なライブラリとツールを活用することで、MT5単体では開発が難しいような機能を作成し連携する等することで、大幅に機能を拡張することができます。
以下は、Python用MetaTraderパッケージを使用して、pythonからMT5の操作を自動に実行するための関数一覧です。
https://www.mql5.com/ja/docs/python_metatrader5
| 関数 | アクション |
|---|---|
| initialize | MetaTrader 5ターミナルとの接続を確立します |
| login | 指定されたパラメータを使用して取引口座に接続します |
| shutdown | MetaTrader 5ターミナルへの以前に確立された接続を閉じます |
| version | MetaTrader 5ターミナルバージョンを返します |
| last_error | 最後に発生したエラーのデータを返します |
| account_info | 現在の口座に関する情報を取得します |
| terminal_info | 接続されているMetaTrader 5ターミナルのステータスとパラメータを取得します |
| symbols_total | MetaTrader 5ターミナルのすべての金融商品の数を取得します |
| symbols_get | MetaTrader 5ターミナルのすべての金融商品を取得します |
| symbol_info | 指定した金融商品のデータを取得します |
| symbol_info_tick | 指定した金融商品の最後のティックを取得します |
| symbol_select | 気配値表示ウィンドウで銘柄を選択したり、ウィンドウから銘柄を削除したりします |
| market_book_add | 指定された銘柄の市場深度変更イベントにサブスクライブします |
| market_book_get | 指定された銘柄のMarketDepthエントリを特徴とするBookInfoからタプルを返します |
| market_book_release | 指定された銘柄の板情報変更イベントへの購読をキャンセルします |
| copy_rates_from | 指定された日以降のバーをMetaTrader 5ターミナルから取得します |
| copy_rates_from_pos | 指定されたインデックス以降のバーをMetaTrader 5ターミナルから取得します |
| copy_rates_range | 指定された期間のバーをMetaTrader 5ターミナルから取得します |
| copy_ticks_from | 指定された日以降のティックをMetaTrader 5ターミナルから取得します |
| copy_ticks_range | 指定された期間のティックをMetaTrader 5ターミナルから取得します |
| orders_total | アクティブな注文の数を取得します |
| orders_get | アクティブな注文を取得します(銘柄またはチケットでフィルターする機能あり) |
| order_calc_margin | 指定された取引操作を実行するための証拠金を口座通貨で返します |
| order_calc_profit | 指定された取引操作の利益を口座通貨で返します |
| order_check | 必要な取引操作を実行するために充分な資金があるかを確認します |
| order_send | 取引操作を実行するリクエストを送信します |
| positions_total | ポジションの数を取得します |
| positions_get | ポジションを取得します(銘柄またはチケットでフィルターする機能あり) |
| history_orders_total | 指定された期間内の取引履歴の注文数を取得します |
| history_orders_get | 取引履歴から注文を取得します(チケットまたはポジションでフィルターする機能あり) |
| history_deals_total | 指定された期間内の取引履歴の取引数を取得します |
| history_deals_get | 取引履歴から取引を取得します(チケットまたはポジションでフィルターする機能あり) |
MT5は、取引戦略のバックテストと最適化を実行する際にマルチプロセス処理をサポートしています。これにより、複数のコアやプロセッサを同時に利用して計算を分担することが可能となり、最適化のスピードが大幅に向上します。マルチプロセス処理は、高度な計算能力を必要とする複雑な取引戦略の最適化において特に有効です。
MT5は、複数のローカルネットワーク内にあるPCに分散してバックテストと最適化を実行する機能も提供しています。これにより、大規模なデータセットや複雑な戦略のテストを迅速に行うことができます。単一PC内でのマルチプロセスによる高速化に加え、ローカルネットワーク上の複数のコンピュータを利用して計算負荷を分散させることで、最適化の効率をさらに高めることができます。
MQL5クラウドネットワークというサービスを活用し、クラウドコンピューティングのリソースを活用してバックテストと最適化を高速で実行することができます。MetaTrader 5のクラウドネットワークを利用することで、トレーダーは個人のハードウェア制約を超えた計算能力を得ることができ、より迅速に最適化を完了することが可能となります。これにより、戦略の検証と調整にかかる時間を大幅に短縮できます。
MT5は、証券会社と口座タイプに紐づくヒストリカルデータを取得することができます。これにより、トレーダーは実際の取引環境に基づいた正確なバックテストを実施したり、スプレッドやレートの傾向を正確に分析することで、より有利なトレード環境をデータに基づいて比較検討が出来るようになります。
尚、MT4もヒストリカルデータをダウンロードする機能はありますが、提供されるレートはログインしている証券会社のレートではなく、MetaQuotes社が用意したレートとなるため、取引を検討している証券会社のレートの品質を調べることは出来ません(証券会社によってはヒストリカルデータのをWebサイトからダウンロードできる場合もあるようです)。
MT4の場合は Tick Data Suite等のヒストリカルデータ(=Dukascopy社提供レート)を用意するサービスを通じて、信頼性の高いヒストリカルデータを入手し検証するケースが多いようです。
※MT5の場合でも、証券会社から提供されるヒストリカルデータの期間が十分でないこともあるため、Tick Data Suite 等のデータを活用することがあります。
MT5のヒストリカルデータは、可変スプレッドをサポートしています。これにより、過去の市場データを使用したバックテストがより現実に近い形で実行できます。可変スプレッドは、実際の取引環境で見られるスプレッドの変動を反映するため、戦略の実行可能性をより正確に評価することができます。
一方、MT4はバックテストを実行する際に一律固定のスプレッド値を指定します。
スプレッドは指標発表前後や各市場の開閉タイミング、流動性の低下など様々な要因によって常に変化します。
一律のスプレッドでテストをすることは実体とズレたデータで評価していることになります。
よくヒストリカルデータの品質を語っているケースがありますが、ティックデータの欠損の有無について評価しているものでしかありません。
MT4でヒストリカルデータの品質が良いと言っても、スプレッドの影響を十分に考慮できていないことには注意が必要です。
MT5のバックテスト環境では、リアルティック、全ティック(=疑似ティック)を使用することができますが、MT4は全ティック(=疑似ティック)のみ提供されています。
スキャルピングのようなティック毎のレートを重視する取引戦略の場合は、リアルティックによる検証が不可欠です。
前述の証券会社からの配信レートが使用できるかどうか、という点も大きく影響するため、これらを考慮した場合、MT4でスキャルピングのような処理を開発した場合、精度の高い検証が難しいと考えられます。
https://www.mql5.com/en/articles/75
MT5は、1つのバックテストの中で複数の銘柄に対して同時にバックテストする機能を提供しています。これにより、複数の市場や銘柄に対する戦略の効果を一括で検証することができます。この機能は、複数の通貨ペアや異なる資産クラスを対象とした戦略を持つトレーダーにとって非常に有用です。

プログラム言語としてのMQL4とMQL5の最大の違いの一つは、MQL5がオブジェクト指向プログラミング(OOP)に完全対応している点です。これは、より複雑で効率的なコードを書くことができるため、開発者にとって非常に大きな利点となります。
MQL5は、C++に近い構文を持ち、オブジェクト指向プログラミングに完全対応しています。これにより、以下のような品質の差異が生まれます。
| 項目 | MQL5(オブジェクト指向型プログラミング) | MQL4(手続き型プログラミング) |
| 再利用性 | クラスとオブジェクトを使用してコードをモジュール化できるため、一度作成したコードを他のプロジェクトでも再利用できる | コードの再利用が難しい。同じ機能を複数の場所で繰り返し実装する必要になる場合がある |
|---|---|---|
| 保守性 | コードが論理的に整理されるため、保守や拡張がしやすくなります。これにより、バグの修正や新機能の追加が簡単になります。 | コードが複雑化しやすく、バグの発見と修正が難しくなる |
| 可読性 | クラスとオブジェクトを使用することで、コードがより直感的に理解しやすく、チーム開発に向いている | ロジックが分散しやすく、大規模なプログラム開発に向かない |
| 高度な機能の実装 | 複雑なアルゴリズムやデザインパターンを実装することが可能。 より高度な取引戦略を構築することができる | クラスやオブジェクトを使用した高度な機能の実装が難しく、複雑な取引戦略を構築する際には制約が多く困難 |
非常に簡単なロジックを作るだけならばMQL5, MQL4の差は大きくありませんが、 一度リリースした後にも継続して追加開発をした結果として規模が大きくなる可能性は十分にありますし、複雑な要件に対応していくためにはMQL5を使用した方が開発効率が圧倒的に高く、また保守もしやすくなります。
また、現在普及しているプログラミング言語の多くはオブジェクト指向をサポートしており、一般的なプログラム開発者にとって馴染みやすいのはMQL5となります。
「プログラム言語はMQL4しか書いたことがない」というような一部のレアな開発者からするとMQL5は馴染みにくいものですが、一般的なプログラム開発者であれば、MQL5を使用した方が直感的にコーディングが出来ることもあり、メリットが大きいと言えます。
https://www.mql5.com/ja/docs/database
MQL5は標準機能でSQLite3データベースにアクセスすることが可能であり、取引データの管理や分析において多くの利点を提供します。一方、MQL4では標準でデータベースアクセス機能が提供されていないため、どうしても必要な場合は外部ライブラリやカスタムDLLを別途調達(独自開発、購入等)して利用する必要があります。
データベースアクセスが出来ることのメリット
https://www.mql5.com/ja/docs/calendar
MT5に経済指標カレンダーを閲覧するための機能が統合されているように、MQL5からこれらのデータにアクセスすることも可能です。
これによって、EAの処理の中で該当通貨ペアの国に関連する経済指標の一覧を取得したり、その発表日時や重要度を元にエントリを抑制したり、ロットサイズや逆指値を調整するなど、高度な制御が可能になります。
但し、注意が必要なのは、この経済指標カレンダーのデータを取得する処理は内部的にはWebリクエストを使用しているようで、Webリクエストの実行が禁止されているバックテスト内でこれらの関数を使用するとMT5の内部仕様に違反し該当関数からの処理結果が得られない問題が起きてしまいます。
この問題を回避しつつ、経済指標データを活用するためには、前述のデータベースアクセスの機能も併せて活用すれば対応できます。
MQL5スクリプト等から経済指標データを事前に収集、SQLite3に蓄積しておき、バックテスト実行時にEAから該当データを読み込むことで過去の経済指標データも活用したロジックの検証が可能になります。
https://www.mql5.com/ja/docs/onnx
MQL5は機械学習モデルのオープンソース形式であるONNX(Open Neural Network Exchange)に対応した機械学習モデルを使用することができます。これは、取引戦略の精度向上や高度なデータ分析を行う上で大きなメリットとなります。
MQL5言語も行列計算等の機能拡張を受けて機械学習相当の機能を実装するハードルが下がっては来たものの、やはり豊富なライブラリが整備されているpython等と比較すると、開発効率はよろしくありません。
広く普及している開発方法で効率よく機械学習モデルを仕上げ、それをONNXモデルを介してMT5から参照すれば、全てMQL5で記述するよりも圧倒的に早く機械学習モデルをトレードに組み込むことが出来るようになります。
https://www.mql5.com/ja/docs/opencl
MQL5はOpenCL(Open Computing Language)を活用した高速な並列計算をサポートしています。これにより、取引戦略のパフォーマンスと効率性が大幅に向上します。一方、MetaTrader 4(MT4)はOpenCLをサポートしていません。
OpenCL(Open Computing Language)とは、異なるハードウェアプラットフォーム(CPU、GPU、FPGAなど)上で並列計算を実行するためのオープンスタンダードです。OpenCLは、計算集約型のタスクを複数のCPUプロセスに分散させることで、計算速度を向上させることができます。
ただ、処理速度が大幅に上がるという大きなメリットがある一方で、
等のデメリットもあります。
広く配布する目的で作成するEAとは相性が悪いですが、 シグナル配信用EAや自分自身しか使用しないEAのような、特定の環境でのみ高速に動作するEAを作る場合には重宝しそうです。
https://www.mql5.com/ja/docs/matrix
MQL5は行列(2次元配列)とベクトル(1次元配列)に格納したデータを直感的に計算するための関数群がサポートされています。複雑な数学的アルゴリズムや統計モデルを簡単に実装できるようになり、開発の効率が向上します。
また、機会学習等の高度な分析を行う際には多くの場合で行列計算を多用することからも分かる通り、従来別の言語で実装していた機械学習処理をMQL5に移植したい場合等に、これらの関数を活用し実装することが出来ます。
改めて整理をしてみましたが、プラットフォームそのものとしての差も大きくなり、またプログラム言語としての差も大きく開いてきたことが分かりました。
新たに利用を検討される場合はMT5の利用を強くお勧めします。
また、同じMT5を使用するにしても、証券会社によって銘柄や提供スプレッドの差等の条件も大きく違うことが明らかになりましたので、MT5を使用する場合の証券会社も比較検討してみましょう。
比較に当たってはMetaQuotes社公式ヘルプを中心に事実確認を行いつつ自身の過去の経験も踏まえ整理しましたが、MT4は既に5年以上まともに触っていないので、もしかしたら認識違いや、何らかのTIPSでクリアできている問題があるかもしれません。もしお気づきの店があれば、ぜひコメント等でご指摘頂けますと幸いです。