本ブログは、MetaTrader を利用して、EA プログラムを自作紹介するサイトです。
決して儲かるシステムを紹介するものではありませんのであしからず・・・
もし、記事中に嘘偽りを発見された方、ご連絡頂けると幸いです。
なお、過去に作成した EA プログラムの作り方はこちらになります。

Loop_Entry : 同じ指値エントリーを繰り返し実行するプログラムです。
estTurn : 高値(安値)で反対売買を実行するプログラムです。

2009年2月8日日曜日

OrderSelect の書き方

さて、損益 10 ポイント未満で決済するためには、OrderSelect() で有効なポジションを取得し、OrderClose()で決済する必要があることがわかりました。

そのため、これらについて調べてみたいと思います。

まず、OrderSelect() についてですが、マニュアルには次のように書いてありました。

OrderSelect( index, select, pool);

index:オーダー番号かチケット番号を指定する

select:オーダー番号とチケット番号のどちらで探すかを次の中から選ぶ
SELECT_BY_POS - オーダー番号で探す場合
SELECT_BY_TICKET - チケット番号で探す場合

pool
:オーダー番号で探すときにどこから探すかを次の中から選ぶ
MODE_TRADES (default)- 有効なポジションか有効な注文から探す
MODE_HISTORY - 決済済みポジションかキャンセルした注文の履歴から探す

有効なポジションと有効な注文を並べた状態をトレードプール( Trading Pool )、決済済みポジションとキャンセルした注文を並べた状態をヒストリプール( History Pool )と呼ぶみたいです。

OrderSelect() の説明には 2 つの番号が出てきました。それぞれの番号の意味は、

オーダー番号:それぞれのプール内の並び順

チケット番号
:注文した際に勝手に割り振られるユニークな番号(同じ番号の注文は他にはない)

になります。

どのような場合に使い分けるのかというと、複数の有効なポジションを保有している場合に、次々と何らかの処理をしたい場合にはオーダー番号を利用し、あらかじめ処理すべきポジションが特定できている場合にチケット番号を使うみたいです。

ついでに、OrderSend() のプロパティに「マジック番号」というものもあります。

これは、例えば複数のプログラムを同時に動かしているときに、どのプログラムで注文されたものなのかを識別する際に使う番号です。

オーダー番号を利用する際に、一つ注意が必要です。

トレードプールはその時々によって対象となるものが変わりますので、例え同じポジションであっても、同じオーダー番号が割り振られるわけではありません。

なお、どのような番号が割り振られるかというと、0,1,2,3,・・・ といった具合になります。

#厳密には番号を割り振るわけではあません。トレードプールとは単に配列のこと
#ですので、ここでいうオーダー番号とは配列の番号になります。

実際の書き方としては、次のとおりです。

OrderSelect(0,SELECT_BY_POS,MODE_TRADES);

これで、トレードプール内の最初の有効なポジション(もしくは有効な注文)を取得することができます。

ポジションを取得する書き方は大体わかりました。

次は OrderClose() を調べてみたいと思います。

0 件のコメント:

参考になりました? よろしければご協力ください。

にほんブログ村 為替ブログへ 人気ブログランキング【ブログの殿堂】