English Русский 中文 Español Deutsch 日本語
Vídeo: Negociação automatizada simples, como criar um EA simples mediante MQL5

Vídeo: Negociação automatizada simples, como criar um EA simples mediante MQL5

MetaTrader 5Experts | 16 agosto 2022, 08:14
396 0
Raimund Bauer
Raimund Bauer

Parte 1. Criando um EA simples


O vídeo mostra como se cria um EA preliminar. Um EA é um aplicativo automatizado que pode ser rodado no MetaTrader e é capaz de abrir e fechar posições por conta própria.

Esse vídeo mostra como criar um Expert Advisor simples. Clique no ícone "MetaQuotes Language Editor" ou pressione F4 no MetaTrader para abrir o MetaEditor. Clique em "Arquivo" > "Novo arquivo" > "EA (modelo)" > "Avançar". Eu chamei o meu EA de SimpleExpertAdvisor. Em seguida, clique em "Avançar" > "Avançar" > "Concluir".

Esta versão é fácil de ler para qualquer pessoa. Quando compilamos, criamos uma versão legível para o MetaTrader. Como o novo Expert Advisor já foi criado, vamos abrir um novo gráfico e arrastar o arquivo recém-criado para ele. Até o momento, o EA não dispõe de nenhuma lógica. Vamos adicioná-la nos próximos vídeos.


Parte 2. Funções


MQL5 usa funções para automatizar processos. Nosso EA preliminar já possui várias funções. A função OnInit é a função de inicialização de todo Expert Advisor. Ela é iniciada apenas uma vez quando você arrasta o EA para o gráfico. O valor de retorno indicará se a função foi bem-sucedida.

Já a função OnDeinit é iniciada antes de fechar o Expert Advisor. Ela não retorna nada (void).

Isso acontece porque OnDeinit é a última coisa que será executada em nosso programa, e não podemos retornar nada, pois depois disso o programa será encerrado. A função OnTick é executada sempre que o preço muda no gráfico. A maior parte da lógica do código será acionada graças à função OnTick. Sempre que o preço muda em um de nossos gráficos, tudo entre esses dois colchetes é acionado. Agora podemos nos livrar do resto dos elementos do template.

Para nosso exemplo simples, precisamos apenas da função OnTick, que será usada para chamar outra função e exibir a hora local. Quando queremos ver algo em nosso gráfico, usamos a função Comment. No nosso caso, essa função exibe um valor personalizado no canto superior esquerdo do gráfico. Os parâmetros são especificados entre parênteses, e pode ser um texto como "Hello".

Nosso EA já está pronto. Já podemos compilar. Agora vamos voltar ao MetaTrader e arrastar o SimpleExpertAdvisor para o gráfico. Ao pressionar OK, será exibido o texto "Hello". Porém, as possibilidades da função Comment não se limitam a isso.

Como queremos que a hora local seja exibida, indicamos: "The local time is" (hora local:). Podemos passar outro parâmetro separado por vírgulas. No nosso caso, estamos falando de TimeLocal. Recompilamos o código. Agora o EA exibe o texto "The local time is" e a hora local diretamente no gráfico.

Neste vídeo, aprendemos sobre funções integradas, como a função OnTick, que é chamada sempre que o preço muda. Também aprendemos como usar a função Comment para exibir texto seguido por um valor calculado. Em particular, com apenas algumas linhas de código, exibimos texto e hora local.


Parte 3. Testador de estratégia

Neste vídeo, aprenderemos como usar o testador de estratégia. O testador de estratégia é responsável pelo backtesting, isto é, pelo teste com base no histórico. Aqui o Expert Advisor é executado em função dos dados históricos para avaliar sua lucratividade. Da última vez fizemos um template simples que exibia o texto "Hello MQL5". Vamos testá-lo em função do histórico.

Vá para "Exibir" > "Testador de Estratégia" ou pressione CTRL+R. O painel Testador de Estratégia aparecerá. Aqui podemos selecionar um arquivo. Vamos começar com um Expert Advisor simples (SimpleExpertAdvisor), que fizemos da última vez.

