English Русский 中文 Español Deutsch 日本語
preview
Introdução ao MQL5 (Parte 7): Guia para Iniciantes na Criação de Expert Advisors e Utilização de Código Gerado por IA no MQL5

Introdução ao MQL5 (Parte 7): Guia para Iniciantes na Criação de Expert Advisors e Utilização de Código Gerado por IA no MQL5

MetaTrader 5Negociação |
1 010 12
Israel Pelumi Abioye
Israel Pelumi Abioye

Introdução

Bem-vindo de volta à nossa jornada no MQL5! Prepare-se para explorar o fascinante mundo de exemplos práticos, pois começamos a Parte 7 de nossa série de programação em MQL5. Neste capítulo, vamos passar da teoria para a prática, com exercícios práticos que nos ajudarão a colocar em prática as ideias estudadas em artigos anteriores.

Compreender a importância do pseudocódigo será um componente essencial de nossa investigação. O pseudocódigo atua como uma ponte entre as implementações concretas de código e os conceitos algorítmicos abstratos. Antes de começar a codificar, ele nos permite esboçar rapidamente nossas ideias em um formato que os humanos podem entender. Nas seções seguintes, vamos explorar o poder do pseudocódigo e como ele ajuda a transformar estratégias algorítmicas em código viável.

O rápido avanço da inteligência artificial no cenário tecnológico atual tem gerado discussões sobre o futuro da programação. Alguns argumentam que o código produzido por IA poderia substituir a necessidade do conhecimento tradicional de programação. Mas isso está longe de ser verdade. Este artigo busca desmistificar esse mito e destacar a importância de saber como programar. Vamos revelar maneiras de incorporar o código gerado por IA em nossos projetos de programação de forma fluida, complementando, em vez de substituir, nossas habilidades. Então, vamos começar e utilizar a programação MQL5 completamente, sem demora. Prepare-se para aplicar a teoria a situações reais e vamos fazer mágica!

Neste artigo, cobriremos os seguintes tópicos:

  • Dominar o MQL5
  • Pseudocódigo
  • Gerando Códigos MQL5 com IA

No artigo anterior, mencionei que incluiria um vídeo sobre funções de array. Este vídeo também servirá como um lembrete de onde paramos.




1. Dominar o MQL5

Aprender todos os detalhes do MQL5 de uma só vez pode ser esmagador. Em vez disso, focar em projetos pode tornar o processo de aprendizagem mais gerenciável e agradável. Comece dominando conceitos fundamentais, como variáveis, loops, condições, funções e todos os outros conceitos básicos discutidos em artigos anteriores. Uma vez que você tenha uma compreensão sólida desses conceitos, comece a explorar projetos que lhe interessam, como a construção de Expert Advisors ou indicadores personalizados. Cada projeto em que você trabalha apresentará novos desafios e ensinará lições valiosas. Por meio da aprendizagem baseada em projetos, você pode aplicar seu conhecimento teórico em cenários do mundo real, o que ajuda a entender melhor as complexidades da programação MQL5. Você gradualmente adquirirá o conhecimento e as habilidades necessárias para lidar com a complexidade da programação MQL5 à medida que trabalha em uma variedade de projetos.

Adotar esse método de aprendizagem permite que você avance como programador de forma constante e confiante. Em vez de se sentir intimidado pela vastidão do MQL5, você o abordará projeto por projeto, aumentando gradualmente sua proficiência. Portanto, aceite a jornada de aprendizado baseada em projetos; é a maneira mais confiável de dominar o MQL5. Eu decidi usar a aprendizagem baseada em projetos ao longo desta série por causa de sua eficácia. Em vez de lançá-lo de cabeça nas complexidades do MQL5, vamos focar em projetos práticos que permitem aprender pela experiência. Trabalhar em projetos do mundo real o ajudará a entender melhor o tópico e desenvolver habilidades úteis que melhorarão suas estratégias de trading.

Começaremos com projetos básicos, adequados para iniciantes, e progrediremos para projetos mais complexos. Seguindo essa abordagem metódica, você pode garantir que tenha uma compreensão sólida da programação MQL5 antes de avançar para tópicos mais complexos. Você aprenderá novas habilidades e conceitos com cada projeto, o que o ajudará a melhorar gradualmente. O projeto em que vamos trabalhar neste artigo será um exemplo prático do procedimento sequencial para gerar Expert Advisors no MQL5. Também analisaremos como otimizar os benefícios do código gerado por IA no contexto do MQL5.

O projeto amigável para iniciantes em que vamos trabalhar é um relógio de alarme de trading no MQL5. O que diferencia este projeto é o uso de uma mensagem de voz pré-gravada em vez do som padrão fornecido pelo MQL5. Você aprenderá como criar um sistema de alarme que permite aos usuários definir alertas usando mensagens de voz, adicionando um toque personalizado à sua experiência de trading.

O primeiro passo para criar um Expert Advisor (EA) no MQL5 é listar todos os componentes necessários que o EA incluirá. Essa etapa de planejamento é essencial para garantir que o EA seja criado com um objetivo e um plano precisos em mente. Para que o EA analise dados do mercado e tome decisões de trading, você deve primeiro decidir qual estratégia de trading ele usará. Isso inclui especificar as regras de entrada e saída, os procedimentos de gerenciamento de risco e quaisquer outros requisitos especiais.

Saber o tipo de Expert Advisor (EA) que você está desenvolvendo é importante ao escrever um. Enquanto alguns EAs estão principalmente preocupados em executar trades usando estratégias predefinidas, outros têm funções diversas, como gerenciamento de risco, monitoramento de dados ou até mesmo o envio de alertas de trade sem realmente realizar operações. Compreender o tipo de EA que você está construindo direcionará seus esforços e o ajudará a projetar um EA que execute sua função pretendida de forma eficaz e eficiente. Até o final deste artigo, os leitores não apenas terão um EA funcional capaz de enviar alertas de voz, mas também obterão insights valiosos sobre o processo de desenvolvimento de EA e o potencial de estratégias de trading assistidas por IA.


2. Pseudocódigo

2.1. O que é Pseudocódigo?

Pseudocódigo é uma forma de definir o que você quer fazer antes de começar a codificar. Você pode especificar seus objetivos antes de começar a programar usando pseudocódigo. É um meio de descrever seus objetivos para seu programa em linguagem clara e compreensível, sem se preocupar com a sintaxe da linguagem de programação. Isso facilita a escrita do código real mais tarde, ajudando você a organizar as etapas e a lógica que seu programa seguirá.

Analogia

Digamos que você queira usar um programa de computador para somar dois números. Você se senta e define todas as etapas necessárias antes de escrever o código real. O modo como planejamos é semelhante ao pseudocódigo! Ele o ajuda a delinear a funcionalidade de seu programa antes de começar a escrever qualquer código.

Como será o seu pseudocódigo:

Primeiro passo: Inserir Números

  • Peça ao usuário para inserir o primeiro e o segundo números.

Segundo passo: Somar Números e Imprimir o Resultado

  • Some o primeiro número ao segundo e imprima o resultado.

Cada etapa deste pseudocódigo indica uma ação específica que você deve realizar para somar os dois números. Ele ajuda a decompor o processo em tarefas menores e mais viáveis, como quando você segue uma receita para cozinhar. Escrever seu programa passo a passo se torna mais fácil quando ele é planejado dessa maneira, assim como seguir direções para resolver um problema de matemática.

Por que o pseudocódigo é importante?

Mesmo programadores experientes frequentemente negligenciam o pseudocódigo, apesar de ser um componente crucial da programação. Embora seja fácil se deixar levar pela empolgação de escrever código e ver seu programa ganhar vida, planejar e delinear suas ideias em pseudocódigo pode acelerar significativamente o desenvolvimento. Como muitos desenvolvedores, também já cometi o erro de começar a codificar sem muito planejamento. No entanto, esse método pode resultar em mal-entendidos, ineficiência e perda de tempo.

Escrever o pseudocódigo antes de iniciar a codificação me poupou, em minha experiência, muitas horas de frustração e depuração. Quando estamos ansiosos para ver resultados, é fácil subestimar a importância da organização e do planejamento. Dito isso, é inegável que o uso do pseudocódigo pode ajudar na programação, pois oferece clareza, direção e confiança.

Além disso, o pseudocódigo desempenha um papel significativo na criação de Expert Advisors (EAs) e torna o uso de código gerado por IA mais fácil de entender no MQL5. Ao trabalhar com algoritmos complexos e ferramentas impulsionadas por IA, o pseudocódigo atua como uma ponte entre conceitos abstratos e a implementação prática. Ele ajuda os desenvolvedores a traduzir ideias de alto nível em etapas práticas, tornando o processo de integração de código gerado por IA em programas MQL5 mais simples e acessível. Ao usar pseudocódigo para planejar e delinear a lógica de seus EAs, você garante que seu código seja bem estruturado, eficiente e fácil de manter.

Outro benefício de entender o pseudocódigo é sua utilidade para oportunidades de freelance dentro da comunidade MQL5. Ao comunicar de forma eficaz seus planos e estratégias de programação para os clientes por meio de pseudocódigo, você pode demonstrar sua expertise e aumentar suas chances de garantir projetos para construir Expert Advisors personalizados para suas necessidades específicas.

2.2. Como Escrever Pseudocódigo

O primeiro passo para escrever pseudocódigo é dividir os objetivos do seu programa em tarefas menores e mais realizáveis. Em seguida, explique cada etapa do processo em termos simples e diretos. Evite se prender à sintaxe de uma linguagem de programação específica e concentre-se, em vez disso, na lógica geral e no fluxo do seu programa.

Vamos dar uma olhada no EA em que estaremos trabalhando. Por exemplo, estaremos trabalhando em um alarme de trading que permite definir lembretes em horários específicos. O que torna este projeto especial é que você terá a opção de escolher o som que deseja ao configurar o lembrete. Poderíamos escrever o pseudocódigo para isso da seguinte maneira:

O primeiro passo é inicializar o EA:

  • Defina e configure as variáveis e configurações necessárias, incluindo.

O segundo passo é configurar os lembretes:

  • Permita que os usuários insiram os horários desejados para os alarmes e escolham o som que preferem para cada lembrete.
  • Armazene os horários dos alarmes e os sons selecionados nas variáveis respectivas.

O terceiro passo é monitorar o fuso horário de trading, o que envolve:

  • Comparar continuamente a hora atual com os horários designados para os alarmes.
  • Disparar o alerta de áudio quando um horário de alarme for atingido.

O quarto passo é tocar o alerta de áudio:

  • Notificar os traders sobre o horário do lembrete configurado.
  • Tocar o arquivo de som selecionado para alertar os traders.

Cada etapa deste pseudocódigo representa uma tarefa ou ação específica que o EA realizará. Antes de começar o processo real de codificação, podemos planejar de forma eficiente a lógica e a estrutura do nosso EA, dividindo os objetivos do programa em etapas menores e explicando-os em termos simples.


3. Gerando Códigos MQL5 com IA

Os processos de codificação avançaram significativamente com o uso da inteligência artificial (IA). A nova abordagem transforma completamente a maneira como os desenvolvedores criam Expert Advisors (EAs). A automação da geração de código tornou-se um grande benefício da programação MQL5 com ferramentas alimentadas por IA. Essas ferramentas utilizam algoritmos avançados para traduzir instruções de alto nível e pseudocódigo em código MQL5 executável, analisando os dados de entrada. A inteligência artificial reduz os prazos de desenvolvimento e aumenta a produtividade da geração de código, automatizando tarefas repetitivas e diminuindo a intervenção manual.

Mas, mesmo com esses avanços, a tecnologia de IA ainda está em estágios iniciais e propensa a erros de codificação. É fundamental reconhecer que o código produzido pela IA pode não ser perfeito e pode precisar de correções. Portanto, para usar códigos gerados por IA de forma eficaz, os desenvolvedores ainda precisam ter um conhecimento básico ou intermediário de MQL5. Isso garante a precisão e a confiabilidade do código gerado pela IA, permitindo reconhecer e corrigir erros que o sistema possa cometer. Embora a IA acelere o processo de criação de código, os desenvolvedores ainda precisam estar informados e vigilantes para garantir a qualidade do produto final.

3.1. Como Gerar Códigos de IA Precisos

Aqui está o processo passo a passo:

3.1.1 Pseudocódigo de EA

Antes de usar a IA para gerar código MQL5, produza um pseudocódigo detalhado. Divida os objetivos do seu EA em etapas menores e mais realizáveis e descreva as condições e ações para cada etapa.

Depois de selecionar uma ferramenta alimentada por IA para gerar código MQL5, o passo seguinte é fornecer um pseudocódigo detalhado descrevendo a lógica e funcionalidade do seu Expert Advisor (EA). Durante essa etapa, cada parte do pseudocódigo irá levantar questões e levar você a aprofundar os detalhes do funcionamento do EA. Ao dividir o pseudocódigo em etapas práticas e abordar as perguntas que surgem em cada uma delas, você garante que seu EA seja projetado de forma abrangente e implemente sua estratégia de trading de maneira eficaz.

O primeiro passo é inicializar o EA:

  • Defina e configure as variáveis e configurações necessárias, incluindo.

Essa etapa levanta perguntas como:

  • Quais variáveis são necessárias para o funcionamento do EA?
  • Quais tipos de dados devem ser usados para as variáveis?
  • Como os valores padrão para as variáveis devem ser determinados? Existem dependências ou recursos externos que precisam ser carregados?

Com essas perguntas, podemos garantir que o primeiro passo da inicialização do EA seja executado de maneira eficaz, com as variáveis e configurações necessárias configuradas e a mensagem de voz gravada corretamente carregada e preparada para reprodução durante as sessões de trading designadas.

O segundo passo é configurar os lembretes:

  • Permita que os usuários insiram os horários desejados para os alarmes e escolham o som que preferem para cada lembrete.
  • Armazene os horários dos alarmes e os sons selecionados nas variáveis respectivas.

Essa etapa levanta perguntas como:

  • Em que formato devem estar os horários dos alarmes?
  • Como os usuários selecionarão o som que preferem para o lembrete?
  • Onde serão armazenados os horários dos alarmes e os sons selecionados?
  • Os usuários terão a opção de modificar ou excluir lembretes existentes?

O terceiro passo é monitorar o fuso horário de trading, o que envolve:

  • Comparar continuamente a hora atual com os horários designados para os alarmes.
  • Disparar o alerta de áudio quando um horário de alarme for atingido.

Essa etapa levanta perguntas como:

  • Como o EA vai comparar continuamente a hora atual com os horários designados para os alarmes?
  • Qual ação será tomada quando um horário de alarme for atingido?
  • Com que frequência o EA verificará os horários dos alarmes?

O segundo passo é configurar os lembretes:

  • O quarto passo é tocar o alerta de áudio:
  • Notificar os traders sobre o horário do lembrete configurado.
  • Tocar o arquivo de som selecionado para alertar os traders.

Essa etapa levanta perguntas como:

  • Como adicionamos a mensagem de voz gravada ao nosso projeto MQL5?
  • Como o arquivo de som selecionado será reproduzido para alertar os traders?

Esse tipo de pergunta é essencial para o processo de criação de código gerado por IA. Ao respondê-las cuidadosamente, criamos um roteiro preciso para a geração de código alimentado por IA. Esse procedimento garante que o código final capture com precisão as complexidades do nosso projeto, abrindo caminho para a incorporação suave da tecnologia de IA na criação de nossos Expert Advisors (EAs).

3.1.2. Geração de código

Com base nas ações e condições fornecidas, gere o código MQL5 passo a passo, utilizando algumas das perguntas derivadas do pseudocódigo como guia. Use a ferramenta de IA escolhida para decifrar cada segmento de pseudocódigo para o qual você não tem respostas e convertê-lo em código MQL5 executável. Certifique-se de que o código gerado reflita adequadamente a lógica e funcionalidade pretendidas, concentrando-se em abordar cada etapa de forma metódica.

