システムトレード研究所 〜FXで完全自動売買〜

このサイトでは、FXで完全自動売買を行うために必要な情報を書いていこうと思っています。システムを自分で作りたい方、システムトレードをやってみたい方は御覧になっていって下さい。
<< リミットとストップロスを計算で設定する | main | iPhoneにメールを送る場合の文字化けについて >>
OrderSelectについて
こんばんはDCです。



今回は「OrderSelectについて」という内容で記事を書かせて頂きます。


 OrderSelect関数は、ポジションのデータを取得する関数ですが、使い方が複数あり、実際に使いこなすとなれば難しいので、今回は詳しく説明させて頂きます。

 まずは、OrderSelect関数の引数について説明します。



OrderSelect( int index, int select, int pool)


日本語にすると下記のようになります。

オーダーセレクト(番号、番号の種類、取得中か決済後か)

最初の番号(int index)はポジション番号かチケットナンバーを入力します。どちらを入力するかは次の番号の種類の引数で選びます。

ポジション番号は、現在取得しているポジションに対して0から割り振られたナンバーです。例えば、ポジションが3つあれば、先に取得した順に0、1、2とナンバーが付けられます。



for(cnt=0;cnt<OrdersTotal();cnt++)
 {
  OrderSelect(cnt,SELECT_BY_POS);


いつも使っている上記のようなコードの場合は、このポジション番号を取得しています。
OrdersTotal()は現在の取得中のポジション数を調べる関数です。

この番号はポジション数の増減により、番号も変化します。例えば、0番のポジションが決済された場合は、1番が0番に、2番が1番に変更されます。


次にチケットナンバーですが、これはそのポジションに割り振られた固定のナンバーで変わることはありません。ポジションを保有していても、決済していもこのナンバーはずっと同じ番号になります。


チケットナンバーの調べ方は、一度ポジション番号でオーダーセレクトをしてから、OrderTicket()で取得出来ます。


次に番号の種類(int select)ですが、SELECT_BY_POS でポジション番号、SELECT_BY_TICKET でチケットナンバーを選択出来ます。


最後に取得中か決済後か (int pool)ですが、これは現在取得中のポジションか、すでに決済されているポジションかの選択です。

MODE_TRADESで取得中のポジション、MODE_HISTORY で決済されているポジションになります。ただし、番号の種類がチケットナンバーの時はここは必要ありません。チケットナンバーは取得中でも決済後でもナンバーが変わらないためです。

また、ここに何も書かない場合は、自動的にMODE_TRADESになります。


決済したポジション数を調べる関数はOrdersHistoryTotal()です。この関数で取得した数値−1が最後に決済、もしくは取り消されたポジションになります。


実際の使用例です。


OrderSelect(0,SELECT_BY_POS,MODE_TRADES);


現在取得中のポジション番号0番のデータを取得してます。



OrderSelect(1,SELECT_BY_TICKET);


チケットナンバー1番のデータを取得してます。



OrderSelect(5,SELECT_BY_POS,MODE_HISTORY);


決済したポジションの番号5番のデータを取得してます。



for(cnt=OrdersHistoryTotal()-1;cnt>=0;cnt--)
 {
  OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY);


上記の処理で過去に決済したポジションを調べることが出来ます。最新の決済されたポジションから順にループするごとに過去に決済されたポジションになります。


過去に決済したポジションは数が多くなります。その分処理も重くなりますので、必要なデータを見つけたら、そこでループを止める処理をしておいたほうがいいと思います。


今回はこれで終了です。



システムトレード研究所〜FXで完全自動売買〜INDEXへ
自動売買システム制作のオーダーシステム|FXでオリジナルのシステムトレード

---------------------------------------注意---------------------------------------

 内容には注意を払っていますが、保障は出来ません。
 実際に運用する場合は、自己責任でお願いします。

JUGEMテーマ:ビジネス
| 小松 | MetaTrader4 プログラム中級編 | 11:23 | comments(2) | - |
2か月ほど前から自動売買のプログラムを勉強し始め、このサイトで勉強させてもらっています。

毎日こつこつ勉強しているのですが、オリジナル関数を作るのが苦手で苦労しています。

1つ前、2つ前、3つ前のタイムフレームの終値を足して3で割ったレートを所得したいのですがわかりません。
アドバイスいただけませんか?
| やす | 2011/11/07 10:12 PM |
>やすさん

一つ前の足などの情報はシフトのパラメーターを変更すれば取得可能です。
タイムフレームの変更も同様にタイムフレームのパラメーターを変更する形になります。

詳しくは下記のURLをご覧下さい。
http://jidoubaibai.com/burogu31.html
| DC | 2011/11/08 1:18 PM |









      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< April 2017 >>



このページの先頭へ