Usaremos o par dólar australiano/dólar canadense (AUDCAD) no gráfico de minutos. Também escolheremos 2017 como período de teste. Um dos benefícios do MetaTrader 5 é que você não precisa carregar os dados históricos. Isso quer dizer que se você selecionar um período para o qual não possui dados históricos, eles serão baixados/carregados automaticamente em segundo plano. O parâmetro OHLC em M1 (Open, High, Low, Close) determina a qualidade do teste. Assim, se você passar o mouse sobre uma vela, verá seus preços de abertura, máximo, mínimo e de fechamento.

Nem todo mundo sabe que cada tick de uma vela que tem mais de uma mudança de preço é simulado. Mesmo se selecionarmos o modo "Cada tick" para uma vela diária (24 horas), todas as alterações de preço durante essas 24 horas, exceto os preços de abertura, máximo, mínimo e de fechamento, serão calculadas aleatoriamente.

Os detalhes podem ser encontrados na documentação. Eu não uso testes para frente (forward). Quase ninguém pode prever o futuro. A opção Atrasos permite simular atrasos de rede. Eu também não os uso.

O parâmetro "Depósito inicial" permite especificar quanto dinheiro você tem em sua conta de teste. O valor pode ser especificado em dólares americanos, euros ou em qualquer outra moeda. Há também uma opção "Alavancagem". Quanto maior, mais dinheiro (em relação à sua conta) você pode negociar.

Falaremos sobre "Otimização" abaixo. Após clicarmos no botão "Iniciar", veremos o texto "Hello MQL5" no gráfico. Isso não é muito interessante. Vamos substituí-lo usando a função TimeLocal.

Vamos recompilar o código e reiniciar o teste. Agora vemos a hora local, que é calculada toda vez que o preço muda. Neste vídeo, aprendemos como usar o testador de estratégia e exibir a hora local com apenas algumas linhas de código MQL5.

 

Parte 4. Tipos de dados


Neste vídeo vamos falar sobre tipos de dados. Ao testar a estratégia, vemos que a hora local é indicada em um determinado formato. Quando você está computando algo, é importante usar o tipo de dados correto. Vamos ver como conseguir isso.

Clique no ícone "MetaQuotes Language Editor" ou pressione F4. No MetaEditor aberto, clique em "Arquivo" > "Novo arquivo" > "Expert Advisor (modelo)" > "Avançar". Eu chamei meu EA de SimpleDataTypes. Em seguida, clique em "Avançar" > "Avançar" > "Concluir". Qualquer coisa acima da função OnTick pode ser removida. Também removeremos duas linhas de comentários.

Vamos começar com o tipo de dados mais óbvio, isto é, texto. Usamos o tipo de dados string (cadeia de caracteres) para atribuir esse texto a uma variável de string chamada Text, mas não podemos usar variáveis de string para operações.

Para obter o saldo de uma conta, você deve usar o tipo ponto flutuante, juntamente com a função AccountInfoDouble e uma expressão em maiúsculas. Dessa forma, devemos obter o valor correto. Vamos usar a função Comment para exibir um texto seguido por um valor calculado. Clique no botão "Compilar" ou pressione F7.

A compilação deve desenrolar-se sem problemas. Pressione F4 para retornar ao MetaTrader. Como no último vídeo aprendemos como usar o testador de estratégia, agora clique em "Exibir" > "Testador de Estratégia", selecione o arquivo SimpleDataTypes que aparece e inicie um novo teste. No canto superior esquerdo vemos o valor 100000.0.

Vamos alterar o valor do depósito adicionando números após o ponto. É por isso que usamos o tipo double quando manuseamos valores de ponto flutuante. Pelo vídeo anterior, você já sabe sobre a função TimeLocal. Ela retorna uma variável do tipo datetime.

