OrderSelect インデックスとチケット番号で注文を選択

ポジションを決済するには、どのポジションに対してかをOrderSelect関数を使用して決める必要があります。口座の中には裁量や他のEAによるポジションも存在する可能性は十分あります。

OrderSelect

 

このOrderSelect関数はこれ単体ではなく、この後の工程として決済やあるいは指値の変更,損切り利確値の修正など様々ありとても重要です。

 

 

Definition

 

Reference: OrderSelect – MQL4 Reference

 

Parameters

 index:

インデックスかチケット番号を指定して注文を特定します。

  • インデックス:注文が順番にインデックスが振られているもの
  • チケット番号:OrderSend関数での戻り値から得られたチケット番号

注意点としては、両者ともに状況に応じて変更され固定では無いこともあり、これ以外の限定条件を設定して絞り込む必要があるかもしれません

select:
インデックスあるいはチケット番号で指定したことを明示させます。

  • SELECT_BY_POS:インデックス
  • SELECT_BY_TICKET:チケット番号

pool=MODE_TRADES:
オプションなのですが、注文がどの状態にあるかを指定します。大まかには現行の注文と既に決済したものもがあり、

  • MODE_TRADES:order poolにあるもの
    • 保有中のポジション
    • 待機注文
  • MODE_HISTORY:history poolにある
    • 既に決済
    • 取消した注文
 

Sample Code

 

チケット番号から選択する例です。

チケット番号は、部分決済時と待機注文のエントリー時に新しい番号に変わってしまうため固定として扱うと問題になります。MQL4のOrderSelect関数を正しく理解する
常に追いかけていくか、あるいは部分決済や指値注文をしないという選択もあります(現実的かも)

ただそれでもMT4を止めて再起動させた場合にリセットされてしまいます。VPSのセキュリティーパッチのアップデートなどで時々あります。

その場合は、マジックナンバーなどでポジションから絞り込んでチケット番号を再度振っておくなどである程度対処できます。

インデックスを使うケースではOrdersTotal()関数で待機・保持ポジションの全数を取得して条件にあうインデックスを選びます。

References:
OrderSelect – MQL4 Reference
OrdersTotal – MQL4 Reference
OrderMagicNumber – MQL4 Reference
MQL4のOrderSelect関数を正しく理解する




シェアする

  • このエントリーをはてなブックマークに追加

フォローする