今回の記事は、「損益の取得方法について」という内容です。
ポジションの損益を取得した場合、利益(損失)が◯◯を超えれば決済、利益(損失)が◯◯を超えればトレイル開始など、損益の内容によって柔軟にルールを変えることが可能です。
個別のポジションの損益の取得
まずは個別のポジションの損益の取得方法です。
最初にOrderSelect()を行い、調べるポジションを指定します。OrderSelect()については下記の記事を御覧ください。
次にOrderProfit()で損益を取得します。損益はPipsではなく、円口座なら◯◯◯円、ドル口座なら◯◯◯ドルで取得されます。
コードを書くと下記になります。(最初のポジションをセレクトしています)
double aaa = NULL;
OrderSelect(0,SELECT_BY_POS);
aaa = OrderProfit();
これで変数aaaに最初のポジションの損益を取得出来ます。
システムを起動している通貨ペアのポジションの損益をまとめて取得する場合は下記のようなコードを書いてください。
double aaa = NULL;
int cnt = NULL;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS);
if(OrderSymbol() == Symbol())
{
if( OrderType() == OP_BUY || OrderType() == OP_SELL )
{
aaa = aaa + OrderProfit();
}
}
}
これで変数aaaに損益をまとめて取得出来ます。
口座の全ポジションの損益を取得する方法
次に、口座の全ポジションの損益を取得する方法です。こちらはOrderSelect()を事前にする必要がなく、AccountProfit()関数を使えばすぐに取得出来ます。
口座の全ポジションの損益が10000円以上になったら決済する場合、
if( AccountProfit() >= 10000 )
{
決済の処理;
}
とすれば決済出来ます。