Socorre, alguem pode me ajudar a resolver esses erros, não sei nada de programação, estou tentando no chatgbp, mais ele não consegue resolver os erros do codigo que ele escreveu.

 
input double LotSize = 1.0;  // Tamanho do lote definido pelo usuário

int trade_count = 0;
datetime last_trade_day = 0;
ulong last_ticket = 0;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   EventSetTimer(60); // Define o temporizador para verificar a cada minuto
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   EventKillTimer();
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   // Verifica se o símbolo é o mini índice e está pronto para negociação
   if (StringFind(Symbol(), "WIN") != -1 && IsTradeAllowed())
     {
      double Point = SymbolInfoDouble(Symbol(), SYMBOL_POINT);
      datetime time = TimeCurrent();
      MqlDateTime tm;
      TimeToStruct(time, tm);

      // Verifica se é 09:00 da manhã e se ainda não executou as operações do dia
      if (tm.hour == 9 && tm.min == 0 && !TradingDoneToday())
        {
         // Obtém o primeiro candle do dia
         MqlRates rates[];
         int copied = CopyRates(Symbol(), PERIOD_M1, 0, 1, rates);
         if (copied > 0)
           {
            double candle_body = MathAbs(rates[0].close - rates[0].open);
            double candle_range = rates[0].high - rates[0].low;

            if (candle_body >= 70.0 * Point && candle_body <= 500.0 * Point)
              {
               double body_percentage = candle_body / candle_range;

               if (body_percentage >= 0.7)
                 {
                  if (rates[0].close > rates[0].open) // Candle de compra
                    {
                     PlaceTrade(ORDER_TYPE_BUY);
                    }
                  else // Candle de venda
                    {
                     PlaceTrade(ORDER_TYPE_SELL);
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Coloca uma ordem de trade                                        |
//+------------------------------------------------------------------+
void PlaceTrade(ENUM_ORDER_TYPE order_type)
  {
   double Point = SymbolInfoDouble(Symbol(), SYMBOL_POINT);
   double price = (order_type == ORDER_TYPE_BUY) ? SymbolInfoDouble(Symbol(), SYMBOL_ASK) : SymbolInfoDouble(Symbol(), SYMBOL_BID);
   double sl = (order_type == ORDER_TYPE_BUY) ? price - 300 * Point : price + 300 * Point;
   double tp = (order_type == ORDER_TYPE_BUY) ? price + 100 * Point : price - 100 * Point;

   MqlTradeRequest request;
   MqlTradeResult result;
   ZeroMemory(request);
   ZeroMemory(result);
   request.action = TRADE_ACTION_DEAL;
   request.symbol = Symbol();
   request.volume = LotSize;  // Usa o tamanho do lote definido pelo usuário
   request.type = order_type;
   request.price = price;
   request.sl = sl;
   request.tp = tp;
   request.deviation = 2;
   request.magic = 0;
   request.comment = "";

   if (!OrderSend(request, result))
     {
      Print("Erro ao colocar ordem: ", GetLastError());
     }
   else
     {
      Print("Ordem colocada com sucesso: ", result.order, " Ponto de entrada: ", price);
      last_ticket = result.order;
      // Incrementa contador de trades realizados hoje
      IncrementTradeCount();
     }
  }
//+------------------------------------------------------------------+
//| Função para verificar se as operações do dia já foram feitas     |
//+------------------------------------------------------------------+
bool TradingDoneToday()
  {
   MqlDateTime tm;
   TimeToStruct(TimeCurrent(), tm);
   int today = tm.day;

   if (last_trade_day != today)
     {
      trade_count = 0;
      last_trade_day = today;
     }

   return trade_count >= 3;
  }
//+------------------------------------------------------------------+
//| Função para incrementar o contador de trades                     |
//+------------------------------------------------------------------+
void IncrementTradeCount()
  {
   trade_count++;
  }
//+------------------------------------------------------------------+
//| Verifica se a negociação é permitida                             |
//+------------------------------------------------------------------+
bool IsTradeAllowed()
  {
   if (!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) || !AccountInfoInteger(ACCOUNT_TRADE_EXPERT))
     {
      Print("Negociação não permitida.");
      return false;
     }

   if (Symbol() == "" || StringFind(Symbol(), "WIN") == -1)
     {
      Print("Símbolo não encontrado ou não é WIN.");
      return false;
     }

   return true;
  }
//+------------------------------------------------------------------+
//| Verifica o resultado da ordem                                    |
//+------------------------------------------------------------------+
void CheckOrderResult(ulong order_id)
  {
   if (HistorySelect(OrderGetInteger(order_id, ORDER_TIME_SETUP), TimeCurrent()))
     {
      if (OrderSelect(order_id, SELECT_BY_TICKET, MODE_HISTORY))
        {
         double result_profit = OrderGetDouble(ORDER_PROFIT);
         if (result_profit > 0)
           {
            Print("Resultado: Gain de ", result_profit);
           }
         else
           {
            Print("Resultado: Loss de ", result_profit);
           }
        }
      else
        {
         Print("Erro ao selecionar ordem: ", GetLastError());
        }
     }
  }
//+------------------------------------------------------------------+
//| Verifica o resultado da última ordem                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if (last_ticket != 0)
     {
      CheckOrderResult(last_ticket);
      last_ticket = 0; // Reseta o ticket após checar o resultado
     }
  }

Arquivos anexados:
 
Eu acredito que é melhor você recorrer ao serviço de Freelance, menu acima.
 

Esqueça o CHATGPT para MQL5, ele mistura código do MQL5 com MQL4 e gera código incompleto e errado.

Aprenda a programar ou use o serviço de freelancer.

 
rodineisantiago santiago:

Pelos erros apontados na imagem anexada, dá pra perceber que foram utilizadas funções/sintaxe da MQL4... Veja se as sugestões listadas nesse tópico podem lhe ajudar: 

Sugestões sobre como maximizar a eficiência do ChatGPT para o desenvolvimento de códigos em MQL4 ou MQL5 - Expert Advisors e Negociação Automatizada - Fórum de negociação algorítmica MQL5