English Русский Deutsch 日本語
preview
Introdução ao MQL5 (Parte 1): Um guia para principiantes em algotrading

Introdução ao MQL5 (Parte 1): Um guia para principiantes em algotrading

MetaTrader 5Testador | 8 maio 2024, 16:20
161 0
Israel Pelumi Abioye
Israel Pelumi Abioye

Introdução

Para quem não possui experiência em programação, o aprendizado de MQL5 pode parecer desafiador, porém é perfeitamente possível. Idealmente, o domínio do MQL5, que é tailor-made para a negociação algorítmica, beneficia-se de conhecimentos tanto de programação quanto do mercado financeiro. Nesta série de artigos, buscarei cobrir o vácuo para indivíduos sem experiência programacional que estão ansiosos para começar a aprender MQL5. O conteúdo está planejado para esclarecer conceitos programacionais e tornar o MQL5 acessível a iniciantes.

Vamos iniciar com o essencial, abordando os fundamentos da programação como variáveis, tipos de dados, loops e instruções condicionais. Nossa meta é tornar tudo isso tão acessível quanto possível. Por isso, adotaremos um método passo a passo ao longo desta série, começando com conceitos mais simples e aumentando progressivamente a complexidade. Espero que essa metodologia garanta uma experiência de aprendizado fluida e descomplicada.

Adicionalmente, sabemos que aprender fica mais fácil com exemplos concretos. Assim, vou apresentar exemplos e cenários do dia a dia para ilustrar o uso do MQL5 em negociação algorítmica. Para tornar o aprendizado ainda mais dinâmico, incentivaremos um envolvimento interativo. Será encorajado que os leitores pratiquem a programação, experimentem com os exemplos fornecidos e apliquem o que aprenderam. Em resumo, esses artigos são projetados para que pessoas sem nenhuma experiência prévia em programação possam navegar com segurança pelo universo do MQL5 e explorar as possibilidades da negociação algorítmica.

Neste artigo, examinaremos os seguintes tópicos:

  • Introdução à programação
  • Tipos de programas em MQL5
  • MetaEditor IDE
  • Noções básicas de MQL5
Vou dizer logo de cara o que faremos nos próximos artigos:
  • Variável predefinida
  • Funções comuns
  • Operadores de fluxo de controle
  • Arrays e loops
  • Criação de robôs investidores (EAs)
  • Testador de estratégias

1. Introdução à programação

Já parou para pensar como seus jogos e aplicativos favoritos são desenvolvidos? Como é que as personagens dos jogos obedecem aos seus comandos? A resposta está na programação. Por trás de cada aplicativo ou jogo, existe um código cuidadosamente elaborado que facilita essa comunicação entre humanos e computadores.

O que exatamente é uma linguagem de programação? A palavra "programação" implica o processo de criar regras ou instruções que precisamos seguir para alcançar um objetivo. Já "linguagem" diz respeito a um sistema que nos permite expressar nossas ideias, emoções e pensamentos. Contudo, os computadores não compreendem a linguagem humana como nós. Então, como podemos transmitir um conjunto de instruções para alcançar nossos objetivos? Aqui é onde as linguagens de programação entram em cena, atuando como um meio de comunicação entre humanos e máquinas, permitindo essa interação.

1.1. Tipos de linguagens de programação

Assim como há uma variedade de idiomas humanos ao redor do mundo, existem diversas linguagens de programação. Elas podem ser divididas em dois grandes grupos:

  • Linguagens de programação de alto nível - Estas são mais próximas das linguagens humanas e são mais fáceis de aprender. Exemplos populares incluem MQL4, MQL5, Python e JavaScript.
  • Linguagem de baixo nível - essas linguagens são mais próximas do código de máquina e, portanto, são mais complexas para serem escritas e compreendidas pelos humanos. Um exemplo clássico é a linguagem Assembly, que opera mais diretamente com o hardware do computador.

Classificação das linguagens por finalidade

  • Linguagens de programação de propósito geral - são projetadas para executar uma ampla variedade de tarefas e funções. Exemplos dessas linguagens incluem Python, Java e C++.
  • Linguagens orientadas por assunto - estas são especializadas em áreas específicas de aplicação. Por exemplo, MQL5 é uma linguagem projetada especificamente para o desenvolvimento de estratégias de negociação.

