Closerorders на основе прибыли

Я пытаюсь написать код для открытия нового ордера, когда новая цена открытия становится ниже/выше 300 пипсов. Затем сравните профит обоих ордеров, когда он в профите, я закрываю оба ордера одновременно. если нет, а второй ордер идет с убытком выше 300 пипсов, я снова открою новый ордер. Я буду открывать ордера 10 раз. Я хочу закрывать ордера таким образом: когда общее количество открытых ордеров больше 3, я хочу сравнить прибыль первого и последнего открытого ордера, если он упадет ниже прибыли, я закрою их первыми. Затем я сравню 2-й и 3-й ордер, если они упадут в профит, я их закрою, иначе я создам новый ордер, когда он превысит 300 пунктов. Пожалуйста, помогите мне понять или написать этот метод. заранее спасибо

      void CloseallOrders()
{
   if(AccountEquity()>AccountBalance())
   {
   for (int i=OrdersTotal()-1;i>=0; i--)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      OrderClose(OrderTicket(), OrderLots(), Bid,3,Blue);

   }
   }
 }

void drawdown()
{
      if (OrdersTotal()>=0)
      {
      for (int i=OrdersTotal()-1; i>=0; i--)
      {
        OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if(OrderProfit())
        {
        if(OrderType==OP_BUY)
        {
        double ddBuy=0;
        ddBuy= OrderOpenPrice()- (300*pips)
            if(!ddBuy)continue;
                {
                    if(Ask<=ddBuy)
                    {
                    int buyticketDD= OrderSend(Symbol(),0,(LotSize*1.5),Ask,3,0,0,NULL,MagicNumber,0,Green);
                    }
                 }
         }

        if(OrderType==OP_SELL)
        {
        double ddSell=0;
        ddSell= OrderOpenPrice()+ (300*pips)
            if(!ddSell)continue;
                {
                    if(Bid>=ddSell)
                     {
                        int sellticketDD= OrderSend(Symbol(),1,(LotSize*1.5),Bid,3,0,0,NULL,MagicNumber,0,Red);
                     }
                }
        }
        }
      }

    CloseallOrders();
}

0 ответов

Другие вопросы по тегам