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

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

2010年4月2日金曜日

ルール追加

さて、注文し続けるのを止めるために「決済されるまでは次の注文を入れない」というルールを追加しようと思います。

決済前のポジションを保有しているかどうかは、OrdersTotal()で判断できます。

ただし、OrdersTotal()はポジションの数を調べるもので、他のプログラムで注文したものまでカウントしてしまいます。

そのため、本プログラムで注文したポジションだけを調べるためにマジックNoを利用します。

前回記載した注文内容に、マジックNo("12345")を追記します。

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Bid+25*Point,Bid-35*Point,NULL,12345,0,Aqua);
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-25*Point,Ask+35*Point,NULL,12345,0,DeepPink);

これで、注文したポジションに"12345"のマジックNoが付与され、後で識別することができるようになります。

次に現在保有中のポジションを調べます。

保有中のポジションは、トレードプールと呼ばれる場所に保持されていますので、次の手順で保有ポジションのマジックNoを調べます。

1.トレードプールのポジション数を調べます
2.OrderSelect()を使いトレードプールからポジションの情報を順番に取り出します。
3.ポジションの情報を取り出したら、OrderMagicNumber()でマジックNoを確認します。
4.マジックNoが"12345"ならば、注文せずに終わります。

次回、上記手順をプログラミングしてみます。

0 件のコメント:

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

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