É crucial entender que o código gerado pela IA não será a versão final que utilizaremos. Em vez disso, eles atuam como modelos instrutivos, demonstrando a você, como iniciante, como atingir objetivos específicos no processo de criação de seu Expert Advisor (EA).

Como iniciante, você pode começar a identificar algumas das respostas para essas perguntas e, ao fazer isso, entenderá melhor os próximos passos a serem tomados com seu projeto. É importante compreender que isso não se trata apenas de fazer perguntas à IA e esperar uma resposta, mas também de apresentar à IA os detalhes do seu projeto. Você pode melhorar ativamente a compreensão da IA sobre seu projeto ao interagir com ela e fazer perguntas relevantes. Essa troca ajuda a melhorar a precisão do código que ela eventualmente produz para você utilizar. Quanto mais você se comunicar com a IA e fornecer informações contextuais sobre seu projeto, mais capaz ela será de ajudá-lo com suas tarefas de codificação.

Nota: Antes de fazer perguntas a uma IA sobre o seu projeto, é essencial fornecer uma explicação detalhada do projeto. Essa introdução serve como uma base para a IA entender o contexto e os objetivos do projeto.

Para demonstrar como gerar código a partir da IA, comecemos com o primeiro passo utilizando uma das perguntas:

Quais variáveis são necessárias para o funcionamento do EA?

Resposta da IA:

Para o projeto de alarme de trading, várias variáveis são necessárias para que o EA funcione de forma eficaz. Essas variáveis podem incluir:

  • Variáveis de Horários dos Alarmes: Variáveis para armazenar os horários de alarme definidos pelo usuário. Essas poderiam ser variáveis do tipo datetime representando horários específicos durante o dia de trading, nos quais os lembretes devem ser acionados.
  • Variáveis de Seleção de Som: Variáveis para armazenar a escolha de som do usuário para cada alarme. Essa poderia ser uma variável do tipo string contendo o caminho do arquivo ou o nome do arquivo de som selecionado.
  • Variável de Hora Atual: Uma variável para armazenar a hora atual, que será continuamente comparada com os horários dos alarmes para disparar os lembretes.
  •  Variáveis de Caminho de Arquivo de Som: Variáveis para armazenar os caminhos dos arquivos de som disponíveis que o usuário pode escolher.
  • Variável de Mensagem de Notificação: Uma variável para armazenar quaisquer mensagens de notificação que possam acompanhar os alarmes.
  • Outras Variáveis de Configuração: Variáveis adicionais podem ser necessárias, dependendo dos requisitos específicos do projeto, como variáveis para controlar o comportamento do EA ou para armazenar as preferências do usuário.
Essas variáveis são essenciais para o EA rastrear os horários dos alarmes, gerenciar as preferências do usuário e disparar os alertas de áudio nos horários especificados.

Agora, com essas respostas teóricas em mãos, fica claro que as respostas da IA nem sempre serão perfeitas. No entanto, ao fornecer uma explicação detalhada do projeto, permitimos que a IA ofereça respostas mais completas. Essa visão detalhada ajuda a IA a entender o contexto das perguntas e oferece respostas mais perspicazes. Essa abordagem melhora a qualidade das respostas da IA e promove uma interação mais proveitosa entre os requisitos do projeto e as capacidades da IA.

Para uma explicação ainda mais clara, você pode agora pedir à IA que inclua um exemplo de código. Essa adição irá ilustrar melhor como os conceitos teóricos discutidos se traduzem na implementação de código real, proporcionando uma demonstração prática da funcionalidade do projeto.

Resposta da IA:

// Define variables for alarm times
   datetime Alarm1;
   datetime Alarm2;
   datetime Alarm3;

// Define variables for sound selection
   string Sound1 = "alert1.wav";
   string Sound2 = "alert2.wav";
   string Sound3 = "alert3.wav";
// Define variables for current time and notification message
   datetime CurrentTime;
   string NotificationMessage;

// Define other configuration variables
   int NumberOfAlarms = 3;

Neste exemplo:

  • Alarm1, Alarm2 e Alarm3 são variáveis do tipo datetime para armazenar os horários de alarme definidos pelo usuário.
  • Sound1, Sound2 e Sound3 são variáveis do tipo string contendo os caminhos ou nomes dos arquivos de som selecionados para cada alarme.
  •  NotificationMessage é uma variável do tipo string para armazenar qualquer mensagem de notificação.
  • NumberOfAlarms é uma variável inteira que indica o número total de alarmes que o usuário pode definir.

Essas variáveis fornecem a base necessária para que o EA gerencie os horários dos alarmes, as seleções de som e outras configurações exigidas pelo projeto.

Com a explicação fornecida à IA, ela oferece algumas respostas, mas não são perfeitas. No entanto, a partir dessa resposta, você pode extrair algumas perguntas e pedir à IA para refiná-las de acordo com suas especificações.

O código fornecido pela IA ajuda a identificar as variáveis necessárias para o projeto. No entanto, para o nosso projeto específico, queremos que o usuário insira os parâmetros para o som e o alarme. Isso introduz algumas perguntas relacionadas ao Segundo Passo do pseudocódigo:

  • Como os usuários selecionarão o som e o horário que preferem para o lembrete?
  • Onde serão armazenados os horários dos alarmes e os sons selecionados?

