ここでは、チェックアップにおいてMT4用のソースコードとMT5用のソースコードを共通化するための方法について記載します。
チェックアップ関数一覧
MQL4とMQL5での有無を〇(あり)、✕(なし)で示しています。
MQL4、MQL5共に存在するNo1~6,8~14についてはそのままの利用で互換性があります。
ただし、No.5,8,9は取得できる情報がMQL4とMQL5で機能差が発生しているため、完全互換ではありません。(ENUMの定義を利用すればビルドエラーがでるのでエラー発生時に対処可能)
それ以外の関数については共通化の考慮が必要です。
互換性ありの関数については、本サイトで共通化の解説は行っていません。
No | 関数 | MQL4有無 | MQL5有無 | 用途 |
---|---|---|---|---|
1 | GetLastError() | 〇 | 〇 | 最後に発生したエラーを返します 互換性あり |
3 | IsStopped() | 〇 | 〇 | MQLプログラムがその処理を停止するコマンドを受けた場合は true を返します 互換性あり |
4 | UninitializeReason() | 〇 | 〇 | 初期化解除理由のコードを返します 互換性あり |
5 | MQLInfoInteger() | 〇 | 〇 | 実行中のMQLプログラムの対応するプロパティの整数値を返します 関数は互換性ありですがENUM_MQL_INFO_INTEGERに一部差がある |
6 | MQLInfoString() | 〇 | 〇 | 実行中のMQLプログラムの対応するプロパティの文字列値を返します 互換性あり |
7 | MQLSetInteger() | 〇 | ✕ | MQLプログラム環境におけるMQL_CODEPAGEプロパティの値を設定します |
8 | TerminalInfoInteger() | 〇 | 〇 | 実行中のMQLプログラムの対応するプロパティの整数値を返します 関数は互換性ありですがENUM_TERMINAL_INFO_INTEGERに一部差がある |
9 | TerminalInfoDouble() | 〇 | 〇 | 実行中のMQLプログラムの対応するプロパティの double 値を返します 関数は互換性ありですがENUM_TERMINAL_INFO_DOUBLEに一部差がある |
10 | TerminalInfoString() | 〇 | 〇 | 実行中のMQLプログラムの対応するプロパティの文字列値を返します 互換性あり |
11 | Symbol() | 〇 | 〇 | 現在のチャートの銘柄名を返します 互換性あり |
12 | Period() | 〇 | 〇 | 現在のチャートの時間軸を返します 互換性あり |
13 | Digits() | 〇 | 〇 | チャートシンボルの価格の値の精度を決定する小数点以下の桁数を返します 互換性あり |
14 | Point() | 〇 | 〇 | 現在シンボルのポイントサイズを返します 互換性あり |
15 | IsConnected() | 〇 | ✕ | サーバとの接続を確認します |
16 | IsDemo() | 〇 | ✕ | デモ口座かどうかを返します |
17 | IsDllsAllowed() | 〇 | ✕ | DLL関数呼出し許可されているかを確認します |
18 | IsExpertEnabled() | 〇 | ✕ | EAが実行可能かを確認します |
19 | IsLibrariesAllowed() | 〇 | ✕ | ライブラリ関数呼出し可能かを確認します |
20 | IsOptimization() | 〇 | ✕ | Strategy Testerが最適化モードかを確認します |
21 | IsTesting() | 〇 | ✕ | テストモードで動作しているかを確認します |
22 | IsTradeAllowed() | 〇 | ✕ | EAの取引が許可されているかを確認します |
23 | IsTradeContextBusy() | 〇 | ✕ | 取引コンテキストがビジーかを確認します |
24 | IsVisualMode() | 〇 | ✕ | EAがビジュアルモードでテストされているか確認します |
25 | TerminalCompany() | 〇 | ✕ | 端末の企業名を返します |
26 | TerminalName() | 〇 | ✕ | 端末名を返します |
27 | TerminalPath() | 〇 | ✕ | 端末が起動されたパスを返します |
コメント