注文に関する25個の関数に、注文の情報を照会する関数を前記事「MQLの勉強メモ (10) トレード関数前編(注文情報照会)」に勉強しました。
今回は実際に注文を出したり決済したりできる関数を勉強します。全部5個あります。
発注 OrderSend()
int OrderSend(通貨ペア, 処理種類, ロット数, 価格, スリッページ, 損切り価格, 利食い価格,コメント, マジックナンバー, 有効期限, 矢印カラー);
- 戻り値
- 注文成功:成功した注文のTicket番号
- 注文失敗:-1
- 必須引数
- 通貨ペア:”USDJPY”のようなstring型。
- 処理種類:OrderType()と同じで、OP_BUY・OP_SELLLIMITのようなint定数。
- ロット数:double型、業者の最小最大ロット数はMarketInfo()で取得できる。
MarketInfo(“USDJPY”, MODE_MINLOT); MarketInfo(“USDJPY”, MODE_MAXLOT); - 価格:成り行き注文の場合、AskあるいはBidで指定。
- スリッページ:int型、滑りポイント。
- 損切り・利食い:double型、
- 省略可
- コメント:string型、備考。
- マジックナンバー:どのEAが建てたポジションを特定するために設定するものです。同じシステムに複数のEAが稼働している可能性があるからです。
- 有効期限:datetime型、成り行き注文以外に効く引数。
- 矢印カラー:color型、デフォルトはCLR_NONE「なし」。
決済 OrderClose()
bool OrderClose(Ticket, ロット数, 決済価格, スリッページ, 矢印カラー);
決済するとき、引数はシステムから取得するのが普通でしょう。
情報に対応する関数はOrderSelect()後呼び出せます。
- 引数
- Ticket番号:OrderTicket()
- ロット数:OrderLots()
- 決済価格:AskあるいはBid。
- スリッページ:滑りポイント。
両建解除決済 OrderCloseBy()
bool OrderCloseBy(Ticket, 逆方向Ticket, 矢印カラー)
両建しているポジションを同時に決済する関数。
- テストしたところ、両建解除決済のこんなところに注意しないといけないです。(参考程度)
- 両方の枚数が違うとき、同じの枚数だけ決済される。
- 上記の決済で、両方の注文チケットが履歴になり、あまった分は新しいチケット番号で残される。
- 前注文の一部が残された場合は、「partial close」に変えられる。
- 後注文の一部が残された場合は、「from #(全部のチケット番号)」に変えられる。
- 決済された注文のコメントは「close hedge by #(前方のチケット番号)」
修正 OrderModify()
bool OrderModify(Ticket, 注文価格, 損切り, 利食い, 有効期限, 矢印カラー);
決済するための損切りと利食いを修正するか、待機注文を修正できる関数。
- 引数
- Ticket:ticket番号、OrderTicket()で取得できる。
- 注文価格:待機する指値・逆指値注文のエントリ価格を修正する。
- 損切り・利食い:新しい決済価格。
- 有効期限:待機注文の有効期限。
未実行注文の削除 OrderDelete()
bool OrderDelete(int Ticket, color arrow_color);
未実行の指値・逆指値注文に限って、ticket番号で注文を取り消しできる。
色は省略可能です。