Para exibi-la, recompilamos o código, interrompemos o teste anterior e iniciamos um novo. Os dados são mostrados em um formato especial. Portanto, quando trabalhamos com datas e horas, devemos usar o tipo datetime. Para números inteiros, podemos usar o tipo integer.

Nesse caso, obtemos o número da conta usando AccountInfoInteger. Empregamos essa constante para acessar a conta (ACCOUNT LOGIN). Vamos dar uma olhada em como isso fica.

Se a declaração só puder ser true ou false (verdadeira/falsa), devemos usar um tipo booleano (bool). Demos uma olhada em como é a exibição de tal valor: "The value is: true" (o valor é verdadeiro). Esses são apenas alguns dos tipos de dados comuns. Você pode aprender mais sobre os tipos de dados na Documentação (F1). Há vários outros tipos que podem ser utilizados. Nós também podemos usar tipos de dados complexos.

Sugiro escrever pequenos programas de teste como este. Neste pequeno vídeo, você viu como colocar vários tipos de dados diretamente no gráfico com ajuda de algumas linhas de código.


Parte 5. Cálculos


Neste vídeo, vamos fazer alguns cálculos simples. Ao desenvolver um EA para negociação automática, é impossível evitar os cálculos.

Por exemplo, calculei o número máximo de posições permitidas. Como você pode ver, o lucro do par de moedas também deve ser calculado. Vamos aprender a fazer alguns cálculos básicos. Clique no ícone "MetaQuotes Language Editor" ou pressione F4 no MetaTrader para abrir o MetaEditor.

Clique em "Arquivo" > "Novo arquivo" > "EA (modelo)" > "Avançar". Vamos nomear o arquivo do Expert Advisor SimpleExpertAdvisor. Em seguida, clique em "Avançar" > "Avançar" > "Concluir". Qualquer coisa acima da função OnTick pode ser removida. Também removeremos duas linhas de comentários. Primeiro, precisamos de duas variáveis int. "a" é 5 e "b" é 3.

Usamos Comment para mostrar o que a operação "a" mais "b" nos dará. Clicamos no botão "Compilar". Não há erros. Pressionamos F4 para retornar ao MetaTrader.

Abrimos o testador de estratégia, selecionamos o novo arquivo SimpleCalculations.ex5, ativamos a visualização e iniciamos o teste. O resultado é 8 porque 5+3=8. Vamos tentar "a" - "b", recompilar e iniciar um novo teste. Desta vez o resultado é 2 porque 5-3=2.

Multiplicamos dois números: 5 x 3 = 15. Recompilamos. Tentamos dividir "a" por "b". O resultado é 1! Usamos variáveis inteiras, logo 5/3 = 1.

Não temos valores de ponto flutuante aqui. Vamos usar double como tipo de dados e o resultado é 1,6666666667. Já melhorou.

O que acontece se somarmos "a" a "a" e multiplicarmos por "b"? "a" é 5, logo "a" mais "a" é 10. "b" é 3. Então 10 vezes 3 deve ser igual a 30.

No entanto, depois de todas essas operações, o resultado é 20! Isso ocorre porque a multiplicação ou divisão é sempre feita primeiro. Se você quiser mudar isso, use parênteses. O que está dentro dos parênteses é avaliado antes da multiplicação ou divisão. Desta vez o resultado é 30.

Você encontrará muitas outras funções matemáticas na Documentação MQL5. Sugiro escrever pequenos programas como este para descobrir como eles funcionam. No futuro, você precisará realizar cálculos mais complexos.

Neste pequeno vídeo, aprendemos como realizar os cálculos matemáticos mais simples com apenas algumas linhas de código MQL5.

 

Parte 6. Verificando condições com if


Neste vídeo, veremos se uma determinada condição é atendida. Ao usar um programa automatizado como este EA, você precisa verificar se algo está correto ou não, por exemplo, se o estocástico está acima ou abaixo das linhas pontilhadas, se o preço está acima ou abaixo da média móvel, etc.

Agora vamos aprender como fazer isso. Clique no ícone "MetaQuotes Language Editor" ou pressione F4 no MetaTrader para abrir o MetaEditor. Clique em "Arquivo" > "Novo arquivo" > "EA (modelo)" > "Avançar". Vamos chamar nosso Expert Advisor de SimpleIfCondition. Em seguida, clique em "Avançar" > "Avançar" > "Concluir".

Qualquer coisa acima da função OnTick pode ser removida. Também removeremos duas linhas de comentários. Começamos usando duas variáveis inteiras: "a" é igual a 5 e "b" deve ser igual a 3. Se "a" for maior que 5, quero ver o texto "a>5". Se não for, posso usar um operador else, então sempre que nenhuma das condições for atendida, quero ver o texto "Conditions not true" (as condições não são verdadeiras). Clicamos em "Compilar" ou F7. Não há erros...

No entanto, recebi um alerta porque esqueci o operador Comment, mas está tudo bem agora. Pressionamos F4 para retornar ao MetaTrader. Abrimos o testador de estratégia e selecionamos o arquivo SimpleIfCondition.ex5.

Ativamos o modo de visualização e começamos a testar. Recebemos a mensagem "Conditions not true" porque "a" não é maior que 5, então vamos adicionar outro operador if para verificar se "a" é igual a cinco. Recompilamos o código, paramos o teste e iniciamos um novo.

Desta vez o resultado é "a==5". O que acontece se adicionarmos outro operador if aqui para verificar se "b" é igual a três? Recompilamos o código e iniciamos outro teste.

Agora vemos apenas a mensagem "b igual a 3" na tela. Como o operador é ignorado neste caso, podemos usar dois operadores if. No primeiro, verificaremos se "a" é igual a cinco, e, no segunda, se "b" é igual a três.

O resultado será "a==5 and b==3". Recompilamos o código e, na próxima vez que testarmos, veremos "a = 5 and b = 3" na tela.

Até aí tudo bem, mas se adicionarmos algo como "c = a + b" aqui e clicarmos em "Compile", teremos dois erros. Isso ocorre porque sempre que você tiver mais de uma linha após um operador if, precisará usar duas chaves. Recompilamos o código. No próximo teste, veremos a mensagem "c = 8".

Esse foi um exemplo muito simples. Existem muitas outras maneiras de verificar se uma condição é verdadeira. Neste pequeno vídeo, você aprendeu a usar o operador if e algumas linhas de código MQL5 para verificar se uma condição é verdadeira.


Parte 7. Operadores switch e case


Neste vídeo, aprenderemos como alterar a maneira como o EA funciona usando os operadores switch e case. Por enquanto, nosso EA só pode exibir a mensagem "customer wants RSI" (o cliente quer RSI).

Precisamos entender como alterar esse valor com os comandos switch e case. Abra o MetaEditor.

Clique em "Arquivo" > "Novo arquivo" > "EA (modelo)" > "Avançar". Chamamos esse arquivo de SimpleSwitchCase. Em seguida, clique em "Avançar" > "Avançar" > "Concluir". Qualquer coisa acima da função OnTick pode ser removida. Também removeremos duas linhas de comentários. Começamos usando uma variável inteira choice igual a 5.

Também usamos a variável de string entry dentro da função OnTick. Não estamos atribuindo nenhum valor a ela, pois queremos calcular essa variável com base no que escolhemos aqui. Isso é feito usando o operador switch.

Queremos iterar sobre os possíveis valores de uma variável. Portanto, se o cliente escolher 5, exibimos "the customer wants RSI". Aqui usamos o sinal de mais e o sinal de igual. Eu explico o porquê mais tarde. Por enquanto, vamos interromper a iteração atual.

Uma vez executado o código, o laço "switch-case" terminará graças ao operador break. Vamos adicionar mais uma opção. Se introduzido 4, mostramos "the customer wants Bollinger Bands" (o cliente quer bandas de Bollinger) .

Usamos o operador break novamente para abandonar a construção switch/case. Adicionamos mais uma opção. Se nossa variável for 3, o operador entry deve exibir "customer wants MACD" (cliente quer MACD).

Você também pode usar uma expressão como 1+1 aqui em vez de um número, mas o operador case não funciona com variáveis, então você verá um erro. Vamos também adicionar a opção "default" (por padrão). Default é usado se nenhuma das outras opções disponíveis estiver habilitada. Nesse caso, o operador entry gera "the customer doesn't know" (o cliente não sabe).

Adicionamos duas chaves aqui. Em seguida, usamos a função Comment para exibir entry. Quando terminar, clique em "Compilar".

Não deve haver erros ou alertas. Vamos voltar ao MetaTrader. Abrimos o testador de estratégia e selecionamos o arquivo SimpleSwitchCase.ex5.

Ativamos o modo de visualização e começamos a testar. Vemos a inscrição "The customer wants RSI". Definimos choice como 3, recompilamos o código e iniciamos outro teste. Desta vez temos "The customer wants MACD". Como o valor choice é igual a 3, então é o mesmo que o MACD. Definimos o valor como 11, recompilamos o código e vemos o que acontece.

Desta vez vemos a mensagem “the customer doesn't know”, pois o valor 11 não está na lista de opções disponíveis. Assim sendo, o valor padrão é acionado. Vamos comentar o operador break para os dois primeiros operadores case. Definimos choice como 5 novamente, recompilamos o código e iniciamos outro teste.

Desta vez, receberemos as mensagens "the customer wants RSI", "the customer wants Bollinger Bands" e "the customer wants MACD". Isso ocorre porque as três primeiras partes de nossa construção switch-case foram processadas. Lembre-se de que se você omitir o operador break aqui, nosso Expert Advisor não sairá do loop, e continuará verificando a próxima condição.

Neste vídeo, aprendemos como usar os operadores switch e case com algumas linhas de código MQL5.

 

Parte 8. Laço while


Neste vídeo, aprenderemos como usar o operador while ao aguardar um evento. Esperamos até o contador de atraso atingir 500 000, agora vamos ver como usar o laço while em MQL5.

Abra o MetaEditor. Clique em "Arquivo" > "Novo arquivo" > "EA (modelo)" > "Avançar". Vamos chamar o arquivo do EA de SimpleWhileLoop. Em seguida, clique em "Avançar" > "Avançar" > "Concluir". Qualquer coisa acima da função OnTick pode ser removida. Também removeremos duas linhas de comentários. Começamos criando um contador de atraso (DelayCounter).

Usamos uma variável inteira porque só precisamos de números inteiros. Vamos atribuir o valor de 1 a essa variável e aumentá-lo na função OnTick. Digamos que nosso valor mínimo seja 500 000 e só queremos fazer algo se o contador de atraso estiver acima desse valor.

Agora podemos usar o operador while dentro da função OnTick para verificar se o contador de atraso está abaixo do valor mínimo. Se assim for, precisamos fazer duas coisas. Primeiro, precisamos exibir o texto "DelayCounter:" seguido pelo valor gerado pelo contador de atraso atual.

Em seguida, precisamos incrementar o contador de atraso em 1, definindo o DelayCounter como DelayCounter mais 1. Abra o testador de estratégia. Selecione o arquivo SimpleWhileLoop.ex5 recém-criado.

Ativamos o modo de visualização e começamos a testar. Assim que o contador atinge 500 000, o gráfico começa a se movimentar. Tudo funciona corretamente. No entanto, há um problema: mesmo que queiramos incrementar o contador de atraso fora do laço while, podemos compilar o código sem erros, porém nada acontecerá quando realizarmos o próximo teste.

Por que o testador para de funcionar? Se selecionarmos o operador while e pressionarmos F1, a respectiva seção de Ajuda será aberta, mas o testador de estratégia permanecerá parado. Isso acontece porque estamos criando un laço infinito.

