次のプログラムのルールを考え中ですが、その前に 10 ポイント未満での利益確定はどのようなやり方があるのかを調べてみる必要があります。
前回も書きましたが、新規に指値注文する時では 10 ポイント未満の指定はできません。
なので、次の方法が思いつきます。
1.指値注文し、売買成立したポジションの決済値を変更する
2.成行注文をし、売買成立したポジションを成行決済する
#1.については、新規注文で制限されているものを変更できるとは考えにくいですが、
#念のため確認してみます。
上記の両方とも「売買成立したポジション」に対して操作しなければなりません。
そのため、まずはこのポジション情報を取得する方法を調べてみたいと思います。
Loop_Entry プログラムを作成した際に、OrdersTotal()で「ポジションの数」を取得する方法は解りましたが、これは数しか取得できませんので使えません。
いつものごとく Google で「MetaTrader ポジション 情報取得」で検索してみます。
どうやらポジションの情報を取得するには2段階の手続きを踏む必要があるみたいです。
2段階というのは
1.OrderSelect()を使って情報を取得したいポジションを特定する
2.OrderType()やOrderOpenPrice()などを使って特定したポジションの各種情報を取得する
です。
次回、OrderSelect()に関わる操作方法を調べてみたいと思います。
本ブログは、MetaTrader を利用して、EA プログラムを自作紹介するサイトです。
決して儲かるシステムを紹介するものではありませんのであしからず・・・ もし、記事中に嘘偽りを発見された方、ご連絡頂けると幸いです。 なお、過去に作成した EA プログラムの作り方はこちらになります。 Loop_Entry : 同じ指値エントリーを繰り返し実行するプログラムです。 estTurn : 高値(安値)で反対売買を実行するプログラムです。 |
2009年1月26日月曜日
登録:
コメントの投稿 (Atom)
2 件のコメント:
自分も指値のEA作ってるのですが、その際に
マイミクの方に教えていただいた方法が使えると思います。
double A = 1.3520;
double B = A+profit*Point;
if(B==Bid){
OrderClose();
}
つまりOrderClose()関数に条件をつけて
EAを発動させるやり方です。
ご参考になればと思います。
Seigoさん、こんにちは。
コメントありがとうございます。
OrderClose()関数、まだ試していませんが確かにこれで解決できそうですね。
試してみます。
PS.
このブログに初めてコメントいただきました。
ちょと感動です・・・
まさかコメントがコメントが頂けると思っていなかったので、コメントチェックをしておらず、返信が遅くなってしまいました。
ごめんなさい。
これからもよろしくおねがいします。
コメントを投稿