作るプログラムのルールは、次のとおりです。
1. 有効なポジションならびに有効な注文がなければ指値買い注文する
2. 有効なポジションの取得価格より相場の売値が 5 ポイント高ければ決済する
といった感じで、あまり細かい条件をいれずにシンプルなものを作ってみます。
まず、1. についてですが、これは Loop_entry プログラムを作成した際に使ったものを利用し、次のように書きます。
//
//有効なポジションあるいは有効な注文があるかどうかを判定する
//
if (OrdersTotal()==0)
{
//
//有効なポジションならびに有効な注文が一つもないので指値買い注文する。
//
OrderSend(Symbol(),OP_BUYLIMIT,0.1,Bid,3,0,0,NULL,0,0,Green);
}
else
{
//
//ここに、2. の内容に沿ったプログラムを記載する
//
}
次に 2. についてですが、次のような判断をしながら決済することになります。
2.1. トレードプールからポジションを取得する
2.2. 取得したポジションが「有効なポジション」なのか「有効な注文」なのかを判断する
2.3. 有効なポジションであれば取得価格と相場を比較する
2.4. 5 ポイント以上の利益確定なら決済する
で、これをプログラムで書いてみると
//
//トレードポジションプールからポジションを取得する。
//
OrderSelect(0,SELECT_BY_POS,MODE_TRADES); '--- ①
//
//有効なポジションなのか有効な注文なのかチェックし、
//有効なポジションの場合のみ処理する。
//
if (OrderType()==OP_BUY) '--- ②
{
//
//有効なポジションの取得価格が相場の売値より5ポイント分
//上なのかどうか判断し、上の場合のみ決済する
//
if (OrderOpenPrice()+5*Point
//
//相場の売値で決済する
//
OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
}
ここでポイントとなるのは次のとおりです。
①
②
③
④
⑤
次回は、これを応用して、Loop_Entry を手直ししたいと思います。
0 件のコメント:
コメントを投稿