Quando o primeiro tick aparece e essa expressão é verdadeira, o operador while inicia um laço infinito. Bem, queremos incrementar o contador de atraso, mas como fizemos isso fora do laço while, isso nunca acontecerá. A expressão será sempre verdadeira. Esta é uma das razões pelas quais evito usar muito o laço while. A maioria das condições pode ser validada com if.

Vamos recompilar o código e reiniciar o teste. Agora podemos ver que o contador de atraso funciona porque o operador if só será executado uma vez a cada vez que um tick aparecer. Se você quiser usar um operador while, certifique-se de que o laço seja interrompido. Vamos fazer outro teste. Agora o cálculo está correto.

Neste pequeno vídeo, aprendemos como usar o operador while e evitar laços infinitos graças a algumas linhas de código MQL5.


Parte 9. Laço for


Neste vídeo, aprenderemos como usar um laço for para alterar o valor do contador. A contagem sobe para 10 000.

Abra o MetaEditor. Clique em "Arquivo" > "Novo arquivo" > "EA (modelo)" > "Avançar". Chamamos o arquivo de SimpleForLoop. Em seguida, clique em "Avançar" > "Avançar" > "Concluir".

Qualquer coisa acima da função OnTick pode ser removida. Também removeremos duas linhas de comentários. Começaremos criando uma variável counter (contador).

Trata-se de uma variável inteira (int) com um valor inicial de 1. Também definimos o endvalue (valor final). No nosso caso, é 10 000. O laço for será usado dentro da função OnTick.

Se você nunca usou um laço for antes, isto pode parecer estranho. A primeira expressão é o valor inicial. No nosso caso é 1. A segunda expressão valida a condição.

No nosso caso, queremos verificar se o valor de counter é menor que o valor de endvalue. Na terceira expressão, fazemos algo com counter. No nosso caso, adicionamos 1 (counter++) a ele.

Podemos dizer que counter é igual a counter mais 1. Qualquer coisa dentro das chaves será executada desde que esta condição seja válida. No nosso caso, simplesmente exibimos o texto he counter So far, so good" (o contador até agora tudo bem).

Clicamos no botão "Compilar". Se não houver erros, retornamos ao MetaTrader. Abrimos o testador de estratégia, selecionamos o arquivo SimpleForLoop.ex5, habilitamos a visualização e iniciamos o teste. O serviço do contador pode ser visto na aba "Log" (Diário).

O valor cresce até atingir 9 999. Também é possível fazer uma contagem regressiva. Vamos alterar os valores. O contador agora deve começar em 10 000 e o valor final é 1.

Começaremos com o valor do counter e faremos a contagem regressiva subtraindo 1 dele, desde que o contador seja maior que o valor endvalue. Agora vamos executar o teste novamente. Ele termina com "Counter = 2", porque na segunda expressão estávamos verificando se o valor de counter era maior que o valor de endvalue.

Também podemos especificar "maior ou igual a". Vamos recompilar o EA. Desta vez, o último valor deve ser igual a um. E é mesmo esse valor. Você também pode usar um laço for para aumentar ou diminuir o contador em diferentes incrementos.

Indiquemos 10. Após a próxima compilação, vemos que a contagem regressiva funciona com um incremento de 10.

Neste pequeno vídeo, aprendemos como usar o laço for para calcular e decrementar/incrementar um valor com algumas linhas de código MQL5.


Parte 10. Criando uma função simples


Neste vídeo, vamos usar o MQL5 para criar uma função personalizada que dobrará o valor do contador toda vez que o preço mudar. Abra o MetaEditor. Clique em "Arquivo" > "Novo arquivo" > "EA (modelo)" > "Avançar". Chamamos este arquivo de SimpleFunction. Em seguida, clique em "Avançar" > "Avançar" > "Concluir".

Qualquer coisa acima da função OnTick pode ser removida. Também removeremos duas linhas de comentários. Começamos criando uma variável estática para counter. Neste caso, estamos usando a definição "static" (estática) para criar uma variável local que só existirá em nossa função.

