Problemas com ordens IOC / Return

 

Depois de realizar a ordem de compra a mercado seguida de um stop pela primeira vez, recebo em todas as outras tentativas de negociação uma mensagem de No money. Alguém faz ideia do que está acontecendo ou já passou por isso?

2025.04.23 19:22:52.403 2025.01.02 09:50:00   current account state: Balance: 999.32, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 999.32, Margin: 0.00, FreeMargin: 999.32

2025.04.23 19:22:52.403 2025.01.02 09:50:00   calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 999.32, Margin: 1000.00, FreeMargin: -0.68

2025.04.23 19:22:52.403 2025.01.02 09:50:00   not enough money [market buy 0.01 EURUSD sl: 1.03653 tp: 1.03753]

2025.04.23 19:22:52.404 2025.01.02 09:50:00   failed market buy 0.01 EURUSD sl: 1.03653 tp: 1.03753 [No money]

2025.04.23 19:22:52.404 2025.01.02 09:50:00   CTrade::OrderSend: market buy 0.01 EURUSD sl: 1.03653 tp: 1.03753 [not enough money]

2025.04.23 19:22:52.404 2025.01.02 09:50:00   Ordem de compra executada com falha! ResultRetcode: 10019 RetcodeDescription: not enough money

==================================================================================================================================================

//+------------------------------------------------------------------+

//|  NORMALIZA O PREÇO

//+------------------------------------------------------------------+

double NormalizaPreco(double preco)

  {double tamanhoTick=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);

   if(tamanhoTick==0.0){return(NormalizeDouble(preco,_Digits));}

   return(NormalizeDouble(MathRound(preco/tamanhoTick)*tamanhoTick,_Digits));}

//+------------------------------------------------------------------+

//| STOP COMPRA - FUNÇÕES

//+------------------------------------------------------------------+

double stopLCompra()

  {double stoploss = 0.0;

   stoploss=candle[2].low;

   if(stoploss<candle[3].low && stoploss<candle[4].low)

     {stoploss=candle[2].low;}

   else if(candle[3].low<stoploss && candle[3].low<candle[4].low)

     {stoploss=candle[3].low;}

   else{stoploss=candle[4].low;}

   stoploss=stoploss-0.00020;

   double normPreco=NormalizaPreco(stoploss);

   return normPreco;}

//+------------------------------------------------------------------+

//| ORDEM DE COMPRA

//+------------------------------------------------------------------+

void CompraAMercado()

  {if(trade.Buy(lotes,_Symbol,tick.ask,stopLCompra(),tick.ask+0.00030,""))

     {Print("Ordem de compra executada com sucesso! ResultRetcode: ",trade.ResultRetcode()," RetcodeDescription: ",trade.ResultRetcodeDescription());}

   else{Print("Ordem de compra executada com falha! ResultRetcode: ",trade.ResultRetcode()," RetcodeDescription: ",trade.ResultRetcodeDescription());}}