[Invalid request]

 

When trying to change a position to place a take profit, the error [Invalid request] returns, but I don't see where the error is.

I'm new to MQL5, it must be something very simple that I haven't seen. Can you help me ?


Error


My code

//======================================================================================
// Funcao: ModifyPosition
// Objetivo:Modifica Posicao no mercado
// Criado em: 28/08/2020
//======================================================================================
bool ModifyPosition(ulong vPositionTicket,double vPositionPrice, double vStop_Loss, double vTake_Profit ,datetime vExpiration )
  {
//--- Atualização e inicialização do pedido e o seu resultado
   MqlTradeRequest request;
   MqlTradeResult  result; 
   ZeroMemory(request);
   ZeroMemory(result);
   
   bool  vPosition_Ticket = PositionSelectByTicket(vPositionTicket); 
   string vSymbol = PositionGetString(POSITION_SYMBOL);
   ulong vMagic_Number = PositionGetInteger(POSITION_MAGIC);
   ulong vPoidetif = PositionGetInteger(POSITION_IDENTIFIER);
   double volume=PositionGetDouble(POSITION_VOLUME);    // volume da posição
   bool vRet = true;
   
  if ( vPosition_Ticket )
  {
   //--- parâmetros do pedido
      request.action   = TRADE_ACTION_SLTP;                     // tipo de operação de negociação
      request.position = vPositionTicket;                       // Ticket da Ordem
      request.symbol   = vSymbol;                               // símbolo
      //request.price    = vPositionPrice;                        // preço para abertura
      request.sl       = vStop_Loss;                             // Stop Loss
      request.tp       = vTake_Profit;                           // Take Profit
      //request.expiration = vExpiration;                         // expiration
      request.magic    = vMagic_Number;                          // MagicNumber da ordem
      
      
      Print("ModifyPosition Position_Ticket ", "Ticket ",vPositionTicket," POSITION_IDENTIFIER ",vPoidetif," Volume ", volume, " OpenPrice : ",PositionGetDouble(POSITION_PRICE_OPEN), " Symbol ",vSymbol," SL: ",vStop_Loss," TP: ",vTake_Profit,  " Magic ", vMagic_Number ); 
   //--- envio do pedido
   }
   
   if(!OrderSend(request,result) || !vPosition_Ticket )
   {
      Print(ToString(request) + ToString(result));
      PrintFormat("OrderSend error %d",GetLastError());     // se não for possível enviar o pedido, sairá um código de erro
      vRet = false;
      
   }
//--- informação sobre a operação
   //PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
   return(vRet);
  }
//======================================================================================


In the line below, looking at the log, it is showing the position data, however when sending for execution, it gives the error, [invalid requet], OrderSend Error 4756

      Print("ModifyPosition Position_Ticket ", "Ticket ",vPositionTicket," POSITION_IDENTIFIER ",vPoidetif," Volume ", volume, " OpenPrice : ",PositionGetDouble(POSITION_PRICE_OPEN), " Symbol ",vSymbol," SL: ",vStop_Loss," TP: ",vTake_Profit,  " Magic ", vMagic_Number ); 
   //--- envio do pedido
   }
   
   if(!OrderSend(request,result) || !vPosition_Ticket )
   {
      Print(ToString(request) + ToString(result));
      PrintFormat("OrderSend error %d",GetLastError());     // se não for possível enviar o pedido, sairá um código de erro
      vRet = false;
      
   }


Result

error2


What could be giving this error?

Reason: