não consigo identificar o erro

 

Eu não estou conseguindo achar o erro nesse código, sou iniciante e n achei nada relacionado para me ajudar até pro GPT  eu já perguntei e ele fez foi cagar mais ainda ele, então se puderem me ajudar por favor

Quando vou compilar o código já da erro na linha que tem ó "CTrade  trade"

#include <Trade\Trade.mqh>
input ENUM_TIMEFRAMES periodo = PERIOD_M5;
input int media_lenta = 21;
input int media_rapida = 7;
input int volume = 1
CTrade trade;
MqlDateTime mqlDateTime;
// Indicador media movel
int mm_handle_lenta;
double mm_buffer_lenta[];
int mm_handle_rapida;
double mm_buffer_rapida[];
int OnInit()
  {
      trade.SetAsyncMode(false);
      mm_handle_lenta = iMA(_Symbol, periodo, media_lenta, 0, MODE_EMA, PRICE_CLOSE);
      mm_handle_rapida = iMA(_Symbol, periodo, media_rapida, 0, MODE_EMA, PRICE_CLOSE);
      
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
   
  }
void OnTick()
  {
      if(isNewBar())
        {
           CopyBuffer(mm_handle_lenta, 0, 0, 5, mm_buffer_lenta);
           CopyBuffer(mm_handle_rapida, 0, 0, 5, mm_buffer_rapida);
           ArraySetAsSeries(mm_buffer_lenta, true);
           ArraySetAsSeries(mm_buffer_rapida, true);
           
           // Verifica se tem posicao aberta
           if(PositionSelect(_Symbol))
             {
                  // Encerar operacao
                  ENUM_POSITION_TYPE tipoPosicaoAberta = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
                  if(tipoPosicaoAberta == POSITION_TYPE_BUY)
                    {
                        if((mm_buffer_rapida[1] < mm_buffer_lenta[1]) || horarioEncerrar())
                          {
                              // Encerra operacao comprada
                              trade.Sell(volume, _Symbol, 0, 0, 0, "Encerrou operacao");
                          }
                    }
                  else
                    {
                        if((mm_buffer_rapida[1] > mm_buffer_lenta[1]) || horarioEncerrar())
                          {
                              // Encerra opercao vendida
                              trade.Buy(volume, _Symbol, 0, 0, 0, "Abriu Operacao");
                          }
                    }
             }
           else
             {
                  if(horarioNegociacao())
                    {
                        // Abrir Posicao de Compra
                        if(mm_buffer_rapida[2] < mm_buffer_lenta[2] && mm_buffer_rapida[1] > mm_buffer_lenta[1])
                          {
                              trade.Buy(volume, _Symbol, 0, 0, 0, "Abriu Operacao");
                          }
                          
                        // Abrir posicao de Venda
                        if(mm_buffer_rapida[2] > mm_buffer_lenta[2] && mm_buffer_rapida[1] < mm_buffer_lenta[1])
                          {
                              trade.Sell(volume, _Symbol, 0, 0, 0, "Abriu Operacao");
                          }
                    }
             }
           
        }
   
  }
//+------------------------------------------------------------------+
bool horarioEncerrar()
{
   TimeCurrent(mqlDateTime);
   if(mqlDateTime.hour == 17 && mqlDateTime.min >= 30)
     {
         return true;
     }
   
   return false;
}
bool horarioNegociacao()
{
   TimeCurrent(mqlDateTime);
   if(mqlDateTime.hour == 9 && mqlDateTime.min > 30)
     {
         return false;
     }
     
   if(mqlDateTime.hour > 16)
     {
         return false;
     }
   
   return true;
}
//+------------------------------------------------------------------+
//| Returns true if a new bar has appeared for a symbol/period pair  |
//+------------------------------------------------------------------+
bool isNewBar()
  {
//--- memorize the time of opening of the last bar in the static variable
   static datetime last_time=0;
//--- current time
   datetime lastbar_time=SeriesInfoInteger(Symbol(),periodo,SERIES_LASTBAR_DATE);
//--- if it is the first call of the function
   if(last_time==0)
     {
      //--- set the time and exit
      last_time=lastbar_time;
      return(false);
     }
//--- if the time differs
   if(last_time!=lastbar_time)
     {
      //--- memorize the time and return true
      last_time=lastbar_time;
      return(true);
     }
//--- if we passed to this line, then the bar is not new; return false
   return(false);
  }

