Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Intervalo Breakout Programação mql5 EA | Parte 4/4
Intervalo Breakout Programação mql5 EA | Parte 4/4
Toby tem o prazer de anunciar que hoje encerraremos nosso consultor especialista (EA) para o MetaTrader 5. Este vídeo marca a parte final de nossa série abrangente sobre o EA. Se você não teve a chance de assistir aos vídeos anteriores, fornecerei links na descrição para que você possa acompanhar.
Nos segmentos anteriores, abordamos aspectos importantes, como cálculo de intervalo, verificações de quebra de compra e venda e lógica de fechamento de posição. Agora, neste vídeo de conclusão, temos mais alguns recursos para adicionar ao nosso EA. Especificamente, vamos incorporar uma funcionalidade de stop loss e take profit com base em uma porcentagem do intervalo. Além disso, introduziremos um filtro de dia da semana e implementaremos um modo de intervalo, permitindo que os usuários alternem entre um ou dois intervalos por intervalo.
Vamos mergulhar direto no processo de codificação. Até agora, este é o código que desenvolvemos. Nossa primeira tarefa é incluir entradas para as porcentagens de stop loss e take profit. Vamos defini-los como inteiros, pois são representados em porcentagens. Vamos definir a entrada de stop loss padrão para 150 e a entrada de lucro para 200. Também atualizaremos os comentários para refletir essas alterações. Para garantir que o usuário forneça entradas válidas, precisamos realizar verificações de entrada. Adicionaremos uma instrução if adicional na função on init para validar o stop loss e receber as entradas de lucro. Se a entrada de stop loss estiver abaixo de zero ou maior que 1000, exibiremos uma mensagem de erro. O mesmo processo de validação se aplica à entrada take profit. Essas verificações ajudarão a proteger o EA de entradas incorretas.
Seguindo em frente, vamos calcular o stop loss e obter valores de lucro para cada posição. Para posições de compra, o stop loss será calculado como uma porcentagem do intervalo abaixo do preço atual. Usaremos o preço de compra e o multiplicaremos pelo valor de stop loss de entrada dividido por 100. Para garantir um preço normalizado, aplicaremos a função NormalizeDouble. Da mesma forma, para posições de venda, o stop loss será calculado como uma porcentagem da faixa acima do preço atual. Usaremos o preço de venda e adicionaremos o valor de stop loss calculado a ele. Isso determinará o nível apropriado para o stop loss.
Para o cálculo do take profit, seguiremos a mesma lógica. Para posições de compra, o take profit será a faixa acima do preço atual, enquanto para posições de venda, será a faixa abaixo do preço atual. Com os valores de stop loss e take profit calculados, vamos incorporá-los nas chamadas de posição aberta. Em vez de usar um valor estático de zero, vamos substituí-lo pelos valores de stop loss e take profit calculados. Esse ajuste garante que o EA defina com precisão os níveis de stop loss e take profit para cada posição.
Para fornecer flexibilidade, apresentaremos a capacidade de desativar a funcionalidade de stop loss e take profit. Se o usuário inserir zero para qualquer uma das entradas, isso indicará que deseja desativar esse recurso. Adicionaremos instruções if para verificar essas condições e ajustar o cálculo de acordo. Agora, vamos abordar o recurso opcional de tempo de fechamento. Ao inserir -1 como entrada de tempo de fechamento, o EA fechará apenas as posições com base no stop loss e nos níveis de lucro. Essa modificação permite que os usuários escolham se desejam incluir um horário específico para o fechamento da posição ou confiar apenas nos parâmetros de stop loss e take profit.
Para implementar isso, atualizaremos a verificação do tempo de fechamento na função on tick. Se o tempo de fechamento for menor que zero, indicando que está desligado, vamos ignorar a verificação de fechamento da posição com base no tempo e confiar apenas nas condições de stop loss e take profit. Além disso, faremos ajustes na visualização do intervalo na função desenhar objeto. Se não houver hora de fechamento definida, as linhas de intervalo se estenderão até a vela atual, indicando que o modo de quebra está ativo até que os níveis de stop loss ou take profit sejam atingidos. Por outro lado, se for definido um horário de fechamento, as linhas de intervalo se estenderão apenas até aquela vela específica, significando que o modo de quebra está ativo até o horário designado.
Para aumentar a versatilidade do EA, introduziremos um filtro de dia da semana. Este filtro permite que os usuários especifiquem os dias em que desejam que o EA esteja ativo. Adicionaremos um parâmetro de entrada para o filtro de dia da semana, onde o usuário pode selecionar vários dias de uma lista predefinida. Por padrão, todos os dias da semana serão selecionados. Para implementar o filtro do dia da semana, modificaremos a função on tick. Introduziremos uma instrução if para verificar se o dia atual está incluído no filtro selecionado pelo usuário. Se o dia não for incluído, o EA pulará a lógica de abertura da posição e seguirá para o próximo tick.
Por fim, implementaremos a opção de alternar entre um ou dois breakouts por intervalo. Atualmente, o EA abre uma posição por quebra de intervalo. No entanto, alguns traders podem preferir ter a flexibilidade de abrir duas posições para rompimentos mais fortes. Para acomodar isso, introduziremos um parâmetro de entrada que permite ao usuário selecionar um ou dois breakouts por intervalo.
Para implementar este recurso, ajustaremos a lógica de abertura da posição. Se o usuário selecionar dois rompimentos por intervalo, o EA abrirá uma posição adicional na direção oposta ao rompimento inicial. Dessa forma, tanto uma fuga de alta quanto uma de baixa podem ser capturadas dentro do mesmo intervalo. Com todos esses novos recursos implementados, nosso consultor especialista em breakout fornecerá aos traders funcionalidade e flexibilidade aprimoradas. A funcionalidade de stop loss e take profit com base em uma porcentagem do intervalo ajudará a gerenciar riscos e capturar lucros. O filtro do dia da semana permitirá que os usuários especifiquem os dias de negociação ativos, enquanto o modo de rompimento pode ser adaptado para um ou dois rompimentos por intervalo, dependendo de sua estratégia de negociação.
Esperamos que você tenha achado esta série abrangente sobre o consultor especialista em breakout útil e informativa. Se você tiver alguma dúvida ou precisar de mais ajuda, não hesite em entrar em contato. Feliz negociação!
Bandas de Bollinger Programação EA MT5
Bandas de Bollinger Programação EA MT5
Neste vídeo, Toby apresenta um processo passo a passo para criar um consultor especialista personalizado para um evento de boliche no Twitter. Ele começa explicando a estratégia: vender quando uma vela abre acima da banda superior de Bollinger, definindo níveis de stop loss e take profit e saindo da negociação se a linha intermediária das bandas de Bollinger for cruzada. A mesma lógica se aplica à compra.
Toby então muda para o MetaEditor, onde cria um novo consultor especialista usando um modelo. Ele limpa o modelo e adiciona parâmetros de entrada para o EA, como número mágico, tamanho do lote, período, desvio, stop loss e take profit. Ele define valores padrão para esses parâmetros e compila o código.
Em seguida, Toby define variáveis globais para o EA, incluindo o identificador do indicador de banda de Bollinger e buffers para as bandas superior, média e inferior. Ele também cria variáveis para o tick e trade atuais.
Passando para a função OnInit, Toby verifica se as entradas do usuário são válidas. Se alguma das entradas for inválida, ele exibe uma mensagem de erro e retorna. Ele define o número mágico para o objeto de negociação e cria o identificador do indicador para o indicador de banda de Bollinger. Se a criação do identificador falhar, ele exibe uma mensagem de erro e retorna. Ele então define os buffers como série e compila o código.
Na função OnTick, Toby verifica se o tick atual é um tick de barra aberta usando uma função personalizada. Se não for um tick de barra aberta, ele retorna. Se for um tick de barra aberta, ele recupera o tick atual usando a função SymbolInfoTick e o armazena na variável currentTick. Ele então recupera os últimos valores do indicador usando a função CopyBuffer e os armazena nos respectivos buffers. Se o número de valores copiados não for igual a 3, indicando erro, ele exibe uma mensagem de erro e retorna.
Neste ponto, Toby concluiu as etapas iniciais de codificação do consultor especialista. Ele compila o código e usa um backtest visual no MetaTrader para verificar os valores do indicador e garantir que o código esteja funcionando corretamente.
Em seguida, precisamos implementar a lógica para gerar sinais de negociação com base na estratégia Bollinger Bands. Começaremos verificando se uma vela abre acima da banda superior, indicando um sinal de venda. Se essa condição for atendida, executaremos uma negociação de venda com stop loss e take profit. Da mesma forma, verificaremos se uma vela abre abaixo da banda inferior para um sinal de compra, executando uma negociação de compra com as mesmas condições de saída.
Segue a explicação do código:
Primeiro verificamos se o tick atual é um tick de barra aberta usando a função isNewBar(). Se retornar falso, ignoramos a geração do sinal de negociação para o tick atual.
Em seguida, recuperamos os últimos valores do indicador: upperBand, baseLine e lowerBand dos respectivos buffers.
Em seguida, verificamos se o preço de abertura da vela anterior está acima da banda superior (open[1] > upperBand). Se esta condição for verdadeira, geramos um sinal de venda abrindo uma negociação de venda usando o método Sell() do objeto de negociação. Definimos o tamanho do lote, o stop loss e os níveis de lucro usando os respectivos métodos.
Da mesma forma, verificamos se o preço de abertura da vela anterior está abaixo da banda inferior (open[1] < lowerBand). Se verdadeiro, geramos um sinal de compra abrindo uma negociação de compra usando o método Buy() do objeto de negociação. Novamente, definimos o tamanho do lote, o stop loss e os níveis de lucro.
Finalmente, se houver uma negociação aberta, verificamos se o preço de fechamento da vela atual cruza a linha do meio (linha de base). Se esta condição for verdadeira, fechamos a negociação usando o método Close() do objeto de negociação.
Lembre-se de compilar o código e testá-lo no MetaTrader para garantir que funcione conforme o esperado.
No código fornecido, várias tarefas estão sendo executadas. Aqui está uma explicação detalhada de cada etapa:
Inicializar variáveis:
Contagem de posições abertas:
Verifique se uma nova posição pode ser aberta:
Calcule stop loss e take profit:
Normalizar stop loss e take profit:
Abra uma nova posição de compra:
Verifique o cruzamento da banda superior para abrir uma posição de venda:
Posições fechadas se a linha média das Bandas de Bollinger for cruzada:
Defina a função para fechar posições:
O código executa várias verificações e cálculos para contar e gerenciar posições abertas, abrir novas posições e fechar posições com base em condições específicas.
Como criar um painel gráfico em mql5 | Parte 1/2
Como criar um painel gráfico em mql5 | Parte 1/2
Toby demonstrará como criar um painel gráfico simples em MQL5 para exibir informações e adicionar um botão para alterar a cor de fundo do gráfico. Ele menciona que este painel pode ser criado para qualquer consultor especialista, mas usará o EA de quebra de intervalo de tempo como exemplo. Toby afirma que o tópico do vídeo foi solicitado por um usuário nos comentários e incentiva os espectadores a sugerir tópicos para vídeos futuros.
Toby abre o Meta Editor e carrega o arquivo para o intervalo de tempo EA. Ele o salva como um novo consultor especialista chamado "painel EA de intervalo de tempo" e o compila. Ele explica que escreverá o painel como uma classe separada em um arquivo de inclusão, facilitando o uso em qualquer consultor especialista. Toby cria um novo arquivo de inclusão chamado "painel gráfico" e define as entradas para o tamanho do painel, tamanho da fonte e cor da fonte.
Ele inclui o arquivo "dialog.mqh" da pasta de controles, que lhe permitirá utilizar as funções dessa classe. Toby define uma classe chamada "CGraphicalPanel" que herda da classe "CAppDialog". Ele adiciona uma seção privada para os métodos da classe, uma seção pública para o construtor, destruidor, função de inicialização e manipulador de eventos do gráfico. Ele também inclui uma seção de comentários para os métodos de classe.
Em seguida, Toby escreve o corpo dos métodos de classe após a definição de classe. Ele especifica que os métodos pertencem à classe e escreve o construtor, o destruidor, a função de inicialização e o manipulador de eventos do gráfico. Ele adiciona comentários para descrever a finalidade de cada método. Toby compila o código para verificar erros ou avisos.
Toby implementa a função create panel, que cria um painel de diálogo usando a classe CFDialog. Ele define o nome, a subjanela, a posição e o tamanho do painel com base nos parâmetros de entrada. Se a criação do painel falhar, ele imprime uma mensagem e retorna false. Ele também adiciona uma função de atualização de gráfico para atualizar o gráfico. Toby compila o código novamente para garantir que não haja erros.
No arquivo do consultor especialista, Toby inclui o arquivo de inclusão do painel gráfico e cria um objeto da classe do painel chamado "painel" na seção de variável global. Ele inicializa o painel na função onInit e adiciona um manipulador de eventos de gráfico para passar os eventos de gráfico para o painel. Toby escreve o corpo do manipulador de eventos de gráfico, chamando a função de evento de gráfico do painel com os parâmetros apropriados.
Por fim, Toby adiciona uma função de painel de destruição à função onDeinit, que destrói o painel e especifica o motivo. Ele compila o código novamente e o testa no MetaTrader. Toby demonstra como arrastar e soltar o consultor especialista no gráfico, mostrando a funcionalidade do painel. Ele também fecha o consultor especialista usando o botão do painel.
Ei, eu sou Toby, e hoje vou mostrar a você como criar um painel gráfico em MQL5. Na verdade, esta é a segunda parte do tutorial. Na primeira parte, criamos um painel simples no lado esquerdo, e se você perdeu, pode encontrar o link na descrição. No vídeo de hoje, adicionaremos alguns rótulos e um botão ao painel. Para este exemplo, usaremos o intervalo de tempo EA. Se você estiver interessado em aprender a codificar este consultor especialista, tenho uma série de codificação em meu canal. Você pode encontrar o link para a primeira parte na descrição também.
Para começar, vamos mudar para o editor MQL5 e começar a codificar. Temos nosso arquivo de inclusão do painel gráfico aqui e também temos o intervalo de tempo EA, que modificamos para exibir o painel. Vamos para o arquivo de inclusão e verificamos os valores de entrada do usuário. Criaremos um método chamado "check inputs" na seção de método privado em nossa classe. Após a função OnInit, chamaremos este método. Se o método retornar false, também retornaremos false da função OnInit. Dessa forma, se as entradas forem inválidas, não prosseguiremos. Vamos compilar e seguir em frente.
Agora, vamos começar a adicionar rótulos ao painel. Precisamos incluir os arquivos de classe necessários para rótulos e botões. Iremos para a seção include e incluiremos "controls/label.mqh" para rótulos e "controls/button.mqh" para botões. Depois disso, definiremos nossas variáveis de rótulo. Teremos rótulos para entradas, número mágico, lotes, hora de início, duração e hora de fechamento. Vamos compilar e seguir em frente.
Na função createPanel, adicionaremos os rótulos ao painel. Vamos criar o rótulo de entrada usando a variável "M_L_Input". Definiremos o texto, a cor e o tamanho da fonte para o rótulo. Em seguida, anexaremos a etiqueta ao painel. Também repetiremos esse processo para os outros rótulos. Depois de adicionar todos os rótulos, vamos compilar e verificar o painel do lado esquerdo. Pode ser necessário ajustar as posições dos rótulos para um melhor alinhamento. Vamos compilar e verificar.
Agora, vamos adicionar o botão ao painel. Vamos definir uma variável "M_B_ChangeColor" do tipo "CButton". Definiremos a posição, o texto, a cor do texto, a cor do plano de fundo e o tamanho da fonte do botão. Por fim, adicionaremos o botão ao painel. Após a compilação, veremos o botão no painel. Nesta fase, o botão não tem nenhuma funcionalidade, mas vamos adicioná-lo mais tarde.
Em seguida, vamos alterar a cor de fundo e o nome da fonte do painel. Para fazer isso, vamos incluir o arquivo "Defiance.mqh" e definir novos valores para as configurações padrão. Vamos indefinir o nome da fonte padrão e as configurações de cor de fundo e, em seguida, definir novos valores para eles. Usaremos o nome da fonte "Consolas" e uma cor de fundo cinza escuro. Após a compilação, veremos o painel atualizado com a nova cor de fundo e fonte.
Por fim, vamos exibir os valores reais do consultor especialista no painel. Incluiremos o arquivo do consultor especialista em nosso arquivo de inclusão e acessaremos as variáveis de entrada. Atualizaremos os rótulos com os valores reais do consultor especialista. Após a compilação, veremos os valores de entrada exibidos no painel.
Isso é tudo para o tutorial de hoje sobre como criar um painel gráfico em MQL5. Na próxima parte, adicionaremos funcionalidade ao botão e completaremos o painel. Fique atento para mais!
Como criar um painel gráfico em mql5 | Parte 2/2
Como criar um painel gráfico em mql5 | Parte 2/2
Olá, aqui é Toby. Hoje vou mostrar como criar um painel gráfico em MQL5. Esta é a segunda parte da série de tutoriais. Na primeira parte, criamos um painel simples no lado esquerdo. Se você perdeu, vou linkar aqui. No vídeo de hoje, adicionaremos rótulos e um botão ao painel. Para este exemplo, usaremos o intervalo de tempo EA. Se você quiser aprender a codificar este consultor especialista, tenho uma série de codificação no meu canal. Vou linkar a primeira parte aqui também.
Vamos mudar para o editor de mídia e começar a codificar. Temos nosso arquivo de inclusão de painel gráfico e o arquivo EA de quebra de intervalo de tempo modificado, que exibe o painel. No arquivo de inclusão, criaremos um método chamado "checkInputs" para validar os valores de entrada do usuário. Chamaremos este método antes de criar o painel na função OnInit. Se alguma das entradas for inválida, exibiremos uma mensagem de erro e retornaremos false. Caso contrário, continuaremos com a criação do painel.
Em seguida, adicionaremos rótulos e um botão ao painel. Para usar rótulos e botões, precisamos incluir seus arquivos de classe. Adicionaremos as instruções de inclusão necessárias para rótulos e botões na classe. Em seguida, definiremos variáveis privadas para os rótulos e o botão.
Na função CreatePanel, após a criação do painel, adicionaremos os rótulos e o botão ao painel. Definiremos suas posições, texto, cor e tamanho da fonte. Finalmente, vamos adicioná-los ao painel usando o método Add.
Vamos compilar o código e verificar o painel. Os rótulos e o botão devem ser exibidos no painel. Também mudaremos a cor de fundo e o nome da fonte do painel para melhorar a aparência. Para exibir os valores reais do consultor especialista no painel, incluiremos o arquivo do consultor especialista na seção de inclusão. Em seguida, na função CreatePanel, recuperaremos os valores de entrada do consultor especialista e os exibiremos nos rótulos. Vamos compilar o código e verificar o painel novamente. Os rótulos agora devem exibir os valores de entrada reais do consultor especialista. Repetiremos esse processo para todos os valores de entrada.
Depois de concluir essas etapas, o painel gráfico com rótulos e um botão estará pronto. Agora podemos continuar adicionando os valores para os rótulos restantes no painel. Faremos isso da mesma maneira que fizemos para o rótulo do número mágico. Vamos voltar ao nosso arquivo de inclusão e localizar a seção onde criamos os rótulos. Aqui, adicionaremos o código para exibir os valores de lotes, hora de início, duração e hora de fechamento.
Para o rótulo dos lotes, substituiremos o texto "número mágico" por "lotes" e atualizaremos a coordenada y para 70. Para o rótulo do horário de início, alteraremos o nome para "horário de início" e atualizaremos o y- coordenada para 90. Para o rótulo de duração, mudaremos o nome para "duração" e atualizaremos a coordenada y para 110. Por fim, para o rótulo de hora de fechamento, mudaremos o nome para "hora de fechamento" e atualizaremos o coordenada y para 130.
Depois de fazer essas alterações, podemos compilar o código.
Agora, se dermos uma olhada em nosso consultor especialista e o compilarmos, poderemos ver os valores reais dos lotes, hora de início, duração e hora de fechamento no painel. Em seguida, vamos implementar a funcionalidade do botão. Atualmente, quando clicamos no botão, ele não executa nenhuma ação. Vamos mudar isso. Em nosso arquivo de inclusão, localizaremos a seção onde criamos o botão. Aqui, podemos adicionar um manipulador de eventos para o clique do botão. Usaremos a função OnChartEvent para essa finalidade. Dentro do manipulador de eventos, podemos especificar a ação que queremos executar quando o botão for clicado.
Por enquanto, vamos exibir uma mensagem quando o botão for clicado. Podemos usar a função Print para enviar uma mensagem ao terminal. Depois de adicionar o manipulador de eventos, podemos compilar o código.
Agora, se executarmos o consultor especialista e clicarmos no botão, veremos a mensagem exibida no terminal.
É isso! Criamos com sucesso um painel gráfico em MQL5 com rótulos e um botão. Os rótulos exibem os valores de entrada do consultor especialista e o botão possui um manipulador de eventos de clique.
Sinta-se à vontade para adicionar mais funcionalidades ao botão ou personalizar o painel de acordo com suas necessidades. Lembre-se de compilar o arquivo de inclusão e o arquivo do consultor especialista para ver as alterações entrarem em vigor.
Dimensionamento dinâmico de posição em mql5 | programação MT5
Dimensionamento dinâmico de posição em mql5 | programação MT5
Olá, aqui é Toby. Hoje, mostrarei como calcular o tamanho do lote dinâmico em MQL5 para que você possa obter resultados como o mostrado aqui. Você pode experimentá-lo por si mesmo.
Tudo bem, vamos começar. Neste vídeo, adicionaremos um cálculo de tamanho de lote dinâmico a uma estratégia que atualmente usa um tamanho de lote fixo. Isso nos permitirá arriscar um valor específico por negociação, como $ 100 ou uma porcentagem do saldo da conta. Além disso, realizaremos um backtest para determinar se a estratégia pode ser melhorada com o cálculo dinâmico do tamanho do lote. Também o guiarei pela estratégia e suas configurações.
Para começar, vamos mudar para o MetaEditor e começar a codificar. Aqui estamos no MetaEditor e, para esta demonstração, usarei o 'Time Range EA' para incorporar o cálculo dinâmico do tamanho do lote. No entanto, você pode usar qualquer outro consultor especialista de sua escolha. Anteriormente, codificamos este EA em uma série em nosso canal. Se você quiser usar o mesmo consultor especialista, fornecerei um link para a primeira parte.
Primeiro, vamos abrir o arquivo 'Time Range EA'. Agora, vamos salvá-lo com um novo nome. Clique em 'Salvar como' e nomeie como 'Lotes dinâmicos EA de intervalo de tempo'. Ótimo, o arquivo foi salvo.
Este consultor especialista é onde adicionaremos o cálculo dinâmico do tamanho do lote. Vamos compilar o arquivo e examinar as entradas no testador de estratégia. Abra o testador de estratégia na plataforma MetaTrader 5 e, se necessário, atualize os consultores especializados. Agora, selecione 'Time Range EA Dynamic Lots'. Na guia Entradas, você notará a entrada 'Tamanho do Lote', que atualmente aceita um valor fixo. Precisamos modificar isso para que possamos inserir valores para arriscar $ 100 por negociação ou uma porcentagem do saldo da conta.
Voltando ao MetaEditor, adicionaremos uma entrada dinâmica de tamanho de lote na seção 'entrada'. Crie algum espaço após o 'Magic Number' e defina uma enumeração (enum) chamada 'Lot Mode Enum.' Essa enumeração terá três opções: 'Fixed', 'Money' e 'Percent of Account'. Isso nos permitirá escolher facilmente o modo de lote desejado. Forneça comentários para cada opção para melhorar a legibilidade.
Em seguida, usaremos essa enumeração como uma entrada. Defina uma 'entrada' com o tipo como nosso 'Modo de Lote Enum' e nomeie-a como 'Modo de Lote de Entrada', por exemplo. Defina o valor padrão como 'Lot Mode Fixed' e adicione um comentário para descrever a finalidade dessa entrada.
Compile o código e verifique como ele aparece no testador de estratégia. Você notará o menu suspenso 'Modo de lote', que permite selecionar entre 'Fixo', 'Lote baseado em dinheiro' e 'Lote baseado em porcentagem da conta'.
Agora, vamos modificar a entrada 'Tamanho do Lote' para acomodar diferentes valores, dependendo do modo de lote selecionado. Altere o tipo de entrada para 'duplo' e modifique o comentário para refletir as opções: 'Lote/Dinheiro/Porcentagem'. Compile o código novamente e verifique o testador de estratégia para garantir que as alterações sejam refletidas.
Para validar a entrada do usuário, modificaremos a função 'CheckInput'. Adicione verificações para cada opção de modo de lote para garantir que a entrada esteja dentro do intervalo aceitável. Para o modo de lote 'Fixed', o tamanho do lote deve estar acima de zero e não exceder um certo limite (por exemplo, 10 lotes). Exiba uma mensagem de erro apropriada se essas condições não forem atendidas. Repita este processo para os modos de lote 'Money' e 'Percent of Account', ajustando os limites de acordo. Além disso, se um desses dois modos de lote for selecionado, precisaremos verificar se o stop loss está ativo.
Um resumo conciso das etapas envolvidas na implementação do cálculo dinâmico do tamanho do lote em MQL5:
Seguindo essas etapas, você pode garantir que o tamanho do seu lote seja calculado dinamicamente com base no risco desejado por negociação e nas restrições de sua estratégia de negociação.
Trailing stop loss em mql5 | programação MT5
Trailing stop loss em mql5 | programação MT5
Hoje, vou guiá-lo passo a passo sobre como adicionar um stop loss de treinamento a qualquer consultor especialista em MQL5. No final deste vídeo, também faremos um backtest para avaliar se nossa estratégia pode ser aprimorada com um stop loss de negociação. Então vamos começar.
Antes de começarmos a codificar, vamos entender o conceito básico de stop loss. Imagine que entramos em uma posição a um preço específico. Inicialmente, nosso stop loss é definido em um determinado nível. À medida que o preço se move a nosso favor, seguimos o stop loss atrás do preço, sempre mantendo a mesma distância. Se o preço retroceder, o stop loss permanece em vigor. À medida que o preço continua se movendo em nossa direção, continuamos arrastando nosso stop loss. Eventualmente, o preço pode reverter, fazendo com que nossa posição seja interrompida. A ideia principal é lucrar com as tendências significativas do mercado e sair da posição quando a tendência terminar.
Agora, vamos mudar para o MetaEditor para começar a codificar. Você pode usar qualquer consultor especialista para essa finalidade, mas, para este vídeo, usaremos o "Timeline GA" com tamanho de lote dinâmico, que codificamos no vídeo anterior. Abra o arquivo e salve-o como um novo consultor especialista chamado "Stop Loss". Compile o código para garantir que tudo esteja livre de erros.
Para adicionar um stop loss ao nosso consultor especialista, precisamos seguir algumas etapas. Primeiro, vamos adicionar uma entrada adicional para o trailing stop loss. Na seção de entrada, adicione uma variável de entrada booleana chamada "EnableTrailingStopLoss" e defina seu valor padrão como "falso". Esta entrada nos permitirá ativar ou desativar o stop loss de negociação. Compile o código para incorporar as alterações.
Agora, volte para a plataforma MetaTrader e abra o Testador de Estratégia. Selecione nosso consultor especialista "Lotes Dinâmicos com Trailing Stop Loss". Na guia de entrada, você encontrará a entrada recém-adicionada "EnableTrailingStopLoss". Alterne de "falso" para "verdadeiro" para ativar o stop loss de negociação.
Em seguida, vamos escrever a função que atualizará nosso stop loss. Colocaremos esta função antes da função "ClosePosition". Dentro da função, primeiro verifique se habilitamos o stop loss de negociação e se existe um stop loss para a posição. Caso contrário, não há necessidade de prosseguir, portanto, retorne da função.
Agora, vamos percorrer todas as posições abertas. Para cada posição, verificaremos se ela pertence ao nosso consultor especialista. Recupere o tipo de posição (compra ou venda), o stop loss atual e os valores de take profit. Calcule o novo stop loss com base no preço atual e no intervalo do símbolo, multiplicado pela porcentagem de stop loss definida pelo usuário. Ajuste o stop loss com base no tipo de posição.
Antes de modificar a posição com o novo stop loss, precisamos realizar algumas verificações. Primeiro, certifique-se de que o novo stop loss seja diferente do stop loss atual para evitar erros. Além disso, alguns corretores impõem um nível de stop, impedindo que o stop loss se aproxime muito do preço atual. Verifique se o novo stop loss está de acordo com o nível de stop e, caso contrário, continue na próxima posição.
Por fim, modifique a posição com o novo stop loss e o valor atual de take profit. Se a modificação falhar, imprima uma mensagem de erro indicando o problema encontrado. Retorne da função para evitar o processamento de outras posições.
Compile o código para garantir que não haja erros ou avisos. Agora, a função de stop loss de atualização está concluída.
Para integrar esta função em nosso consultor especialista, precisamos chamá-la dentro da função "OnTick". Faça a chamada de função após verificar se há quebras. Isso garante que o stop loss seja atualizado para cada tick recebido.
Compile o código uma última vez para confirmar as alterações. Agora, nosso consultor especialista tem a capacidade de rastrear o stop loss com base nos parâmetros definidos pelo usuário. Adicionamos a variável de entrada para ativar ou desativar o recurso de trailing stop loss e implementamos a função para atualizar o stop loss para posições abertas.
Agora, vamos proceder ao backtest de nosso consultor especialista para avaliar a eficácia do stop loss de negociação. Na plataforma MetaTrader, abra o testador de estratégia e selecione nosso consultor especialista "Stop Loss" para teste. Escolha o símbolo desejado e o período de tempo para o teste.
Na guia Entradas, você encontrará vários parâmetros para configurar, incluindo a porcentagem de trailing stop loss e o tamanho do lote. Ajuste esses parâmetros de acordo com suas preferências e estratégia de negociação.
Clique no botão Iniciar para iniciar o backtest. O consultor especialista executará negociações com base nos parâmetros especificados e o stop loss será ajustado dinamicamente à medida que o preço se mover a nosso favor.
Após a conclusão do backtest, você pode revisar os resultados nas guias Resultados e Gráfico. Preste atenção aos lucros e perdas, rebaixamento e outras métricas de desempenho para avaliar o impacto do trailing stop loss na estratégia.
Se os resultados do backtest forem satisfatórios, você pode considerar o uso do consultor especialista com o stop loss em sua conta de negociação real. No entanto, é crucial avaliar minuciosamente o desempenho da estratégia e realizar mais testes ou otimização antes de tomar qualquer decisão de negociação.
Em conclusão, adicionamos com sucesso um stop loss de negociação ao nosso consultor especialista usando MQL5. Seguindo o stop loss atrás do preço, pretendemos maximizar os lucros durante as tendências favoráveis do mercado e minimizar as perdas quando a tendência se inverter. Lembre-se de testar minuciosamente quaisquer modificações ou estratégias antes de aplicá-las a contas de negociação reais.
Observe que este é um guia geral e é essencial ter um bom entendimento dos princípios de programação e negociação antes de implementar essas alterações. Sempre tenha cuidado e considere consultar um consultor financeiro profissional, se necessário.
Codifique um RSI EA simples em mql5 | Programação MT5
Codifique um RSI EA simples em mql5 | Programação MT5
Neste tutorial, Toby se apresenta e explica o objetivo do tutorial, que é demonstrar como codificar um Expert Advisor (EA) simples usando o MetaEditor. O EA usará o indicador RSI para gerar sinais de compra e venda com base nas condições de sobrevenda e sobrecompra. Toby também menciona que um stop loss, take profit e uma opção para sair das negociações em um sinal reverso serão incluídos no EA.
Toby começa criando um novo arquivo EA no MetaEditor e limpa o código existente. Ele então define os parâmetros de entrada para o EA, como o número mágico, tamanho do lote, período do RSI, nível do RSI, stop loss, take profit e a opção de fechar negociações em um sinal reverso. Ele atribui valores padrão a esses parâmetros de entrada e adiciona comentários para descrever cada um.
Depois de definir os parâmetros de entrada, Toby passa a criar a seção de variáveis globais. Ele declara variáveis para o identificador do indicador RSI, um buffer para armazenar valores RSI, uma variável do tipo tick para armazenar o tick atual, um objeto de negociação para abrir e fechar posições e duas variáveis de data e hora para garantir que apenas uma negociação seja aberta por barra. Ele também inclui a diretiva #include necessária para acessar a classe CTrade.
Em seguida, Toby implementa a validação do parâmetro de entrada na função OnInit(). Ele verifica se cada parâmetro de entrada atende aos critérios especificados e exibe uma mensagem de erro se alguma entrada for inválida. Ele usa a função Alert() para imprimir as mensagens de erro e retorna da função OnInit() se um erro for encontrado.
Além da validação de entrada, Toby define o número mágico para o objeto de negociação e cria o identificador do indicador RSI. Ele verifica se a criação do identificador foi bem-sucedida e exibe uma mensagem de erro se falhar. Ele também define a série para o buffer do RSI para simplificar o trabalho com os valores.
Na função OnDeinit(), Toby libera o indicador RSI usando a função IndicatorRelease() para liberar recursos.
Passando para a função OnTick(), Toby começa obtendo o tick atual usando a função SymbolInfoTick(). Ele verifica se a recuperação do tick foi bem-sucedida e exibe uma mensagem de erro se falhar. Ele atribui os preços de compra e venda do tick atual à variável global currentTick para uso futuro.
Em seguida, Toby recupera os valores do indicador RSI usando a função CopyBuffer(). Ele atribui os valores a uma variável chamada rsiValues e verifica se a recuperação foi bem-sucedida. Ele armazena os dois valores de RSI no buffer para análise posterior.
Com os dados necessários recuperados, Toby agora pode implementar a lógica de negociação na função OnTick(). No entanto, o código fornecido no texto está cortado e faltam os detalhes restantes.
O tutorial cobre a configuração inicial do EA, incluindo definição de parâmetro de entrada, validação de entrada, declaração de variável global, manipulação de indicador RSI e recuperação de tick atual. O tutorial define a base para implementar a lógica de negociação nas etapas subsequentes.
Incrível bot de negociação RSI em mql5! | programação MT5
Incrível bot de negociação RSI em mql5! | programação MT5
Ei, aqui é o Toby, e hoje vou mostrar como codificar uma estratégia com uma taxa de vitória de 100%. Neste tutorial, modificaremos um Expert Advisor (EA) existente e adicionaremos um filtro ao indicador RSI. Vou guiá-lo através do processo de codificação passo a passo. Vamos começar!
Passo 1: Definindo a Estratégia Estaremos trabalhando no MetaEditor. Abra o EA que criamos no vídeo anterior. Se você ainda não assistiu, vou deixar o link para você acompanhar. Salve o arquivo com um novo nome, como "RSI_MA_Filter_EA".
Etapa 2: Modificando as entradas Para implementar o filtro, precisamos adicionar uma entrada de período de média móvel. Também incluiremos uma entrada para o período de tempo no qual a média móvel é executada. Manteremos o stop loss, take profit e entradas de sinal oposto como estão.
Etapa 3: Ajustando as variáveis globais Na seção de variáveis globais, precisamos renomear o identificador e o buffer do indicador RSI para diferenciá-los da média móvel. Adicionaremos um identificador e um buffer para a média móvel. Além disso, podemos remover variáveis desnecessárias relacionadas à compra e venda em tempo aberto.
Etapa 4: Fazendo alterações na função onInit Na função onInit, adicionaremos uma verificação para a entrada do período de média móvel. Também modificaremos o identificador do RSI para usar o preço de abertura em vez do preço de fechamento. Em seguida, criaremos o identificador e o buffer para o indicador de média móvel.
Etapa 5: Atualizando a função Untick Dentro da função untick, primeiro verificaremos se o tick atual é um novo tick de barra aberta. Caso contrário, retornaremos e aguardaremos o próximo tick de abertura da barra. Adicionaremos uma função personalizada para realizar essa verificação. Em seguida, recuperaremos os valores da média móvel e os armazenaremos no buffer. Também ajustaremos as condições de abertura de posições de compra e venda para incluir o filtro de média móvel.
Etapa 6: Compilando e testando Após fazer todas as alterações necessárias, vamos compilar o código para verificar se há algum erro. Se tudo for compilado com sucesso, podemos prosseguir para testar o EA no testador de estratégia. Faremos um teste visual usando dados históricos de 2012 até o presente, selecionando entradas apropriadas para RSI e períodos de média móvel, stop loss, take profit e a opção de fechar negociações em um sinal oposto.
Seguindo este tutorial, você aprendeu como codificar uma estratégia com uma taxa de vitória de 100%. Modificamos um EA existente e adicionamos um filtro de média móvel ao indicador RSI. Lembre-se de salvar seu arquivo e compilá-lo sem erros. Agora você pode testar a estratégia na plataforma MetaTrader 5 usando o testador de estratégia. Boa sorte com seus futuros esforços de codificação!
Donchian canal personalizado Indicador EA | programação MT5
Donchian canal personalizado Indicador EA | programação MT5
Ei, aqui é o Toby. Hoje, mostrarei como codificar um indicador personalizado em MQL5. Estaremos criando um indicador Donchian Channel e depois o usaremos para desenvolver um Expert Advisor (EA) lucrativo. Assim que o EA estiver pronto, faremos alguns backtests para avaliar seu desempenho. Como você pode ver pelos resultados, a estratégia funciona notavelmente bem. Vamos começar!
Agora, vamos analisar os resultados no Testador de Estratégia. O Donchian Channel Expert Advisor mostra resultados promissores. Então, nosso primeiro passo é definir a estratégia. Vamos codificar um indicador de Canal Donchian personalizado e usá-lo para criar o Expert Advisor. Vamos delinear a ideia básica da estratégia no gráfico.
As linhas azuis representam o indicador Donchian Channel que codificaremos neste vídeo. O Canal Donchian exibe o máximo mais alto e o mais baixo das n-barras anteriores. Muitos traders usam o Canal Donchian para desenvolver estratégias de fuga, onde entram em uma negociação de compra quando o preço cruza acima da banda superior. No entanto, para este EA, exploraremos a abordagem oposta. Faremos uma negociação de venda sempre que o preço ultrapassar a banda superior do Canal Donchian. Da mesma forma, assumiremos uma posição de compra quando o preço cruzar abaixo da banda inferior do Canal Donchian. Também definiremos um stop-loss com base em pontos ou uma porcentagem do canal. Além disso, podemos adicionar um filtro ao Donchian Channel EA para considerar o tamanho do canal.
Agora, vamos pular para o Meta Editor para começar a codificar nosso indicador Donchian Channel personalizado.
No Meta Editor, vamos começar criando um novo arquivo de indicador personalizado. Vamos limpar um pouco o código removendo comentários desnecessários e alinhando os colchetes. A seguir, definiremos as propriedades do indicador. Vamos especificar que ele deve ser exibido na janela principal do gráfico em vez de uma janela separada. Também declararemos o número de buffers e gráficos que nosso indicador terá, que neste caso são dois.
Seguindo em frente, definiremos as entradas para nosso indicador personalizado. Essas entradas permitem que os usuários personalizem o indicador ao aplicá-lo a um gráfico. Criaremos entradas para o período do Canal Donchian, o deslocamento do canal (como uma porcentagem) e a cor do canal.
Após a compilação do código, passaremos para a seção Variáveis globais, onde definiremos as variáveis necessárias para o indicador. Criaremos buffers para os valores superiores e inferiores do Canal Donchian e variáveis adicionais para armazenar os valores superiores e inferiores, bem como o índice da primeira barra.
Na função OnInit, vamos inicializar nossos buffers e definir o nome abreviado do indicador, que será usado para identificar o indicador no gráfico.
Finalmente, na função OnCalculate, realizaremos o cálculo para o indicador Donchian Channel. Verificaremos se há barras suficientes no gráfico para prosseguir. Caso contrário, retornaremos zero. Caso contrário, calcularemos os valores superior e inferior de cada barra usando os preços de abertura. Armazenaremos esses valores nos buffers correspondentes.
Assim que o código for compilado sem erros ou avisos, podemos testar nosso indicador personalizado. Abra um gráfico, navegue até o Navegador e encontre o indicador Meu Canal Donchian. Arraste e solte-o no gráfico. Nas configurações do indicador, especifique o período, deslocamento e cor desejados.
Impressionante bot de negociação Donchian Channel em mql5! | programação MT5
Impressionante bot de negociação Donchian Channel em mql5! | programação MT5
Depois de adicionar o indicador personalizado ao gráfico, você verá o Canal Donchian exibido como linhas azuis. O indicador Donchian Channel mostra o máximo mais alto e o mais baixo das barras 'n' anteriores. É comumente usado para criar estratégias de fuga, onde os comerciantes entram em negociações de compra quando o preço cruza acima da banda superior do Canal Donchian e vendem negociações quando cruza abaixo da banda inferior.
No entanto, para este EA (Expert Advisor), queremos testar a abordagem oposta. Em vez de comprar quando o preço ultrapassar a faixa superior, venderemos e vice-versa. Assim, sempre que o preço cruzar acima da banda superior do Canal Donchian, assumiremos uma posição de venda, e quando cruzar abaixo da banda inferior, assumiremos uma posição de compra.
Além disso, definiremos um stop loss para cada negociação, seja em pontos ou em porcentagem do canal. Também podemos considerar adicionar um filtro ao Donchian Channel EA com base no tamanho do canal. Agora, vamos pular para o MetaEditor para começar a codificar nosso indicador Donchian Channel personalizado.
No MetaEditor, crie um novo arquivo de indicador personalizado clicando em "Novo" no canto superior esquerdo, selecionando "Indicador personalizado" e clicando em "Avançar". Nomeie o arquivo "MyDonchianChannel" e clique em "Next" e "Finish" para concluir o processo. Depois que o arquivo for criado, limpe o código removendo comentários desnecessários e alinhando os colchetes. Em seguida, compile o código para verificar se há erros ou avisos.
Agora, vamos definir as propriedades do nosso indicador personalizado. Queremos que seja exibido na janela principal do gráfico, então defina a propriedade "indicator_chart_window" como true. Também precisamos definir o número de buffers e gráficos para o nosso indicador. Como temos duas linhas (superior e inferior), defina "indicator_buffers" como 2 e "indicator_plots" como 2.
Em seguida, definiremos os parâmetros de entrada para nosso indicador personalizado. Precisamos de entradas para o período do Canal Donchian, a porcentagem de deslocamento e a cor das linhas indicadoras. Defina essas entradas usando os tipos apropriados (inteiro para período e deslocamento e cor para cor) e defina valores padrão e comentários para cada entrada.
Compile o código novamente para garantir que não haja erros ou avisos.
Agora, vamos codificar a função "onCalculate" do indicador personalizado. Primeiro, verifique se o número de barras no gráfico é menor que o período de entrada mais um. Se assim for, não há barras suficientes para calcular o indicador, então retorne com zero. Em seguida, defina a variável "first", que representa a primeira barra para a qual queremos começar a calcular o Canal Donchian. Se o cálculo anterior não foi feito (previous_calculated é zero), defina "first" para o período de entrada. Caso contrário, defina-o como previous_calculated menos um. Agora, precisamos percorrer as barras usando um loop for. Inicie o loop na "primeira" barra e continue até que a barra atual seja menor que o número total de barras no gráfico. Aumente o contador de barras no final de cada iteração do loop.
Dentro do loop, calcule os valores superior e inferior do Canal Donchian usando os preços de abertura de cada barra. Armazene esses valores nas variáveis "superior" e "inferior", respectivamente.
Para calcular o deslocamento, subtraia o valor inferior do valor superior e multiplique-o pelo deslocamento de entrada dividido por 100. Isso nos dará o valor do deslocamento em pontos ou como uma porcentagem do canal. Por fim, armazene os valores calculados nos buffers correspondentes usando o índice do buffer e o contador de barras. Depois de calcular e armazenar os valores nos buffers, precisamos definir os rótulos dos indicadores para cada gráfico. Esses rótulos serão exibidos na janela de propriedades do indicador.
Atribua os rótulos para os gráficos superiores e inferiores usando a função SetIndexLabel(), passando o índice do buffer e o rótulo como parâmetros. Em seguida, definiremos as cores para as linhas do indicador usando as funções SetIndexStyle() e SetIndexColor(). Especifique o índice do buffer, o estilo da linha (por exemplo, STYLE_SOLID) e a cor desejada para cada linha.
Por fim, adicionaremos algum código adicional para tornar o indicador visualmente mais atraente. Podemos ocultar o nome do indicador definindo a propriedade indicator_shortname como uma string vazia. Além disso, podemos adicionar um rótulo de gráfico com o valor atual da banda superior usando as funções ObjectCreate() e ObjectSetText().
Compile o código novamente para garantir que não haja erros ou avisos.
Parabéns! Você codificou com sucesso o indicador personalizado do Canal Donchian. Agora, você pode usar este indicador em seu Expert Advisor para implementar sua estratégia de negociação.
Na próxima etapa, passaremos a codificar o Expert Advisor (EA) que utilizará o indicador Donchian Channel para executar negociações com base na estratégia de breakout. Abra um novo arquivo no MetaEditor, nomeie-o "DonchianChannelEA" e selecione a opção "Expert Advisor". Clique em "Avançar" e "Concluir" para criar o arquivo. Limpe o código inicial removendo comentários desnecessários e alinhando os colchetes.
Primeiro, definiremos os parâmetros de entrada para nosso EA. Isso incluirá o tamanho do lote, stop loss, take profit e o período e compensação para o Canal Donchian. Defina essas entradas usando os tipos apropriados e defina valores padrão e comentários para cada entrada. A seguir, codificaremos a função OnInit(). Dentro desta função, vamos inicializar o indicador Donchian Channel chamando a função iCustom() com os parâmetros necessários.
Crie variáveis para armazenar o identificador do indicador, os valores da banda superior e os valores da banda inferior. Use a função ArraySetAsSeries() para definir as matrizes como séries para garantir a indexação correta. Agora, vamos codificar a função principal OnTick(), que irá lidar com a lógica de negociação.
Comece verificando se há barras suficientes para calcular o Canal Donchian. Se não, retorne com zero. Obtenha os valores atuais das bandas superior e inferior do indicador usando a função CopyBuffer(). Agora, vamos verificar se há um sinal de compra. Se o preço ultrapassar a banda superior, abra uma posição de venda usando a função OrderSend(). Defina o tipo de pedido apropriado (OP_SELL), tamanho do lote, stop loss e níveis de lucro. Lembre-se de lidar com possíveis erros retornados pela função OrderSend().
Da mesma forma, verifique se há um sinal de venda. Se o preço cruzar abaixo da banda inferior, abra uma posição de compra usando a função OrderSend(). Defina o tipo de ordem apropriado (OP_BUY), tamanho do lote, stop loss e níveis de lucro.
Compile o código para garantir que não haja erros ou avisos.
É isso! Você concluiu a codificação do Consultor Especialista do Canal Donchian. Agora você pode testar o EA em uma conta de demonstração ou fazer um backtest usando dados históricos para avaliar seu desempenho. Lembre-se de testar exaustivamente seu EA e considerar a implementação de técnicas de gerenciamento de risco antes de usá-lo em uma conta de negociação real. Observe que o código fornecido é uma implementação básica e pode exigir modificações ou aprimoramentos adicionais para atender aos seus requisitos comerciais específicos.