Essas perguntas destacam a necessidade de implementar a funcionalidade de entrada de dados pelo usuário dentro do EA. Os usuários devem poder escolher o som que preferem para cada lembrete e especificar os horários correspondentes aos alarmes. Os horários dos alarmes e sons selecionados precisam ser armazenados em variáveis dentro do EA para que possam ser acessados e utilizados conforme necessário. Isso garante que o EA funcione de acordo com as preferências do usuário e acione alarmes com os sons especificados nos horários designados.

Resposta da IA:

Para permitir que os usuários selecionem o som que preferem para cada lembrete, você pode definir uma variável usando a palavra-chave input, especificando o tipo como string. Essa variável armazenará o nome do arquivo de som selecionado pelo usuário. Aqui está como você pode modificar o código:

input string Alarm1 = "00:00:00";
input string Alarm2 = "00:00:00";
input string Alarm3 = "00:00:00";

input string Sound = ""; // User-selected sound filename

Com essa configuração, os usuários podem inserir o nome do arquivo de som que desejam usar para os lembretes. Você pode então usar essa variável Sound para reproduzir o som selecionado quando o lembrete for acionado.

Isso demonstra como é importante seguir o pseudocódigo passo a passo. Primeiro, determinamos quais variáveis são essenciais para que o EA funcione como pretendido. A fundação do projeto é formada por essas variáveis. O componente de interação do usuário é tratado no segundo passo, onde os usuários têm a opção de inserir seus arquivos de som preferidos e os horários desejados para os alarmes. Seguir esse processo metódico garante que cada aspecto do projeto seja tratado de maneira sistemática, resultando em uma compreensão mais completa. A interação com a IA ajuda a refinar e esclarecer os requisitos do projeto, levando a uma implementação mais robusta, mesmo que o código fornecido neste estágio ainda não seja a versão final.

Agora seguimos para o terceiro passo, que é monitorar o fuso horário de trading, seguindo a progressão do pseudocódigo. Isso nos faz pensar sobre as seguintes perguntas:

  • Como o EA acompanhará a diferença de tempo entre os horários dos alarmes e a hora atual?
  • O que acontecerá quando o horário de um alarme for atingido?

Ao responder essas perguntas, o processo de desenvolvimento será guiado, e o EA será capaz de monitorar os horários designados para os alarmes e tomar as ações apropriadas conforme necessário.

Resposta da IA:

Para comparar continuamente a hora atual com os horários designados dos alarmes, podemos usar um loop que roda a cada tick da plataforma de trading. Dentro desse loop, verificaremos se a hora atual coincide com algum dos horários dos alarmes definidos pelo usuário:

// Inside the OnTick() function
// Get the current time
   datetime currentTime = TimeLocal();

// Check if the current time matches any of the alarm times
   if(currentTime == StringToTime(Alarm1) ||
      currentTime == StringToTime(Alarm2) ||
      currentTime == StringToTime(Alarm3))
     {
      // Trigger the audio alert
      PlaySound(Sound);
     }

Neste trecho de código:

  • Obtemos a hora atual usando TimeLocal().
  • Comparamos a hora atual com cada um dos horários de alarme especificados pelo usuário usando StringToTime().
  • Se o horário atual corresponder a qualquer um dos horários de alarme, acionamos o alerta sonoro reproduzindo o som selecionado usando PlaySound(Sound).

Este código garante que o EA monitore continuamente os horários de alarme especificados e tome uma ação quando o horário do alarme for atingido.

As respostas da IA estão ficando mais precisas à medida que avançamos pelos estágios descritos no pseudocódigo. Isso destaca a importância de dividir metodicamente o projeto em fases executáveis. As explicações da IA estão se alinhando mais com nossos objetivos do projeto a cada etapa. Ela nos ajuda a entender melhor como abordar os aspectos mais difíceis do projeto, bem como a maneira de abordar o próprio processo de desenvolvimento.

Interagir iterativamente com a IA está se mostrando um processo muito útil. Além de nos auxiliar com o projeto, está expandindo nossa compreensão sobre como lidar com suas complexidades. Estamos obtendo mais informações sobre como lidar efetivamente com os múltiplos aspectos do projeto à medida que interagimos com a IA.

À medida que passamos para a quarta etapa do pseudocódigo, surgem novas perguntas que requerem consideração:

  • Como adicionamos a mensagem de voz gravada ao nosso projeto MQL5?
  • Como o arquivo de som selecionado será reproduzido para alertar os traders?

Abordar essas questões envolve a integração de arquivos de áudio em nosso projeto MQL5 e a implementação da lógica para acionar a reprodução do arquivo de som selecionado nos horários de alarme designados. Vamos explorar esses aspectos mais detalhadamente para garantir que o nosso relógio de negociação com alarme funcione conforme o esperado.

Resposta da IA:

Para adicionar uma mensagem de voz ao seu projeto MQL5, siga estes passos:

  1. Prepare uma mensagem de voz gravada em um formato compatível (por exemplo, WAV).
  2. Dentro do diretório de instalação do MetaTrader 5, você encontrará uma pasta chamada "Sounds". Abra essa pasta.
  3. Copie o arquivo de som (no formato WAV) para dentro da pasta "Sounds". Se o seu arquivo de som estiver em um formato diferente (por exemplo, MP3), será necessário convertê-lo para o formato WAV antes de copiá-lo para a pasta "Sounds".
  4. Depois de copiar o arquivo de som para a pasta "Sounds", ele estará disponível para uso dentro do MetaTrader 5. Você pode referenciar o arquivo de som pelo nome do arquivo ao usar funções como PlaySound() no seu código MQL5.
  5. A reprodução da mensagem de voz pode ser acionada usando a função PlaySound().
  6. Por exemplo, se você copiou um arquivo de som chamado "alert.wav" para a pasta "Sounds", você pode reproduzir esse arquivo de som no seu código MQL5 da seguinte forma:

PlaySound("alert.wav");

Substitua "alert.wav" pelo nome do seu arquivo de som. Certifique-se de que o nome do arquivo corresponda exatamente (incluindo maiúsculas e minúsculas) para evitar erros ao referenciar o arquivo de som no seu código MQL5.

É isso! Seu arquivo de som agora deve estar adicionado com sucesso ao MetaTrader 5 e pronto para ser usado em seus Expert Advisors ou scripts.

Todas as respostas fornecidas pela IA apresentam formas de lidar com as questões levantadas pelo projeto. Em vez de esperar que a IA faça todo o trabalho, o que geralmente não é exato, essa abordagem metódica é a melhor maneira de trabalhar com a IA em nossos projetos. É fundamental perceber que a inteligência artificial (IA) não está aqui para substituir os humanos; ao contrário, ela pode ajudar e fornecer insights que podem aprimorar a expertise e a criatividade humana, tornando o trabalho mais fácil. Você pode usar a IA dessa maneira para trabalhar com ela, melhorar sua produtividade e habilidades de resolução de problemas, bem como obter uma compreensão melhor de seus projetos.

3.1.3. Testes Iterativos

Agora, graças à IA, podemos entender melhor como avançar com nosso projeto, então o próximo passo é realizar testes e depuração passo a passo. Usar scripts para analisar o desempenho do seu código e encontrar erros ou problemas é a maneira mais eficaz de depurá-lo. Você pode isolar os problemas de maneira mais eficaz e garantir que todo o programa funcione conforme o esperado, segmentando o código em partes menores e testando cada uma separadamente. Testar e depurar o código de maneira iterativa é crucial para melhorar sua qualidade e garantir sua confiabilidade e funcionalidade em situações práticas.

Agora, por exemplo, vamos testar como todos os dados de entrada exigidos do usuário irão funcionar:

// Define input variables
input string Alarm1 = "00:00:00"; // Default value for first alarm
input string Alarm2 = "00:00:00"; // Default value for second alarm
input string Alarm3 = "00:00:00"; // Default value for third alarm
input string Sound = "alert.wav"; // Default sound file

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
// Initialization function, executed once when the EA is launched
   return 0; // Return 0 to indicate successful initialization
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
// Deinitialization function, executed before the EA is removed
// Perform any cleanup or necessary actions here

  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
// Convert alarm strings to datetime objects
   datetime first_Alarm = StringToTime(Alarm1);
   datetime second_Alarm = StringToTime(Alarm2);
   datetime third_Alarm = StringToTime(Alarm3);

// Get current local time
   datetime Time = TimeLocal();

// Check if current time matches any of the alarm times
   if(first_Alarm == Time || second_Alarm == Time || third_Alarm == Time)
     {
      // Play sound if any alarm time is reached
      PlaySound(Sound);
     }

  }

Explicação:

Este trecho de código serve como um campo de testes para entender como as entradas do usuário funcionarão dentro do nosso programa. Ele define variáveis de entrada Alarm1, Alarm2, Alarm3 e Sound, que permitem que os usuários especifiquem horários de alarme e escolham um som. Durante a inicialização, os valores dessas variáveis são impressos no console, fornecendo uma confirmação visual das entradas do usuário. As funções OnInit() e OnDeinit() atuam como placeholders para a inicialização e desinicialização do EA, enquanto OnTick() serve como um placeholder para processar os ticks.

Saída:

Figura 1. Saída do código no MetaTrader5

Depois de confirmar que o nosso código está funcionando corretamente, podemos prosseguir para testar outras partes do programa. Por exemplo, vamos supor que queiramos testar usando um script. Um aspecto que podemos querer testar é a impressão da hora local. Esse teste ajudará a garantir que o nosso programa recupere e exiba com precisão a hora atual, o que é crucial para acionar alarmes nos horários especificados.

Exemplo:

void OnStart()
  {
// Get the current local time
   datetime localTime = TimeLocal();


// Print the local time to the console
   Print("Current Local Time: ", localTime);
  }

Explicação:

Este trecho de código define uma função OnStart(), que é acionada quando um script começa a ser executado no MQL5. Ele obtém a hora local atual usando a função TimeLocal() e, em seguida, imprime essa hora juntamente com uma mensagem descritiva no console, usando a função Print(). Isso permite que o desenvolvedor verifique rapidamente a precisão da recuperação da hora e da funcionalidade de saída durante os testes e a depuração.

Com esse código, testamos com sucesso nossa capacidade de recuperar a hora local do computador com precisão. Isso garante que o nosso programa possa acessar e utilizar os dados de hora local de forma eficaz, o que é essencial para várias funcionalidades baseadas em tempo no nosso projeto. Da mesma forma, devemos aplicar esse método de teste e depuração ao restante do nosso código, garantindo que cada componente funcione conforme o esperado antes de integrá-los ao projeto maior.

Nossa capacidade de recuperar com precisão a hora local do computador foi testada com sucesso usando esse código. Como muitas das funcionalidades baseadas em tempo no nosso projeto dependem da capacidade do programa de acessar e usar os dados de hora local, isso garante que ele possa fazê-lo. Ao garantir que cada parte funcione conforme o esperado antes de integrá-la ao projeto geral, devemos também usar essa abordagem de testes e depuração para as outras partes do código.

