Artigos sobre programação na linguagem MQL5

icon

Leia os artigos publicados aqui para aprender MQL5, a linguagem das estratégias de negociação. A maioria desses artigos foi escrita por vocês, membros da MQL5.community. Todos eles estão divididos em categorias para encontrar respostas rápidas relacionadas a aspectos específicos da programação: "Integração", "Testador", "Estratégias de negociação" e muito mais.

Acompanhe as novas publicações e participe de suas discussões no Fórum!

Novo artigo
recentes | melhores
preview
Reimaginando Estratégias Clássicas em MQL5 (Parte II): FTSE100 e Títulos Públicos do Reino Unido

Reimaginando Estratégias Clássicas em MQL5 (Parte II): FTSE100 e Títulos Públicos do Reino Unido

Nesta série de artigos, exploramos estratégias de negociação populares e tentamos melhorá-las usando IA. No artigo de hoje, revisitamos a estratégia clássica de negociação baseada na relação entre o mercado de ações e o mercado de títulos.
preview
Recursos do SQLite em MQL5: Exemplo de painel interativo com estatísticas de trading por símbolo e magic

Recursos do SQLite em MQL5: Exemplo de painel interativo com estatísticas de trading por símbolo e magic

Neste artigo, vamos criar um indicador que exibe, em um painel interativo, estatísticas de trading da conta divididas por símbolos e estratégias de negociação. Escreveremos o código com base em exemplos da Documentação e do artigo sobre trabalho com bancos de dados.
preview
Dados de mercado sem intermediários: conectando MetaTrader 5 à MOEX via ISS API

Dados de mercado sem intermediários: conectando MetaTrader 5 à MOEX via ISS API

Este artigo propõe uma solução para integrar o MetaTrader 5 com o serviço web ISS da MOEX. São fornecidas utilidades para geração automática de códigos-fonte com base no diretório da API e no índice dos principais elementos do serviço.
preview
Desenvolvendo um sistema de Replay (Parte 62): Dando play no serviço (III)

Desenvolvendo um sistema de Replay (Parte 62): Dando play no serviço (III)

Neste artigo começaremos a resolver, o detalhe sobre o excesso de ticks, que pode acometer a aplicação, quando usamos dados reais. Tal excesso faz com que o serviço muitas das vezes dificulta a correta temporização a fim de conseguir construir a barra de um minuto dentro da janela adequada.
preview
Do básico ao intermediário: Precedência de operadores

Do básico ao intermediário: Precedência de operadores

Este é com toda a certeza, o assunto mais complicado de explicar somente utilizando a parte teórica do mesmo. Sendo assim, aconselho a você, meu caro leitor, procurar praticar o que será mostrado aqui. Mesmo quando tudo parece simples a principio, esta questão sobre operadores, de fato, somente será bem compreendida com a pratica aliada ao estudo constante. 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.
preview
Do básico ao intermediário: Array (IV)

Do básico ao intermediário: Array (IV)

Neste artigo iremos ver como podemos fazer algo muito parecido com o encontrado em linguagens como C, C++ e Java. Onde podemos enviar um número quase infinito de parâmetros para dentro de uma função ou procedimento. Apesar de aparentemente ser um tópico avançado. Na minha visão, o que será visto aqui, pode muito bem ser implementado por qualquer iniciante. Desde que ele tenha compreendido os conceitos vistos arteriormente. 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.
preview
Redes neurais em trading: Otimizando Transformer para previsão de séries temporais (LSEAttention)

Redes neurais em trading: Otimizando Transformer para previsão de séries temporais (LSEAttention)

O framework LSEAttention propõe caminhos para aprimorar a arquitetura Transformer, tendo sido desenvolvido especificamente para a previsão de séries temporais multivariadas de longo prazo. As abordagens sugeridas pelos autores do método permitem resolver problemas comuns no Transformer tradicional, como o colapso entrópico e a instabilidade no treinamento.
preview
Simulação de mercado (Parte 22): Iniciando o SQL (V)

Simulação de mercado (Parte 22): Iniciando o SQL (V)

