注文のしすぎを防ぐ手段として、「すでに注文していたら、またはポジションを持っていたら、新しい注文をしない」ということを考えました。
そのため、自分がすでに注文している、並びにポジションを持っているかどうかを調べる必要がありますが、どうすればよいのでしょう・・・
とりあえず Google で”MetaTrader ポジション 調べる”をキーワードに検索してみました。
・・・
どうやら OrdersTotal() を使えば判別できるかもしれません。
OrdersTotal() とは、「保有している注文の数」を返してくれるみたいです。
この「注文の数」には、注文が実行されてまだ決済されていないポジションも含めて数をカウントし、結果を返してくれる様子です。
ですので、「注文をしているかどうか?」と「ポジションを持っているか?」の 2 つを一緒に調べられます。
ただし単に数を返してくれるだけなので、どんな注文があるのか、またはどんなポジションを持っているかは分かりません。
でも私の場合、「一つのポジションを持つのが限界」なので、数さえ分かれば十分です。
では、これをプログラムで具体的にどのように書くかというと
if (OrdersTotal()==0)
{
○○○○○○
}
となります。
これは「もし注文の数が 0 (ゼロ)だったら波括弧({})の間に書いてあるプログラムを実行する」という意味です。
もう少し具体的に説明すると
・if は右側の括弧に書いてあることが正しければ波括弧の間を実行する
・== は左と右が等しいかどうかを表す書き方
となります。
そのため、波括弧の間に前回の OrderSend() を書いてみると
if (OrdersTotal()==0)
{
OrderSend("USDJPY",OP_BUYLIMIT,0.1,109.65,3,0,109.85,NULL,0,0,Green);
}
となり、これで注文のしすぎを防げると思われます。
では、次回、”Test1”プログラムを修正しバックテストを実行してみたいと思います。
本ブログは、MetaTrader を利用して、EA プログラムを自作紹介するサイトです。
決して儲かるシステムを紹介するものではありませんのであしからず・・・ もし、記事中に嘘偽りを発見された方、ご連絡頂けると幸いです。 なお、過去に作成した EA プログラムの作り方はこちらになります。 Loop_Entry : 同じ指値エントリーを繰り返し実行するプログラムです。 estTurn : 高値(安値)で反対売買を実行するプログラムです。 |
2008年9月15日月曜日
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