Código formatado incorrectamente editado pelo moderador. Por favor utilize o botão do CÓDIGO (Alt -S) ao inserir o seu código.

Botão de código no editor

 
O seu tópico foi movido para a secção: Expert Advisors e Negociação Automatizada.
Por favor ter em conta a secção adequada quando criar tópicos — https://www.mql5.com/pt/forum/421109/page6#comment_49385139 
 

Quando reportar erros de código, mostre sempre o registo dos errors. Não basta só dizer que deu erro.

#include <Trade\Trade.mqh>
input ENUM_TIMEFRAMES periodo = PERIOD_M5;
input int media_lenta = 21;
input int media_rapida = 7;
input int volume = 1; // <<-- faltou ponto e vírgula
CTrade trade;

E por favor, não peça ajuda para código gerado pelo ChatGPT (ou outra I.A.), pois gera código inválido e horríval, muitas vezes misturando MQL4 e MQL5.

 
Max Ryan2Eu não estou conseguindo achar o erro nesse código, sou iniciante e n achei nada relacionado para me ajudar até pro GPT  eu já perguntei e ele fez foi [ . . . ] mais ainda ele, então se puderem me ajudar por favor Quando vou compilar o código já da erro na linha que tem ó "CTrade  trade"

Falta ";" no final da linha abaixo:

input int volume = 1
 
Fernando Carreiro #:

Quando reportar erros de código, mostre sempre o registo dos errors. Não basta só dizer que deu erro.

E por favor, não peça ajuda para código gerado pelo ChatGPT (ou outra I.A.), pois gera código inválido e horríval, muitas vezes misturando MQL4 e MQL5.

  Não foi gerado no totalmente pelo GPT, eu comecei a criar sozinho mas começou a dar muitos erros ai pedi dicas  pro GTP mas pelo jeito ele fez foi cagar mais ainda meu código, perdão  
 
Vinicius Pereira De Oliveira #:

Falta ";" no final da linha abaixo:

Na pressa pra escrever e publicar esse código aqui no fórum eu esqueci de colocar, mas no código original tem ";", peço perdão também por que não especifiquei aonde é o erro, então irei identificar agora    

 Não consegui editar o meu post mas o erro é no "CTrade" quando tentei colocar na biblioteca e nisso já veio o erro na declaração do mesmo "CTrade trade" 

 
Fernando Carreiro #:
O seu tópico foi movido para a secção: Expert Advisors e Negociação Automatizada.
Por favor ter em conta a secção adequada quando criar tópicos — https://www.mql5.com/pt/forum/421109/page6#comment_49385139 
 OK, na próxima irei me atentar a isso 
 
Max Ryan2 #:

Na pressa pra escrever e publicar esse código aqui no fórum eu esqueci de colocar, mas no código original tem ";", peço perdão também por que não especifiquei aonde é o erro, então irei identificar agora    

 Não consegui editar o meu post mas o erro é no "CTrade" quando tentei colocar na biblioteca e nisso já veio o erro na declaração do mesmo "CTrade trade" 

Assumindo que o erro foi só no post do ;, daria pra dizer que o "problema" seria variável duplicada. Quando tu coloca copia pro include da sua biblioteca - mqh - e da o include no seu código (mq5). Voce fica com a variavel "trade" em dois lugares já que o include só o que faz é copiar o codigo exatamente como esta para o ponto informado. Seria considerado uma má pratica ter variaveis globais e de input em bibliotecas.
 
Max Ryan2 #Na pressa pra escrever e publicar esse código aqui no fórum eu esqueci de colocar, mas no código original tem ";", peço perdão também por que não especifiquei aonde é o erro, então irei identificar agora Não consegui editar o meu post mas o erro é no "CTrade" quando tentei colocar na biblioteca e nisso já veio o erro na declaração do mesmo "CTrade trade" 

Ok, para corrigir esses alertas da compilação, faça o seguinte:

1. Renomeie a variável "volume" para "lote" (por exemplo) nos parâmetros de entrada e nos outros 4 locais em que ela é usada;

2. Na função isNewBar(), onde tem...

datetime lastbar_time=SeriesInfoInteger(Symbol(),periodo,SERIES_LASTBAR_DATE);

... Substitua por:

datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),periodo,SERIES_LASTBAR_DATE);