Antes que você chute o balde, e decida abandonar o estudo sobre como usar o SQL. Deixe-me lembrá-lo, meu caro leitor, que aqui estamos ainda usando apenas o básico do básico. Ainda não exploramos algumas coisas que são possíveis de serem feitas no SQL. Assim que as explorarmos você verá que o SQL é bem mais prático do que parece. Mesmo que muito provavelmente, eu venha a mudar a direção do que estamos criando. Isto por que, o processo de criação é dinâmico. Irei mostrar um pouco mais sobre como fazer as coisas no SQL. Isto por que, ele de fato é algo que você precisa entender e conhecer. Ficar simplesmente achando que é mais capaz, que toda uma comunidade de programadores e desenvolvedores, apenas lhe fará perder tempo e oportunidade. Tenha calma, pois a coisa irá se tornar ainda mais interessante.
preview
Treinamento de perceptron multicamadas com o algoritmo de Levenberg-Marquardt

Treinamento de perceptron multicamadas com o algoritmo de Levenberg-Marquardt

Este artigo apresenta a implementação do algoritmo de Levenberg-Marquardt para o treinamento de redes neurais com propagação para frente. Foi feita uma análise comparativa de desempenho com os algoritmos da biblioteca scikit-learn do Python. Primeiramente, são discutidos métodos de treinamento mais simples, como a descida do gradiente, a descida do gradiente com momentum e a descida do gradiente estocástica.
preview
Arbitragem no Forex: Um bot market maker simples de sintéticos para começar

Arbitragem no Forex: Um bot market maker simples de sintéticos para começar

Hoje vamos analisar meu primeiro robô na área de arbitragem, que é um provedor de liquidez (se é que podemos chamá-lo assim) em ativos sintéticos. Atualmente, esse bot funciona com sucesso como um módulo dentro de um grande sistema baseado em aprendizado de máquina, mas eu resgatei o antigo robô de arbitragem no Forex da nuvem, então vamos olhar para ele e pensar no que podemos fazer com ele hoje.
preview
Teoria das Categorias em MQL5 (Parte 7): Domínios Multiconjuntos, Relativos e Indexados.

Teoria das Categorias em MQL5 (Parte 7): Domínios Multiconjuntos, Relativos e Indexados.

A teoria das categorias é um ramo diversificado e em expansão da matemática que só recentemente começou a ser abordado na comunidade MQL5. Esta série de artigos tem como objetivo analisar alguns de seus conceitos para criar uma biblioteca aberta e utilizar ainda mais essa maravilhosa seção na criação de estratégias de negociação.
preview
Algoritmo de otimização por reações químicas — Chemical Reaction Optimization, CRO (Parte I): A química dos processos na otimização

Algoritmo de otimização por reações químicas — Chemical Reaction Optimization, CRO (Parte I): A química dos processos na otimização

Na primeira parte deste artigo, mergulharemos no mundo das reações químicas e descobriremos uma nova abordagem para a otimização! O método de otimização por reações químicas (CRO) utiliza os princípios das leis da termodinâmica para alcançar resultados eficazes. Revelaremos os segredos da decomposição, síntese e outros processos químicos que servem de base para este método inovador.
preview
Monitoramento de Trading com Notificações-Push — Exemplo de Serviço no MetaTrader 5

Monitoramento de Trading com Notificações-Push — Exemplo de Serviço no MetaTrader 5

Neste artigo, analisaremos a criação de um programa de serviço para enviar notificações para um smartphone sobre os resultados do trading. No decorrer do artigo, aprenderemos a trabalhar com listas de objetos da Biblioteca Padrão para facilitar a seleção de objetos com as propriedades necessárias.
preview
Exemplo de Otimização Estocástica e Controle Ótimo

Exemplo de Otimização Estocástica e Controle Ótimo

Este Expert Advisor, chamado SMOC (provavelmente abreviação de Stochastic Model Optimal Control), é um exemplo simples de um sistema de negociação algorítmica avançado para o MetaTrader 5. Ele utiliza uma combinação de indicadores técnicos, controle preditivo baseado em modelos e gerenciamento dinâmico de risco para tomar decisões de negociação. O EA incorpora parâmetros adaptativos, dimensionamento de posição baseado em volatilidade e análise de tendências para otimizar seu desempenho em diferentes condições de mercado.
preview
Repensando estratégias clássicas (Parte X): A IA pode operar o MACD?

Repensando estratégias clássicas (Parte X): A IA pode operar o MACD?

Junte-se a nós em uma análise empírica do indicador MACD para verificar se a aplicação da inteligência artificial à estratégia que inclui esse indicador pode aumentar a precisão da previsão do par EURUSD. Avaliamos simultaneamente se é mais fácil prever o próprio indicador do que o preço, bem como se o valor do indicador permite prever os níveis futuros de preço. Forneceremos as informações necessárias para que você decida se vale a pena investir seu tempo integrando o MACD às suas estratégias de trading com o uso de inteligência artificial.
preview
Do básico ao intermediário: Array (II)