Você pode pedir para a IA integrar os segmentos de código testados em um programa significativo agora que cada etapa do código foi testada. No entanto, você pode fazer os ajustes necessários por conta própria em certas situações, caso ele não atenda às suas expectativas. Com sua orientação e suporte constantes, a IA simplificou o seu trabalho e economizou muito do seu tempo.

Resposta da IA:

// Define input variables
input string Alarm1 = "00:00:00"; // Default value for first alarm
input string Alarm2 = "00:00:00"; // Default value for second alarm
input string Alarm3 = "00:00:00"; // Default value for third alarm
input string Sound = "alert.wav"; // Default sound file

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
// Initialization function, executed once when the EA is launched
   return 0; // Return 0 to indicate successful initialization
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
// Deinitialization function, executed before the EA is removed
// Perform any cleanup or necessary actions here

  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
// Convert alarm strings to datetime objects
   datetime first_Alarm = StringToTime(Alarm1);
   datetime second_Alarm = StringToTime(Alarm2);
   datetime third_Alarm = StringToTime(Alarm3);

// Get current local time
   datetime Time = TimeLocal();

// Check if current time matches any of the alarm times
   if(first_Alarm == Time || second_Alarm == Time || third_Alarm == Time)
     {
      // Play sound if any alarm time is reached
      PlaySound(Sound);
     }

  }

Este bloco define a função OnTick(), executada em cada tick do gráfico. É o coração da funcionalidade do EA. Aqui está o que ele faz:

  • Ele converte as strings dos horários de alarme (Alarm1, Alarm2, Alarm3) em objetos datetime usando a função StringToTime().
  • Ele obtém a hora local atual usando a função TimeLocal() e a armazena na variável Time.
  • Ele verifica se o horário atual corresponde a algum dos horários de alarme. Se corresponder, ele reproduz o som especificado usando a função PlaySound().

Esse código essencialmente monitora o horário atual e aciona um som de alarme quando qualquer um dos horários de alarme especificados é atingido.

Nota: Para editar suas entradas, pressione o botão F7.


Conclusão

Para resumir, este artigo forneceu uma visão geral detalhada da aprendizagem baseada em projetos para o domínio de MQL5. Ao dividir conceitos complexos em projetos gerenciáveis, os aprendizes podem aprofundar sua compreensão e proficiência na programação MQL5. Usando ferramentas de IA, testes iterativos e pseudocódigos passo a passo, os desenvolvedores podem criar Expert Advisors com eficiência e melhorar suas estratégias de negociação. Lembre-se de que aprender MQL5 é uma maratona, não um sprint, e que adotar a aprendizagem baseada em projetos é um passo essencial no caminho para se tornar proficiente. Então, vá em frente e assuma projetos, experimente alguns códigos e continue aprendendo e se desenvolvendo como desenvolvedor.


Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/14651

Arquivos anexados |
Alarms.mq5 (2.19 KB)
Últimos Comentários | Ir para discussão (12)
Oluwatosin Mary Babalola
Oluwatosin Mary Babalola | 13 jul. 2024 em 21:11
Tenho acompanhado sua série e devo dizer que as explicações são ótimas e estou ansioso para aprender mais com artigos baseados em projetos como este
Israel Pelumi Abioye
Israel Pelumi Abioye | 13 jul. 2024 em 22:07
Oluwatosin Mary Babalola projetos como este

Olá Oluwatosin, estou ansioso para compartilhar a próxima parte com você. Se tiver alguma dúvida sobre o artigo, sinta-se à vontade para entrar em contato comigo.

Stanislav Korotky
Stanislav Korotky | 3 out. 2024 em 16:00

E por que um guia para iniciantes os ensinaria imediatamente a codificar de forma incorreta?

Em primeiro lugar, há problemas de eficiência que se tornarão perceptíveis assim que a pessoa começar a escrever algo um pouco mais complexo e realista (mas continuar a usar a mesma técnica). Em cada tick, uma conversão StringToTime das mesmas cadeias de caracteres é chamada três vezes. Seria possível fazer uma limpeza para a IA - fazer a conversão uma vez em variáveis globais:

input string Alarm1 = "00:00:00"; // Valor padrão para o primeiro alarme
input string Alarm2 = "00:00:00"; // Valor padrão para o segundo alarme
input string Alarm3 = "00:00:00"; // Valor padrão para o terceiro alarme
input string Sound = "alert.wav"; // Arquivo de som padrão

// Definir globais para valores persistentes
datetime first_Alarm, second_Alarm, third_Alarm;

int OnInit()
{
   // Função de inicialização, executada uma vez quando o EA é iniciado
   // Fazer conversões apenas uma vez por entrada
   first_Alarm = StringToTime(Alarm1);
   second_Alarm = StringToTime(Alarm2);
   third_Alarm = StringToTime(Alarm3);
   return 0; // Retorna 0 para indicar uma inicialização bem-sucedida
}

void OnTick()
{
   // Obter a hora local atual
   datetime Time = TimeLocal();

   // Verificar se a hora atual corresponde a alguma das horas de alarme
   if(first_Alarm == Time || second_Alarm == Time || third_Alarm == Time) // outro erro lógico aqui (veja abaixo)
   {
      // Reproduzir som se qualquer hora de alarme for atingida
      PlaySound(Sound);
   }
}