1.3. Termos importantes em programação

  • Um ambiente de desenvolvimento integrado (IDE) é uma ferramenta essencial que oferece aos programadores recursos abrangentes para o desenvolvimento de software. É neste ambiente que você vai codificar, testar, depurar e implementar seus programas. Alguns exemplos de IDEs são Visual Studio, Code::Blocks e MetaEditor 5. Nesta série, focaremos especialmente no MetaEditor 5, que é um IDE projetado para a programação em MQL5.
  • O depurador é uma ferramenta crucial para encontrar e corrigir falhas no código. Ele permite que os desenvolvedores percorram o código linha por linha, definam pontos de interrupção e verifiquem variáveis em tempo de execução.
  • Compilador/Interpretador - muitos IDEs incorporam ferramentas que permitem compilar e executar código diretamente dentro do ambiente, verificando erros e exibindo os resultados.
  • Os tipos de dados são categorias de dados que uma linguagem de programação pode manipular. Esses tipos são integer (inteiro), float (números de ponto flutuante), string (cadeias de caracteres), bool (booleano). Dedicaremos uma seção específica para explorar cada um desses tipos de dados, onde discutiremos suas características e usos.
  • A sintaxe é o conjunto de regras que determina como combinações de caracteres e palavras são formadas em uma linguagem de programação. Cada linguagem possui sua própria sintaxe única.
  • Um algoritmo é uma sequência de instruções bem definidas, projetadas para resolver um problema específico ou executar uma tarefa determinada.
  • Uma função é um bloco de código designado para realizar uma tarefa específica. Esse bloco pode ser chamado e reutilizado várias vezes dentro de um programa, facilitando a modularidade e a reutilização de código.
  • Uma biblioteca é uma compilação de códigos, funções e procedimentos pré-escritos que ajudam a realizar tarefas comuns. Utilizar bibliotecas economiza tempo, pois permite que programadores utilizem soluções já prontas em vez de desenvolverem tudo do zero.
  • As instruções condicionais, como if-else e switch-case, são usadas para direcionar o fluxo de execução de um programa com base em condições específicas. Se uma condição for verdadeira, o programa executará um bloco de código; caso contrário, poderá executar outro.
  • Um loop é uma estrutura que repete um bloco de código até que uma condição pré-estabelecida seja satisfeita. Os tipos mais comuns de loops são for, while e do-while. Por exemplo, um loop while continuará a executar enquanto a condição especificada for verdadeira, facilitando a execução repetida de tarefas sem necessidade de escrever o mesmo código diversas vezes.
  • Uma variável é como um contêiner usado para guardar dados dentro de um programa. Ela recebe um nome e pode armazenar diferentes valores que mudam ao longo da execução do programa.

Nota: Alguns desses termos serão detalhados mais adiante neste artigo.


 2. Programas MQL5

O MQL5 (MetaQuotes Language 5) é uma linguagem de programação de alto nível, orientada a objetos e semelhante ao C++. Especializada em tarefas de negociação, o MQL5 é uma linguagem orientada a objetos que facilita a automação de estratégias de negociação, o desenvolvimento de robôs de negociação e a criação de indicadores técnicos.

Com o MQL5, é possível escrever diversos tipos de programas para automatizar a negociação, analisar o mercado e otimizar operações de trading. Os principais tipos de programas que encontramos no MQL5:

  • Expert Advisors (EAs): São programas projetados para automatizar estratégias de negociação. Os EAs operam vinculados a um gráfico e atuam automaticamente quando eventos específicos ocorrem, executando comandos conforme regras predefinidas.
  • Scripts: Semelhantes aos EAs em alguns aspectos, os scripts são criados para executar uma única vez, ativando-se imediatamente após serem lançados. Se as condições específicas forem cumpridas, o script executa a ação programada.
  • Indicadores personalizados: Diferentemente dos Expert Advisors (EAs), os indicadores personalizados não realizam operações de negociação. São programas analíticos desenhados para sinalizar eventos específicos no mercado, com base em regras definidas internamente.
  • Bibliotecas: Uma biblioteca é um conjunto de códigos, funções e procedimentos já escritos, que servem para executar tarefas específicas. Utilizar bibliotecas economiza tempo, pois permite que programadores utilizem soluções já prontas em vez de desenvolverem tudo do zero.
  • Arquivos de inclusão: Um arquivo de inclusão contém código ou declarações que são frequentemente usados em várias partes de um programa. Através da diretiva #include, o conteúdo de um arquivo de inclusão é incorporado no arquivo principal do programa. Esses arquivos ajudam a organizar e modularizar o código, facilitando sua reutilização e manutenção.