Do básico ao intermediário: Array (II)

Neste artigo vamos ver o que seria um array dinâmico e um array estático. Existe diferença em usar um ou outro? Ou ambos são sempre a mesma coisa? Quando devo usar um e quando usar o outro? E os arrays constantes? Por que eles existem e qual o risco que estou correndo, quando não inicializo todos os valores de um array? Pressupondo que eles serão iguais a zero. O conteúdo exposto aqui, visa e tem como objetivo, pura e simplesmente a didática. De modo algum deve ser encarado como uma aplicação final, onde o objetivo não seja o estudo dos conceitos aqui mostrados.
preview
Introdução ao Connexus (Parte 1): Como usar a função WebRequest?

Introdução ao Connexus (Parte 1): Como usar a função WebRequest?

Este artigo é o início de uma série de desenvolvimentos para uma biblioteca chamada “Connexus”, que tem como objetivo facilitar requisições HTTP com MQL5. O objetivo deste projeto é fornecer ao usuário final essa oportunidade e mostrar como usar esta biblioteca auxiliar. Eu procurei torná-lo o mais simples possível para facilitar o estudo e proporcionar a possibilidade de futuros desenvolvimentos.
preview
Hibridização de algoritmos populacionais. Estruturas sequenciais e paralelas

Hibridização de algoritmos populacionais. Estruturas sequenciais e paralelas

Aqui, vamos mergulhar no mundo da hibridização de algoritmos de otimização, analisando três tipos principais: mistura de estratégias, hibridização sequencial e paralela. Realizaremos uma série de experimentos combinando e testando algoritmos de otimização relevantes.
preview
Redes neurais de maneira fácil (Parte 94): Otimização da sequência de dados iniciais

Redes neurais de maneira fácil (Parte 94): Otimização da sequência de dados iniciais

Ao trabalhar com séries temporais, geralmente usamos os dados na sequência histórica. Mas isso é realmente o mais eficiente? Há quem acredite que modificar a sequência dos dados iniciais pode aumentar a eficácia dos modelos de aprendizado. Neste artigo, vou apresentar um desses métodos.
preview
Construindo um Modelo de Restrição de Tendência de Candlestick (Parte 6): Integração Completa

Construindo um Modelo de Restrição de Tendência de Candlestick (Parte 6): Integração Completa

Um dos principais desafios é gerenciar várias janelas de gráfico do mesmo par, executando o mesmo programa com recursos diferentes. Vamos discutir como consolidar diversas integrações em um único programa principal. Além disso, compartilharemos informações sobre como configurar o programa para registrar mensagens em um diário e comentar sobre a transmissão bem-sucedida de sinais na interface do gráfico. Encontre mais informações neste artigo, à medida que avançamos na série.
preview
Criando um Expert Advisor Integrado MQL5-Telegram (Parte 4): Modularizando Funções de Código para Maior Reutilização

Criando um Expert Advisor Integrado MQL5-Telegram (Parte 4): Modularizando Funções de Código para Maior Reutilização

Neste artigo, reformulamos o código existente usado para enviar mensagens e capturas de tela do MQL5 para o Telegram, organizando-o em funções modulares reutilizáveis. Isso tornará o processo mais eficiente, permitindo uma execução mais rápida e uma gestão de código mais fácil em múltiplas instâncias.
preview
Desenvolvendo um EA multimoeda (Parte 7): Seleção de grupos considerando o período forward

Desenvolvendo um EA multimoeda (Parte 7): Seleção de grupos considerando o período forward

Anteriormente, ao selecionar grupos de estratégias de trading para melhorar os resultados combinados, avaliamos os grupos apenas no mesmo período utilizado para a otimização dos EAs individuais. Vamos agora observar o que acontece ao aplicar a seleção no período forward.
preview
Criando um Painel de Administração de Trading em MQL5 (Parte VI): Interface de Funções Múltiplas (I)

Criando um Painel de Administração de Trading em MQL5 (Parte VI): Interface de Funções Múltiplas (I)

O papel do Administrador de Trading vai além das comunicações via Telegram; ele também pode realizar várias atividades de controle, incluindo gerenciamento de ordens, acompanhamento de posições e personalização da interface. Neste artigo, compartilharemos insights práticos sobre como expandir nosso programa para suportar múltiplas funcionalidades em MQL5. Esta atualização tem como objetivo superar a limitação atual do Painel de Administração de se concentrar principalmente na comunicação, permitindo que ele lide com uma gama mais ampla de tarefas.
preview
Ciência de dados e aprendizado de máquina (Parte 20): Escolha entre LDA e PCA em tarefas de algotrading no MQL5

