注文数/ロット数合計関数と最大ポジション数制限機能

アイキャッチ

最大ポジション数制限機能を実現できる関数

現在のポジション数やロット数に応じて、これ以上ロットを増やしたくないなって思う時があると思います。そんな時に役に立つのが今回紹介する注文数またはロット数合計関数です。

注文数(成行注文の場合、ポジション数と同義になる)の方が使うケースが多いかもしれません。

注文数またはロット数合計関数を使えば、最大ポジション数制限機能を実現できますので、サンプルEAで一緒に紹介したいと思います。

OrdersTotal()はトレーディングプールにある全ての注文(成行、指値、逆指値)の数を求めてくれます。

OrderSelect()で1つずつ注文を取得し、その注文種別を確認していきます(全ての注文の数だけ繰り返します)。ポジション数を単に合計したい場合は、OP_OPENを関数の引数として渡せばOKです。OP_OPEN、OP_LIMIT、OP_STOP、OP_ALLは独自の注文種別定数で、MQL4の冒頭に以下の通り、定義しておきます。

SUM_ORDER_NUMBERとSUM_LOTSIZEも独自の定数で、注文数とロット数、どちらを関数の戻り値とするのかを区別するのに使います。具体的には関数の引数として渡します。

OP_OPENを指定することで、トレーディングプールにある全ての注文から成行注文だけを選出し、その注文数なりロット数なりを合計します。最後のif文で注文数を返すのかロット数を返すのかを判断しています。

サンプルEA

関数だけではイメージが沸きづらいと思いますので、サンプルEAを載せておきます。

注目すべきは、OnTick()内の以下の記述です。

sumOrderNumberOrLotSize()関数で合計ポジション数を取得し、それをパラメータで設定したMaxPositionNumberと比較することで、最大ポジション数以上のポジションを取らないように制御しています。

ブログランキングに参加中!

ポチっとクリック頂けると励みになります♪
(クリックしてもランキング一覧が表示されるだけですが、それでOKです)

  にほんブログ村 為替ブログ FX システムトレード派へ

コメントを残す



5 × 4 =