Vamos passar a variável para outra função, que se chamará DoubleTheValue (o dobro do valor), mas primeiro precisamos criá-la. O valor atual do counter será passado entre parênteses. Para exibir o valor do contador, usamos a função Comment.

Como já mencionado, a função DoubleTheValue ainda precisa ser criada. Para criar uma função personalizada, comece definindo o que ela retornará. No nosso caso, a função retornará um valor inteiro (int).

Este é o nome da função personalizada (DoubleTheValue) e é isso que a função tomará como parâmetro. Passamos o counter que é um inteiro (int). Eu o chamei de CounterValue na função personalizada, mas você não precisa usar o mesmo nome.

Nossa função precisará de duas chaves. Ao compilar, teremos outro erro porque nossa função não retornará nada. Por isso, primeiro dobramos o valor passado, que chamamos de CounterValue. Para fazer isso, multiplicamos CounterValue por 2.

O resultado é armazenado em uma nova variável DoubleValue e podemos usar o operador return para enviar o valor de volta ao programa de chamada. Para fazer isso, digite "return DoubleValue;". Compilamos o código novamente para garantir que não haja erros.

Abrimos o testador de estratégia, selecionamos o arquivo SimpleFunction.ex5, habilitamos a visualização e iniciamos o teste. Agora podemos ver que o valor do contador dobra toda vez que um novo tick aparece, por isso nossa função personalizada é chamada toda vez que o preço muda. O exemplo é muito simples, pois passamos apenas um valor e realizamos uma operação.

No entanto, você pode usar a mesma lógica para executar tarefas mais complexas. Por exemplo, você pode iterar todas as posições abertas, calcular o lucro de um par de moedas e retornar o valor para a função principal usando o operador return.

Neste pequeno vídeo, aprendemos como criar uma função personalizada em MQL5 com algumas linhas de código.


Considerações finais

O MQL5 dispensa complicações. Espero que este artigo ajude você a começar e lhe dê uma boa noção de quão fácil pode ser a utilização de negociação automática. Naturalmente, mais tarde você precisará adicionar componentes mais avançados ao seu sistema, mas até este ponto você já deve saber se a programação MQL5 lhe convém...


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

Vídeo: Configurando MetaTrader 5 e MQL5 para negociação automatizada simples Vídeo: Configurando MetaTrader 5 e MQL5 para negociação automatizada simples
Neste pequeno curso em vídeo, você aprenderá como baixar, instalar e configurar o MetaTrader 5 para começar a negociar de maneira automatizada. Você também aprenderá a configurar o gráfico e as opções de negociação automatizada. Você fará seu primeiro backtest e aprenderá a importar um EA que pode negociar por conta própria 24 horas por dia, 7 dias por semana, sem precisar estar atrelado à tela de seu computador.
Redes neurais de maneira fácil (Parte 16): Uso prático do agrupamento Redes neurais de maneira fácil (Parte 16): Uso prático do agrupamento
No artigo anterior, construímos uma classe para agrupamento de dados. Hoje eu gostaria de compartilhar com vocês as formas mediante as quais os resultados podem ser usados para resolver problemas práticos de negociação.
Desenvolvendo um EA de negociação do zero (Parte 28): Em direção ao futuro (III) Desenvolvendo um EA de negociação do zero (Parte 28): Em direção ao futuro (III)
Nosso sistema de ordem ainda não consegue fazer uma coisa. Mas aqui vamos resolver FINALMENTE isto ....
Como desenvolver um sistema de negociação baseado no indicador OBV Como desenvolver um sistema de negociação baseado no indicador OBV
Este é um novo artigo para continuar a nossa série para iniciantes sobre como desenvolver um sistema de negociação com base em alguns dos indicadores populares. Nós aprenderemos um novo indicador que é o On Balance Volume (OBV), e nós aprenderemos como podemos usá-lo e projetar um sistema de negociação baseado nele.