Ciência de dados e aprendizado de máquina (Parte 20): Escolha entre LDA e PCA em tarefas de algotrading no MQL5

Neste artigo, vamos considerar métodos de redução de dimensionalidade e sua aplicação no ambiente de trading MQL5. Especificamente, vamos estudar as nuances da Análise Discriminante Linear (LDA) e da Análise de Componentes Principais (PCA), bem como analisar sua influência no desenvolvimento de estratégias e na análise de mercado.
preview
Importância da qualidade do gerador de números aleatórios no desempenho dos algoritmos de otimização

Importância da qualidade do gerador de números aleatórios no desempenho dos algoritmos de otimização

Neste artigo, analisaremos o gerador de números aleatórios Mersenne Twister e o compararemos com o gerador padrão do MQL5. Veremos como a qualidade dos geradores de números aleatórios influencia os resultados dos algoritmos de otimização.
preview
Formulando um EA Dinâmico de Múltiplos Pares (Parte 1): Correlação e Correlação Inversa entre Moedas

Formulando um EA Dinâmico de Múltiplos Pares (Parte 1): Correlação e Correlação Inversa entre Moedas

O Expert Advisor dinâmico de múltiplos pares utiliza estratégias de correlação e correlação inversa para otimizar o desempenho nas negociações. Ao analisar dados de mercado em tempo real, ele identifica e explora as relações entre os pares de moedas.
preview
Analisamos o código binário dos preços no mercado (Parte I): Um novo olhar sobre a análise técnica

Analisamos o código binário dos preços no mercado (Parte I): Um novo olhar sobre a análise técnica

Este artigo apresenta uma abordagem inovadora para a análise técnica, baseada na conversão dos movimentos de preço em código binário. O autor mostra como diferentes aspectos do comportamento do mercado - desde movimentos simples de preço até padrões complexos - podem ser codificados em sequências de zeros e uns.
preview
Do básico ao intermediário: Template e Typename (II)

Do básico ao intermediário: Template e Typename (II)

Neste artigo será mostrado como lidar com uma das situações mais chatas e complicadas em termos de programação, que você poderá vir a enfrentar. O uso de tipos diferentes em um mesmo template de função ou procedimento. Apesar de aqui termos focado quase o tempo todo apenas em funções. Tudo que foi visto aqui, serve e pode ser aplicado a procedimentos.
preview
Simulação de mercado (Parte 23): Iniciando o SQL (VI)

Simulação de mercado (Parte 23): Iniciando o SQL (VI)

Neste artigo exploremos como fazer a visualização, e por consequência entender como um banco de dados está estruturado. Isto foi feito, ao observarmos o diagrama interno do banco de dados. Mesmo que este tipo de coisa, pareça ser algo desnecessário. Pode ser algo bastante valido, se você pretende de fato se tornar um administrador de bancos de dados. E sim, existem pessoas que, vivem de fazer manutenção, e criação de bancos de dados.
preview
Técnicas do MQL5 Wizard que você deve conhecer (Parte 21): Testando com Dados do Calendário Econômico

Técnicas do MQL5 Wizard que você deve conhecer (Parte 21): Testando com Dados do Calendário Econômico

Os dados do Calendário Econômico não estão disponíveis para testes com Expert Advisors no Strategy Tester, por padrão. Vamos explorar como bancos de dados poderiam ajudar a contornar essa limitação. Portanto, neste artigo, exploramos como os bancos de dados SQLite podem ser usados para arquivar notícias do Calendário Econômico, de modo que os Expert Advisors montados pelo Wizard possam usá-los para gerar sinais de trade.
preview
Redes neurais em trading: Aprendizado contextual com memória (MacroHFT)

Redes neurais em trading: Aprendizado contextual com memória (MacroHFT)

Apresento o framework MacroHFT, que aplica aprendizado por reforço contextual com memória para melhorar as decisões em trading de alta frequência de criptomoedas, utilizando dados macroeconômicos e agentes adaptativos.
preview
DoEasy. Controles (Parte 25): Objeto WinForms Tooltip

DoEasy. Controles (Parte 25): Objeto WinForms Tooltip

Neste artigo, começaremos a desenvolver o controle Tooltip (dica de ferramenta) e começaremos a criar novas primitivas gráficas para a biblioteca. Naturalmente, nem todo elemento tem uma dica de ferramenta, mas todo objeto gráfico pode ter uma.
preview
Desenvolvendo um sistema de Replay (Parte 58): Voltando a trabalhar no serviço

