(‘mt4’, ‘MQL4’)注文の管理要書き換え(MQL5)
目次
OrderSelect操作したい注文を選ぶ
OrderLotsやOrderCloseなど、注文の中身を読んだり操作したりする前に、「どの注文を対象にするか」を選ぶ関数。MQL4の売買まわりは、ほぼ全てこの関数とセットで使う。
1書式
bool OrderSelect( int index, // 番号か、チケット番号 int select, // SELECT_BY_POS(番号)/ SELECT_BY_TICKET(チケット) int pool=MODE_TRADES // MODE_TRADES(保有中)/ MODE_HISTORY(決済済み) );
MQL5にはこの形の関数が無い(後述)。
2引数
| 引数 | 内容 |
|---|---|
| index | select=SELECT_BY_POSなら通し番号(0から)、SELECT_BY_TICKETならチケット番号 |
| select | 番号で選ぶかチケットで選ぶか |
| pool | 保有中の注文から選ぶか、決済済みの履歴から選ぶか |
3戻り値
成功でtrue。以降、OrderLots等はこの選ばれた注文の値を返す。
4使用例
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if(OrderSymbol() == Symbol())
Print("チケット ", OrderTicket(), " ロット ", OrderLots());
}
MetaEditorでコンパイル0エラー・0警告を確認済み。
5MQL4→MQL5の違い
🔁 差分
MQL5には「選ぶ」という考え方が無い。MQL4はOrderSelectで選んでからOrderLots()のように読むが、MQL5は保有中を「ポジション」、決済済みを「履歴」として、最初から別のAPIで扱う。
| MQL4 | MQL5でのおおまかな対応 |
|---|---|
| OrderSelect + OrderLots | PositionGetDouble(POSITION_VOLUME) |
| OrderSelect + OrderOpenPrice | PositionGetDouble(POSITION_PRICE_OPEN) |
| OrderSelect + OrderStopLoss/TakeProfit | PositionGetDouble(POSITION_SL/POSITION_TP) |
| OrderSelect + OrderProfit | PositionGetDouble(POSITION_PROFIT) |
| OrderSelect + OrderTicket | PositionGetInteger(POSITION_TICKET) |
| OrdersTotal(保有中) | PositionsTotal |
| OrderSelect(決済済み・履歴) | HistorySelect + HistoryDealGetDouble 等 |
6よくある罠
⚠ 実務で踏んだもの
- ループで全件を見るときは後ろから前へ(
i--)数えるのが定石。決済が起きると番号がずれるため、前から数えると1件飛ばすことがある。
7関連する関数
MORNING BRIEF平日 毎朝7時までに更新
今日はどこを見ればいいか。
ドル円とユーロドルの主要ライン・予想高値安値を、平日の朝に図1枚にまとめています。
朝刊を見る→9/25 8:27 時点ドル円158.78▼-7 pipsドル円 予想レンジ158.41 〜 159.23ドル円 上の節目158.90▲ドル円 下の節目157.80▼ユーロドル1.1378▼-2 pipsユーロドル 予想レンジ1.1351 〜 1.1408ユーロドル 上の節目1.1403▲ユーロドル 下の節目1.1359▼きょうの指標重要指標なし