![見出し画像](https://assets.st-note.com/production/uploads/images/117968284/rectangle_large_type_2_9acd7b639edb4768d768b0337f2090b2.jpeg?width=800)
MagicNumberを指定し、ポジションの含み損益合計を出力する
■処理の概要
指定したMagicNumberのポジションについて、総利益を出力させる
(筆者コメント)
私の場合、いくら以上マイナスになったら、一旦全て決算する等に使っていたりします。
positions_profit(int trade_part)のcase 0 ~ case2の条件を変更することで、複数EAのMagicNumberを指定し、各EA毎の合計損益を表示させたり、必要に応じてポジションを決算したり応用がきくかと思います
int MagicNumber_bid = 1111; // bidマジックナンバー
int MagicNumber_ask = 1112; // askマジックナンバー
OnInit()
特になし
OnTick()
Print(positions_profit(0)); //MagicNumber_bid && MagicNumber_ask の含み損益
Print(positions_profit(1)); //MagicNumber_bid の含み損益
Print(positions_profit(2)); //MagicNumber_ask の含み損益
positions_profit(int trade_part)
//+------------------------------------------------------------------+
//|ポジション含み益取得 |
//+------------------------------------------------------------------+
double positions_profit(int trade_part) // 0が全部、1はlongのみ、2はshortのみ
{
double sum_profit = 0;
//保有ポジションを一つずつチェックしていく
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
//--- 注文のパラメータ
ulong position_ticket=PositionGetTicket(i); // ポジション番号
ulong magic=PositionGetInteger(POSITION_MAGIC); // ポジションのMagicNumber
//選択したポジションの通貨が一致しているかをチェック
if(PositionGetString(POSITION_SYMBOL) == _Symbol)
{
switch(trade_part)
{
case 0: //選択したポジションが、実行されているEAのマジックナンバーと同じかどうかチェック
if(magic == MagicNumber_bid || magic == MagicNumber_ask)
{
sum_profit += PositionGetDouble(POSITION_PROFIT);
}
case 1: //選択したポジションが、実行されているEAのマジックナンバーと同じかどうかチェック
if(magic == MagicNumber_bid)
{
sum_profit += PositionGetDouble(POSITION_PROFIT);
}
case 2: //選択したポジションが、実行されているEAのマジックナンバーと同じかどうかチェック
if(magic == MagicNumber_ask)
{
sum_profit += PositionGetDouble(POSITION_PROFIT);
}
}
}
}
return(sum_profit);
}
MQL5コード一覧はコチラ
この記事が気に入ったらサポートをしてみませんか?