Desenvolvendo um sistema de Replay (Parte 58): Voltando a trabalhar no serviço

Depois de ter dado um tempo no desenvolvimento e aperfeiçoamento do serviço usado no replay / simulação. Iremos voltar a trabalhar nele. Mas como já não iremos mais usar alguns recursos, como as variáveis globais de terminal, se torna necessário uma completa reestruturação de algumas partes do mesmo. Mas não fiquem aflitos, tal processo será adequadamente explicado, para que todos consigam de fato acompanhar o desenrolar do desenvolvimento do serviço.
preview
Anotação de dados na análise de série temporal (Parte 6): Aplicação e teste de EA com ONNX

Anotação de dados na análise de série temporal (Parte 6): Aplicação e teste de EA com ONNX

Nesta série de artigos, apresentamos vários métodos de anotação de séries temporais, que podem criar dados adequados à maioria dos modelos de inteligência artificial (IA). A anotação de dados direcionada pode tornar o modelo de IA treinado mais alinhado aos objetivos e tarefas do usuário, aumentar a precisão do modelo e até ajudar o modelo a alcançar um salto qualitativo!
preview
Funcionalidades do Assistente MQL5 que você precisa conhecer (Parte 30): Normalização em Lote no Aprendizado de Máquina

Funcionalidades do Assistente MQL5 que você precisa conhecer (Parte 30): Normalização em Lote no Aprendizado de Máquina

A normalização em lote é um pré-processamento dos dados antes de sua entrada em um algoritmo de aprendizado de máquina, como uma rede neural. Ao aplicá-la, é essencial levar em conta o tipo de ativação que será usado pelo algoritmo. Exploraremos diferentes abordagens para extrair vantagens com um EA construído no Assistente.
preview
Funcionalidades do Assistente MQL5 que você precisa conhecer (Parte 39): Índice de força relativa

Funcionalidades do Assistente MQL5 que você precisa conhecer (Parte 39): Índice de força relativa

O RSI é um oscilador de momentum popular que mede o ritmo e a magnitude da recente variação no preço de um título financeiro, para avaliar situações de sobrecompra ou sobrevenda. Entender a velocidade e a escala é essencial para identificar pontos de reversão. Aplicaremos esse oscilador em mais uma classe personalizada de sinais e examinaremos algumas de suas características. No entanto, começaremos resumindo nossa discussão sobre as bandas de Bollinger.
preview
Criando um painel administrativo de negociação em MQL5 (Parte III): Expansão das classes incorporadas para gerenciamento de temas (II)

Criando um painel administrativo de negociação em MQL5 (Parte III): Expansão das classes incorporadas para gerenciamento de temas (II)

Vamos expandir a biblioteca existente Dialog, incorporando nela a lógica de gerenciamento de temas. Além disso, vamos integrar os métodos de troca de temas nas classes CDialog, CEdit e CButton, utilizadas no nosso projeto de painel administrativo.
preview
Simulação de mercado (Parte 08): Sockets (II)

Simulação de mercado (Parte 08): Sockets (II)

Que tal criar algo prático usando soquetes? Bem, neste artigo, vamos iniciar a criação de um mini chat. Acompanhe como isto será feito, pois será algo bastante interessante. Lembre-se que o que será mostrado aqui tem como objetivo ser um código puramente didático. Você de fato não deve usar este código de forma comercial ou em uma aplicação finalizada. Pois o mesmo não conta com nenhum tipo de segurança no transporte dos dados. Sendo possível ver o conteúdo do que está sendo transportado pelo soquete.
preview
Algoritmo de otimização baseado em brainstorming — Brain Storm Optimization (Parte II): Multimodalidade

Algoritmo de otimização baseado em brainstorming — Brain Storm Optimization (Parte II): Multimodalidade

Na segunda parte do artigo, vamos para a implementação prática do algoritmo BSO, realizaremos testes com funções de teste e compararemos a eficiência do BSO com outros métodos de otimização.
preview
Do básico ao intermediário: Array e String (III)

Do básico ao intermediário: Array e String (III)

Neste artigo iremos ver duas coisas. A primeira é como a biblioteca padrão consegue transformar valores binários em outras formas de representação, como octal, decimal e hexadecimal. A segunda coisa será a de como poderíamos com o conhecimento mostrado até aqui, definir uma largura para nossa senha, baseada em uma frase secreta. 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.