見出し画像

MagicNumberを引数に、一番良いポジションを利食いする(チェック機能_応用)

//<<<<<>>>>><<<<<>>>>><< マジックナンバー >><<<<<>>>>><<<<<>>>>>
input group "MagicNumber"
input int MagicNumber_bid = 1111; // bidマジックナンバー
input int MagicNumber_ask = 1112; // askマジックナンバー

OnInit()

特になし

OnTick()

advantage_position_delete(MagicNumber_bid);
advantage_position_delete(MagicNumber_ask);

advantage_position_delete(int Mag_p)

//+------------------------------------------------------------------+
//| MagicNumberを引数に、一番良いポジションを利食い                            |
//+------------------------------------------------------------------+
void advantage_position_delete(int Mag_p)
  {
   double best_ = 0;
   ulong best_posNumber_ = 0;
   for(int i = PositionsTotal() - 1; i >= 0; i--)
     {
      //保有ポジションを一つ選択
      ulong posNumber = PositionGetTicket(i);

      //選択したポジションが、実行されている通貨ペアと同じかどうかチェック
      if(PositionGetInteger(POSITION_MAGIC) == Mag_p)
        {
         if(Mag_p == MagicNumber_bid)
           {
            if(best_ == 0)
              {
               best_ = PositionGetDouble(POSITION_PRICE_OPEN);
               best_posNumber_ = posNumber;
              }
            else
               if(best_ > PositionGetDouble(POSITION_PRICE_OPEN))
                 {
                  best_ = PositionGetDouble(POSITION_PRICE_OPEN);
                  best_posNumber_ = posNumber;
                 }
           }
         else
            if(Mag_p == MagicNumber_ask)
              {
               if(best_ == 0)
                 {
                  best_ = PositionGetDouble(POSITION_PRICE_OPEN);
                  best_posNumber_ = posNumber;
                 }
               else
                  if(best_ < PositionGetDouble(POSITION_PRICE_OPEN))
                    {
                     best_ = MathMax(best_,PositionGetDouble(POSITION_PRICE_OPEN));
                     best_posNumber_ = posNumber;
                    }
              }
        }
     }
   mytrade.PositionClose(best_posNumber_,10);
  }




MQL5コード一覧はコチラ


この記事が気に入ったらサポートをしてみませんか?