3. MetaEditor IDE

O MetaEditor é o ambiente de desenvolvimento integrado (IDE) usado para escrever, depurar, compilar e testar programas em MQL5. Ele faz parte do pacote padrão da plataforma MetaTrader 5 e é instalado junto com ela.

  • Para acessar o MetaEditor, basta clicar no botão IDE no MetaTrader 5.

    Figura 1: Abrindo o MetaEditor a partir do terminal MetaTrader 5

  • Na seção "Navigator" (Ctrl+D), você encontrará todos os tipos de programas MQL5 organizados em pastas específicas. Os diferentes tipos de programas são agrupados em suas respectivas pastas.

    Figura 2: Seção do navegador

  • O MetaEditor possui um assistente MQL integrado que facilita a criação de programas personalizados. Para começar a criar seu programa, clique no botão "Criar" no editor ou use a combinação Ctrl+N no teclado, o que abrirá o Assistente MQL5. Neste assistente, selecione o tipo de programa desejado e clique em "Avançar".

    Figura 3: Seleção do tipo de programa a ser criado

  • A seguir, você será levado a uma página para definir as configurações básicas do seu programa. Complete os campos necessários e finalize clicando no botão "Concluído" dentro da seção do Assistente de MQL.

    Figura 4: Inserção das informações necessárias

  • Parabéns! Agora você superou a primeira etapa e está pronto para começar a codificar no editor.

    Figura 5. MetaEditor 5


  • Logo após, você encontrará no editor os dados que inseriu anteriormente.

    Figura 6. Detalhes

  • A função OnStart() é utilizada em programas do tipo script e é responsável por garantir que os códigos dentro das chaves {} sejam executados uma única vez, logo após a ativação do script.

    Figura 7: OnStart()

  • Vamos agora escrever nosso primeiro código. Criaremos um script que, ao ser ativado, mostrará a mensagem "Hello MQL5".

    void OnStart()
      {
    
       Alert("Hello MQL5");
    
      }
    


Nota: mais adiante neste artigo, exploraremos em detalhes o funcionamento desse código.


  • O compilador verifica se o código está correto. Ele também pode sugerir o que deve ser corrigido ou melhorado no código. Após escrever o código, você deve clicar no botão "Compilar" para que o compilador faça sua verificação. Em seguida, é essencial olhar para as mensagens do compilador; idealmente, elas não devem apresentar erros ou avisos.

    Figura 8. Compilador


Se houver erros, o código não funcionará até que as correções necessárias sejam feitas. Embora possa ser tentador ignorar os avisos, é prudente corrigi-los para prevenir problemas futuros.

  • Para testar o programa, basta pressionar o botão verde de reprodução.

    Figura 9: Testando o código


  • O programa compilado será então executado diretamente na plataforma MetaTrader 5.

    Figura 10. Lançamento do programa no MetaTrader 5


Bem, esses foram os primeiros passos essenciais para compreender os fundamentos da programação e do ambiente do MetaEditor. Estabelecemos a base para explorar o MQL5 e nos familiarizar com o MetaEditor, que é mais do que uma ferramenta; é uma porta para transformar suas ideias em estratégias de negociação eficazes. Agora, vamos mergulhar mais fundo nos detalhes da programação em MQL5. A jornada para dominar a negociação algorítmica está apenas começando.

4. Noções básicas de MQL5

Antes de começar a desenvolver programas MQL5, é importante entender alguns pontos básicos que compõem um programa. Vamos considerar os conceitos básicos: tipos de dados, funções, variáveis, comentários e sintaxe MQL5.

4.1. Sintaxe

A sintaxe em programação pode ser comparada à gramática em linguagens humanas; é um conjunto de regras que determina como os programas devem ser estruturados numa linguagem específica. Assim como as linguagens têm regras para a formação de frases, as linguagens de programação possuem regras para formular códigos válidos e legíveis.

Principais aspectos da sintaxe:

4.1.1. Encerramento de operadores

Os operadores em MQL5 geralmente terminam com um ponto e vírgula (";"). Este simples caractere sinaliza ao compilador que uma instrução foi concluída e que outra pode iniciar.

Exemplo:

void OnStart()
  {

   Alert("Hello MQL5");  // the semicolon means the end of the code line

  }

4.1.2. Comentário

Os comentários em MQL5, como em outras linguagens de programação, adicionam explicações e documentam seu código. Um comentário inserido hoje pode salvar horas de trabalho no futuro ao revisar ou modificar o código. Aqui estão alguns exemplos de como usar os comentários em diferentes contextos:

Comentários de uma linha. Os comentários de uma linha são precedidos pelo caractere "//". Eles são usados para explicações breves.

Exemplos:

void OnStart()
  {

   Print("Hello MQL5");   // Эта строка кода выведет “Hello MQL5” при запуске

  }

Nota: o compilador ignora completamente tudo o que for escrito após //

Comentários de múltiplas linhas

Os comentários de várias linhas começam com /* e terminam com */ . Eles são adequados para explicações mais extensas. Esses comentários podem ser úteis para escrever esboços ou instruções passo a passo ao desenvolver um programa.

Exemplo:

void OnStart()
  {

   /* Во многих языках программирования, включая MQL5,
    точка с запятой “;” используется для обозначения конца оператора.
   Это важнейший элемент, он позволяет компилятору понять структуру программы.
   */
   
  }

O compilador ignora completamente tudo o que está entre /* e */.

Os comentários ajudam a tornar o código legível e compreensível. Eles ajudam a entendê-lo, não apenas por você, mas por qualquer pessoa que possa estar lendo seu código ou trabalhando com ele. Use comentários de forma abundante para facilitar a compreensão de seus programas.


4.1.3. Identificadores

Na programação, chamamos de identificador aquele nome que você atribui a uma variável, função ou qualquer outro item de código que você mesmo define. Eles são importantes para tornar o código legível e compreensível. Aqui vai o que você precisa saber sobre identificadores em MQL5:

Regras de nomenclatura

Os identificadores precisam seguir certas convenções de nomenclatura. Eles devem começar com uma letra (A-Z ou a-z) e podem incluir mais letras, números (0-9) ou sublinhados (_).

Registro

Em MQL5, é essencial lembrar que maiúsculas e minúsculas são diferenciadas. Isso significa que 'myVariable' e 'MyVariable' são tratados como identificadores distintos.

Exemplo:

int myage = 25; 
int MyAge = 25;  // идентификаторы myage и MyAge разные.


Nomes significativos

Escolher nomes significativos e descritivos para seus identificadores faz toda a diferença. Isso não só melhora a legibilidade do código como também auxilia outras pessoas (ou você mesmo, no futuro) a compreenderem o propósito das variáveis ou funções.

Palavras reservadas

Evite usar palavras reservadas como identificadores. Elas são termos com significados especiais nas linguagens de programação e são reservadas para esses usos específicos. Algumas delas incluem: Alert (Alerta), Print (Imprimir) e Comment (Comentar). Para mais informações, consulte a documentação sobre palavras reservadas.

Exemplo:

    int Age = 25;      
    Print(Age);   
    /*
    Int это тип данных, целое число 25.
    Age это идентификатор
    Print это зарезервированное слово в MQL5, исполняет определенную функцию. Его нельзя использовать в качестве идентификатора
    */


4.2. Tipos de dados básicos

Os tipos de dados na programação são como contêineres que guardam diferentes tipos de informações. Imagine caixas para organizar suas coisas: algumas armazenam números, outras palavras, e algumas outras coisas mais complexas. Por exemplo:

Integer (int)

Esse tipo pode ser considerado como uma caixa que armazena apenas números inteiros. Este tipo é como uma caixa para números inteiros apenas, como 1, 5 ou 10, mas não para números decimais.

Exemplo:

int myInteger = 10;

Double

Este tipo é usado para números que incluem decimais.

Exemplo:

double myDouble = 3.14;

Character

No MQL5, um 'char' é usado para representar um único caractere, seja uma letra, um número ou um símbolo. Denotado pela palavra-chave 'char'.