Em segundo lugar, não há garantia de que os tempos de tique coincidirão com os tempos de alerta fornecidos - muito provavelmente esse código os perderá nos tempos de if. E mesmo que tivéssemos feito verificações no manipulador OnTimer, isso não garantiria que "pegaríamos" os momentos necessários, porque todos os eventos (OnTick, OnTimer etc.) vêm da fila, que é esvaziada o mais rápido possível, mas pode ficar mais lenta se algum outro programa estiver fazendo cálculos pesados. Portanto, a condição de verificação da ocorrência de alertas deve ser reescrita minuciosamente e, pelo menos, sem variáveis adicionais, não é possível (no futuro, sugere-se refazer os alertas em classes, mas é claro que não neste artigo).

Stanislav Korotky
Stanislav Korotky | 3 out. 2024 em 18:11
Stanislav Korotky StringToTime das mesmas cadeias de caracteres é chamada três vezes. Seria possível fazer uma limpeza para a IA - fazer a conversão uma vez em variáveis globais:

Em segundo lugar, não há garantia de que os tempos de tique coincidirão com os tempos de alerta fornecidos - muito provavelmente esse código os perderá nos tempos de if. E mesmo que tivéssemos feito verificações no manipulador OnTimer, isso não garantiria que "pegaríamos" os momentos necessários, porque todos os eventos (OnTick, OnTimer etc.) vêm da fila, que é esvaziada o mais rápido possível, mas pode ficar mais lenta se algum outro programa estiver fazendo cálculos pesados. Portanto, a condição de verificação da ocorrência de alertas deve ser reescrita minuciosamente e, pelo menos, sem variáveis adicionais, não é possível (no futuro, sugere-se refazer os alertas em classes, mas é claro que não neste artigo).

Não entendo como esse recurso de tradução automática funciona aqui. Durante a redação inicial, o fórum me mostrou uma tradução diferente e mais precisa para o inglês. Mas aqui a tradução é muito ruim. Normalmente, respondo em inglês, mas desta vez esperei em vão que a tradução automática fosse suficiente, mas ela me desorientou com palavras diferentes aqui e ali.

Israel Pelumi Abioye
Israel Pelumi Abioye | 3 out. 2024 em 21:41
Stanislav Korotky #:

Não entendo como esse recurso de tradução automática funciona aqui. Durante a redação inicial, o fórum me mostrou uma tradução diferente e mais precisa para o inglês. Mas aqui a tradução é muito ruim. Normalmente, respondo em inglês, mas desta vez esperei em vão que a tradução automática fosse suficiente, mas ela me desorientou com palavras diferentes aqui e ali.

Olá, Sr. Korotky,

Muito obrigado por seu comentário. Você levantou alguns pontos excelentes. Neste estágio da série, tento manter o material o mais simples possível, pois ele é destinado a iniciantes. Intencionalmente, uso esse método para explicar passo a passo, pois o programa é simples. Quando começarmos a trabalhar em projetos mais complexos, essas questões serão abordadas.

Agradeço seus comentários e sua visão sobre a eficiência do código. Obrigado por sua compreensão e por compartilhar sua experiência.

Um algoritmo de seleção de características usando aprendizado baseado em energia em MQL5 puro Um algoritmo de seleção de características usando aprendizado baseado em energia em MQL5 puro
Neste artigo, apresentamos a implementação de um algoritmo de seleção de características descrito em um artigo acadêmico intitulado "FREL: Um algoritmo estável de seleção de características", chamado de Ponderação de Características como Aprendizado Baseado em Energia Regularizada.
Do básico ao intermediário: Array e Strings (I) Do básico ao intermediário: Array e Strings (I)
Neste artigo, começaremos a ver alguns tipos especiais de dados. Vamos começar definindo o que seria uma string e como usar alguns procedimentos básicos. Isto para que possamos começar a trabalhar com este tipo que é bem curioso. Apesar de em alguns momentos ser um tanto confuso para iniciantes. O conteúdo exposto aqui, visa e tem como objetivo, pura e simplesmente a didática. De modo algum deve ser encarado como sendo, uma aplicação cuja finalidade não venha a ser o aprendizado e estudo dos conceitos mostrados.
Desenvolvendo um sistema de Replay (Parte 67): Refinando o Indicador de controle Desenvolvendo um sistema de Replay (Parte 67): Refinando o Indicador de controle
Neste artigo mostrarei o que um pouco de refinamento no código é capaz de fazer. Tal refinamento tem como objetivo tornar mais simples o nosso código. Fazer um maior uso das chamadas de biblioteca do MQL5. Mas principalmente fazer com que o nosso código se torne bem mais estável, seguro e fácil de ser usado por outras classe, ou outros códigos que por ventura construiremos. O conteúdo exposto aqui, visa e tem como objetivo, pura e simplesmente a didática. De modo algum deve ser encarado como sendo, uma aplicação cuja finalidade não venha a ser o aprendizado e estudo dos conceitos mostrados.
Aprenda a operar a Fair Value Gap (FVG)/Imbalances passo a passo: Uma abordagem do conceito de Smart Money Aprenda a operar a Fair Value Gap (FVG)/Imbalances passo a passo: Uma abordagem do conceito de Smart Money
Um guia passo a passo para criar e implementar um algoritmo de negociação automatizado em MQL5 com base na estratégia de Fair Value Gap (FVG). Um tutorial detalhado sobre como criar um expert advisor que pode ser útil tanto para iniciantes quanto para traders experientes.