ここでは、取引関数においてMT4用のソースコードとMT5用のソースコードを共通化するための方法について記載します。
Order系関数一覧
取引関数のうち、Orderを冠する関数の一覧は以下となります。
MQL4とMQL5での有無を〇(あり)、✕(なし)で示していますが、関数名は同じでも引数が変わっているケースもあります。
また、MQL5でオーダーとポジションの区別が明確に分かれましたが、MQL4では区別がなかったことからソースコード共通化においては使用注意が必要な関数は「使用注意関数」で〇としています。
MQL4とMQL5の両方に存在する関数がありますが、互換性がないのでそのまま移植することが出来ないということを注意してください。
No | 関数 | MQL4有無 | MQL5有無 | 用途 | 使用注意関数 |
---|---|---|---|---|---|
1 | OrderClose() | 〇 | ✕ | ポジションのクローズ | |
2 | OrderCloseBy() | 〇 | ✕ | 両建てポジションの同時決済 | 〇 |
3 | OrderClosePrice() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴のクローズ価格を取得 | 〇 |
4 | OrderCloseTime() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴のクローズ時間を取得 | 〇 |
5 | OrderComment() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴のコメントを取得 | 〇 |
6 | OrderCommission() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴の手数料を取得 | 〇 |
7 | OrderDelete() | 〇 | ✕ | 注文の削除 | |
8 | OrderExpiration() | 〇 | ✕ | 選択されたオーダーの有効期限を取得 | |
9 | OrderLots() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴のロットサイズを取得 | 〇 |
10 | OrderMagicNumber() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴のマジックナンバーを取得 | 〇 |
11 | OrderModify() | 〇 | ✕ | オーダー、ポジションの変更 | 〇 |
12 | OrderOpenPrice() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴のオープン価格を取得 | 〇 |
13 | OrderOpenTime() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴のオープン時間を取得 | 〇 |
14 | OrderPrint() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴の情報をログへ出力 | 〇 |
15 | OrderProfit() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴の損益を取得 | 〇 |
16 | OrderSelect() | 〇 | 〇 | オーダー、ポジション、履歴の選択 互換性なし | 〇 |
17 | OrderSend() | 〇 | 〇 | 取引の送信 互換性なし | |
18 | OrdersHistoryTotal() | 〇 | ✕ | 履歴総数を取得 | |
19 | OrderStopLoss() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴のストップロスを取得 | 〇 |
20 | OrderSwap() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴のスワップを取得 | 〇 |
21 | OrderSymbol() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴のシンボルを取得 | 〇 |
22 | OrderTakeProfit() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴の損益を取得 | 〇 |
23 | OrderTicket() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴のチケットを取得 | 〇 |
24 | OrderType() | 〇 | ✕ | 選択されたオーダー、ポジション、履歴のタイプを取得 | 〇 |
25 | OrderCalcMargin() | ✕ | 〇 | オーダー、ポジションの必要証拠金を取得 | 〇 |
26 | OrderCalcProfit() | ✕ | 〇 | ポジションの現在の利益を取得 | |
27 | OrderCheck() | ✕ | 〇 | 取引操作を実行するための資金有無を確認 | |
28 | OrderSendAsync() | ✕ | 〇 | 取引の非同期送信 | 〇 |
29 | OrderGetTicket() | ✕ | 〇 | オーダーチケットをインデックスで取得 オーダーの選択 | |
30 | OrderGetDouble() | ✕ | 〇 | 選択されたポジションのdouble型プロパティを取得 | |
31 | OrderGetInteger() | ✕ | 〇 | 選択されたポジションのInteger型プロパティを取得 | |
32 | OrderGetString() | ✕ | 〇 | 選択されたポジションのstring型プロパティを取得 | |
33 | OrdersTotal() | 〇 | 〇 | オーダー総数を取得 MQL4では、ポジション数も含まれる | 〇 |
Position系関数一覧
取引関数のうち、Positionを冠する関数の一覧は以下となります。
MQL5で追加された関数のため、MQL4では存在しません。
No | 関数 | MQL4有無 | MQL5有無 | 用途 |
---|---|---|---|---|
1 | PositionGetSymbol() | ✕ | 〇 | ポジションのシンボルをインデックスで取得 ポジションの選択 |
2 | PositionSelect() | ✕ | 〇 | ポジションの選択 |
3 | PositionSelectByTicket() | ✕ | 〇 | ポジションをチケットで選択 |
4 | PositionGetDouble() | ✕ | 〇 | 選択されたポジションのdouble型プロパティを取得 |
5 | PositionGetInteger() | ✕ | 〇 | 選択されたポジションのint型プロパティを取得 |
6 | PositionGetString() | ✕ | 〇 | 選択されたポジションのstring型プロパティを取得 |
7 | PositionGetTicket() | ✕ | 〇 | ポジションチケットをインデックスで取得 ポジションの選択 |
8 | PositionsTotal() | ✕ | 〇 | ポジション総数を取得 |
History系関数一覧
取引関数のうち、Historyを冠する関数の一覧は以下となります。
MQL5で追加された関数のため、MQL4では存在しません。
No | 関数 | MQL4有無 | MQL5有無 | 用途 | 使用注意関数 |
---|---|---|---|---|---|
1 | HistorySelect() | ✕ | 〇 | 履歴の期間選択 | 〇 |
2 | HistorySelectByPosition() | ✕ | 〇 | ポジション識別子による注文履歴の選択 | |
3 | HistoryOrderSelect() | ✕ | 〇 | 注文履歴の選択 | |
4 | HistoryOrdersTotal() | ✕ | 〇 | 指定期間の注文履歴の数を取得 | |
5 | HistoryOrderGetTicket() | ✕ | 〇 | 注文履歴のチケットをインデックスで取得 注文履歴を選択 | |
6 | HistoryOrderGetDouble() | ✕ | 〇 | 選択された注文履歴のdouble型プロパティを取得 | |
7 | HistoryOrderGetInteger() | ✕ | 〇 | 選択された注文履歴のint型プロパティを取得 | |
8 | HistoryOrderGetString() | ✕ | 〇 | 選択された注文履歴のstring型プロパティを取得 | |
9 | HistoryDealSelect() | ✕ | 〇 | 履歴の選択 | |
10 | HistoryDealsTotal() | ✕ | 〇 | 指定期間の約定履歴の数を取得 | |
11 | HistoryDealGetTicket() | ✕ | 〇 | 約定履歴のチケットをインデックスで取得 約定履歴を選択 | |
12 | HistoryDealGetDouble() | ✕ | 〇 | 選択された約定履歴のdouble型プロパティを取得 | |
13 | HistoryDealGetInteger() | ✕ | 〇 | 選択された約定履歴のint型プロパティを取得 | |
14 | HistoryDealGetString() | ✕ | 〇 | 選択された約定履歴のstring型プロパティを取得 |
余談
ヒナタ
オーダー、ポジション、履歴で分かれてるのがポイントだね
ITサービス屋
そうそう
しかも、MQL4にはオーダー系にしか〇がないけど、
ポジションと履歴がないわけじゃないところが重要
ヒナタ
それな!
しっとるで!
MQL4には区別がないんだろ?
ITサービス屋
そうなんだよ
MQL5のハードルをあげてる一因だと思ってる
ヒナタ
履歴も良く見ると、
オーダーとディールにわかれてるよね
ITサービス屋
それも更にややこしくしてるんだよね
ヒナタ
MQL5覚える前から、MT5使ってると少し理解しやすいかもな
ITサービス屋
なるほど・・・
私使ってなかったからINとOUTの存在に最初戸惑った
ヒナタ
INとOUTで取得できる情報もちゃうしな
ITサービス屋
冷静に考えたら当然のことなんだけど、
MQL4ではINとOUTがないからつらたん・・・
ヒナタ
厄介なのは同意・・・・💤
コメント