Exemplo:

 // Объявляем символьную переменную 
      char myChar = 'A';

 // Выводим символ в консоль 
      Print(myChar);

String

String, ou cadeia de caracteres, é uma sequência de caracteres, geralmente usada para representar texto.

Exemplo:

string myString = "Hello, MQL5!";

Alert(myString);

Bool (lógico)

Os tipos lógicos representam valores verdadeiros ou falsos.

Exemplo:

bool iam25 = true;

Arrays

Os arrays no MQL5 são úteis para armazenar múltiplos valores do mesmo tipo de dado sob um único nome. São extremamente úteis para manipular coleções de dados. Veja como trabalhar com arrays no MQL5:

1. Declaração de array - Você declara um array especificando o tipo de dados e nome, seguidos de colchetes "[]", que denot array.

Exemplo:

Объявляем целочисленный массив

int numbers[5];


2. Inicialização - Você pode inicializar um array já na sua declaração, simplesmente listando os valores entre chaves '{}'.

Exemplo:

// Инициализация целочисленного массива

   int numbers[] = {1, 2, 3, 4, 5};



3. Acesso aos elementos - Os elementos de um array são acessados pelo seu índice, começando por 0. Por exemplo, no array de números, o primeiro elemento é numbers[0]. Arrays podem ser usados para diversas funções, como acessar preços de abertura e fechamento, entre outros.

Exemplo:

// Доступ к элементам массива

   int firstNumber = numbers[0];  // Доступ к первому элементу


Aqui são apresentados apenas alguns dos tipos de dados mais variados. Abordamos apenas o básico para apresentar a você os conceitos subjacentes com exemplos claros, sem entrar em detalhes mais finos e complexos ainda.


Considerações finais

Pois bem, neste artigo, você e eu embarcamos juntos nos primeiros passos para desvendar os fundamentos da programação em MQL5. Iniciamos com uma exploração geral sobre programação, avançamos para os tipos de programas em MQL5 e nos aprofundamos no ambiente do MetaEditor IDE, onde começaremos a criar algoritmos de negociação. Todo esse conhecimento básico serve como alicerce para futuros estudos mais detalhados e o desenvolvimento de programas mais sofisticados Lembre-se, este é apenas o início da jornada, e à medida que você avança, novas possibilidades de programação em MQL5 se abrirão. Continue acompanhando os artigos e aprenda a construir estratégias de negociação confiáveis e eficientes usando MQL5!



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

Redes neurais de maneira fácil (Parte 66): Problemáticas da pesquisa em treinamento off-line Redes neurais de maneira fácil (Parte 66): Problemáticas da pesquisa em treinamento off-line
O treinamento de modelos em modo off-line é realizado com dados de uma amostra de treinamento previamente preparada. Isso nos oferece várias vantagens, mas também comprime significativamente as informações sobre o ambiente em relação às dimensões da amostra de treinamento. Isso, por sua vez, limita as possibilidades de pesquisa. Neste artigo, quero apresentar um método que permite enriquecer a amostra de treinamento com dados o mais diversificados possível.
Python, ONNX e MetaTrader 5: Montando um modelo RandomForest com pré-processamento de dados via RobustScaler e PolynomialFeatures Python, ONNX e MetaTrader 5: Montando um modelo RandomForest com pré-processamento de dados via RobustScaler e PolynomialFeatures
Neste artigo, vamos desenvolver um modelo de floresta aleatória usando Python. Vamos treinar esse modelo e salvá-lo como um pipeline ONNX, já incluindo etapas de pré-processamento de dados. Depois, esse modelo será aplicado diretamente no terminal do MetaTrader 5.
Algoritmos de otimização populacional: Método Nelder-Mead (NM) Algoritmos de otimização populacional: Método Nelder-Mead (NM)
O artigo apresenta um estudo completo do método Nelder-Mead explicando como o simplex — o espaço dos parâmetros da função — muda e se reestrutura a cada iteração para alcançar a solução ótima, e também descreve como melhorar este método.
Desenvolvendo um sistema de Replay (Parte 48): Entendendo e compreendendo alguns conceitos Desenvolvendo um sistema de Replay (Parte 48): Entendendo e compreendendo alguns conceitos
Que tal aprender algo novo. Neste artigo você irá aprender como transformar Scripts e Serviços e qual a utilidade em se fazer isto.