//ポジション計算
int buypos=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic01)
{
if(OrderType()==OP_BUY) buypos++;
}
}
OrderSymbol() Symbol() はどちらも、通貨ペアを調べる関数です。
EURUSD や USDJPY などがわかります。
OrderSymbol() の方は、保有ポジションの通貨ペアを調べます。
Symbol() は、EAがセットされているチャートの通貨ペアを調べます。
OrderMagicNumber() は、保有ポジションのマジックナンバーを調べます。
この、if文で判断しているのは、通貨ペアとマジックナンバーを調べて、
EAがセットされているチャートで、そのEAが建てた玉かどうかを調べます。
OrderType() は、保有ポジションが買いか売りかを調べるのに使用します。
OP_BUY は、注文の種類が成り行き買いであることを表します。
そして、買いのポジションを保有していたら、buypos に1を加えます。
このポジション計算は、
保有ポジションを0から順番に調べる。
↓→もしポジションが存在しないなら、繰り返しの処理を抜ける。
保有ポジションの通貨ペアとマジックナンバーを調べる。
↓→通貨ペアとマジックナンバーが一致するポジションがあれば、1を加える。
保有ポジションの回数だけ繰り返し。
という流れです。
今回は買いポジションだけでしたが、売りポジションも必要な場合は同じように処理します。
保有ポジションの情報を調べるには、Order○○○ という関数になります。
Order が付いていたら、保有ポジション関連だなと覚えていてください。
では~~~