Negociação Sistemática

iCHO Trend CCIDualOnMA: A Estratégia Eficiente para MetaTrader 5
MetaTrader5
iCHO Trend CCIDualOnMA: A Estratégia Eficiente para MetaTrader 5

Estrategia de TradingO Expert Advisor utiliza dois indicadores: o iCHO (Oscilador de Chaikin, CHO) e o CCIDualOnMA, personalizado. O CHO é usado como um indicador de tendência e, quando cruza a linha zero, serve para fechar posições. Já o indicador 'CCIDualOnMA' atua como um filtro para adicionar novas posições. Ambos os indicadores são configurados no 'Timeframe de Trabalho' especificado - esse mesmo timeframe é utilizado para determinar o momento de abertura de uma nova barra (se necessário para os parâmetros 'Trailing on ...' e 'Search signals on ...').Sinais de Trading:Fechamento de posições quando o indicador CHO cruza a linha zero :CruzamentoPosições: ReverterModo de TradingCruzamento de baixo para cima'falso' -> fechar todas as posições de VENDA('Apenas posições de COMPRA permitidas' OU 'Posições de COMPRA e VENDA permitidas') -> abrir posição de COMPRA'verdadeiro' -> fechar todas as posições de COMPRA('Apenas posições de VENDA permitidas' OU 'Posições de COMPRA e VENDA permitidas') -> abrir posição de VENDACruzamento de cima para baixo'falso' -> fechar todas as posições de COMPRA('Apenas posições de VENDA permitidas' OU 'Posições de COMPRA e VENDA permitidas') -> abrir posição de VENDA'verdadeiro' -> fechar todas as posições de VENDA('Apenas posições de COMPRA permitidas' OU 'Posições de COMPRA e VENDA permitidas') -> abrir posição de COMPRASinais Normais (adicionando uma posição)O indicador CHO está acima de zero e o CCI rápido cruza o CCI lento de baixo para cima, enquanto o rápido está abaixo de zero - um sinal para abrir uma posição de COMPRA.O indicador CHO está abaixo de zero e o CCI rápido cruza o CCI lento de cima para baixo, enquanto o rápido está acima de zero - sinal para abrir uma posição de VENDA.Fig. 1. iCHO Trend CCIDualOnMA FilterCaracterísticas:O Expert Advisor pode ser otimizado pelo timeframe de trabalho ('Timeframe de Trabalho')Pode haver apenas uma operação de 'entrada no mercado' por barra (esse é um parâmetro interno, não incluído nos parâmetros de entrada e não tem relação com o parâmetro 'Apenas uma posição').Ao trabalhar no modo 'inside bar' (quando o parâmetro 'Search signals on ...' é 'barra#0 (a cada tick)'), a barra atual é a barra #0, enquanto que no modo 'apenas quando uma nova barra é criada' (quando o parâmetro 'Search signals on ...' é 'barra #1 (em uma nova barra)), a barra atual é a barra #1.O parâmetro 'Modo de Trading: ' - restrição sobre qual lado operar. Pode assumir os valores 'Apenas posições de COMPRA permitidas', 'Apenas posições de VENDA permitidas' e 'Posições de COMPRA e VENDA permitidas'.O parâmetro 'Usar controle de tempo' define o intervalo de tempo para buscar sinais de trading entre 'Hora de Início'::'Minuto de Início' até 'Hora de Fim'::'Minuto de Fim'. O intervalo de tempo pode ser configurado tanto dentro de um dia quanto atravessando dias.Agora vamos explorar mais sobre cada grupo de parâmetros:Configurações de Trading:'Timeframe de Trabalho' - timeframe de trabalho. O timeframe no qual os indicadores são criados e onde uma nova barra é buscada.Stop Loss, Take Profit e Trailing são definidos em Pontos. Qualquer um dos parâmetros ('Stop Loss', 'Take Profit', 'Trailing Stop') pode ser desativado - para isso, defina o parâmetro escolhido como '0.0'.Como o trailing funciona é mostrado nas imagens do código TrailingStop.Gestão de Tamanho de Posição (cálculo de lotes)O lote pode ser constante ('Gestão de Dinheiro' configurado para 'Lote Constante' e tamanho do lote definido em 'O valor para

2025.04.04
MA Trend 2: Sistema de Trading para MetaTrader 5
MetaTrader5
MA Trend 2: Sistema de Trading para MetaTrader 5

A primeira versão do MA Trend foi desenvolvida com um novo parâmetro de restrição de Tipo de Trading: Somente COMPRA - permite abrir apenas posições de compra.Somente VENDA - permite abrir apenas posições de venda.COMPRA e VENDA - permite abrir tanto posições de compra quanto de venda.O Sistema de Trading funciona de acordo com o indicador iMA (Média Móvel, MA) e possui várias configurações:Apenas uma posição - somente uma posição pode estar aberta no mercado.Reverter - inverte os sinais de trading.Fechar oposta - força o fechamento de posições opostas ao receber um novo sinal de trading.Formação de sinais de trading quando todos os parâmetros estão configurados como padrão:O preço ASK atual é maior que o valor do indicador na barra #1 -> sinal para abrir posição de COMPRA.O preço BID atual é menor que o valor do indicador na barra #1 -> sinal para abrir posição de VENDA.E como fica isso no código MQL5:      if(m_symbol.Ask()>ma[1])          m_need_open_buy=true;       else if(m_symbol.Bid()<ma[1])          m_need_open_sell=true;Exemplo de operação quando o parâmetro Apenas uma posição está configurado como falso e verdadeiro:No exemplo a seguir, com Apenas uma posição - verdadeiro, Reverter - falso e Fechar oposta - verdadeiro: uma posição de COMPRA foi aberta. Após algum tempo, um sinal para abrir uma posição de VENDA foi recebido. Como Fechar oposta está ativado, a posição de COMPRA foi fechada primeiro (pois é oposta ao novo sinal) e, em seguida, a posição de VENDA foi aberta.

2025.04.04
Como Detectar o Início de uma Nova Barra no MetaTrader 5
MetaTrader5
Como Detectar o Início de uma Nova Barra no MetaTrader 5

Quando você está trabalhando com um Robô de Investimento, ou System Trading, no MetaTrader, a cada nova cotação recebida (ou "tick"), a função padrão de tratamento de eventos OnTick() é acionada automaticamente. Porém, não existe uma função padrão para detectar quando uma nova barra (ou candle) começa. Para identificar esse momento, você precisa monitorar o horário de abertura da barra mais recente. Sempre que essa informação mudar, isso indica o início de uma nova barra, permitindo que você reaja à situação e trate o evento. O exemplo de código a seguir, compatível com MQL4 e MQL5, mostra uma das maneiras de como isso pode ser feito: // Tratador de eventos padrão de tick    void OnTick()    {       // Verifica se há uma nova barra (compatível com MQL4 e MQL5).          static datetime dtBarraCorrente   = WRONG_VALUE;                 datetime dtBarraPrecedente = dtBarraCorrente;                          dtBarraCorrente   = iTime( _Symbol, _Period, 0 );                 bool     bEventoBarraNova  = ( dtBarraCorrente != dtBarraPrecedente );       // Reage ao evento de uma nova barra e lida com a situação.          if( bEventoBarraNova )          {             // Detecta se este é o primeiro tick recebido e trata a situação.                /* Por exemplo, quando é a primeira vez que é aplicado no gráfico e a barra está em algum lugar no meio de seu progresso e não é realmente o início de uma nova barra. */                if( dtBarraPrecedente == WRONG_VALUE )                {                   // Faça algo no primeiro tick ou no meio de uma barra ...                }                else                {                   // Faça algo quando uma barra normal aparece ...                };             // Faça algo independente da condição anterior ...          }          else          {             // Faça algo diferente ...          };       // Faça outras coisas ...    }; No código acima, a variável estática mantém o controle do horário de abertura da barra, mesmo ao retornar da função OnTick(). Ao contrário de uma variável local comum, ela memoriza seu conteúdo e não o libera ao sair da função. Isso é fundamental para detectar uma mudança no horário de abertura da barra atual. É importante ressaltar que, quando o Robô é colocado em um gráfico pela primeira vez, o código anterior reage como se a barra tivesse acabado de abrir. Essa condição requer um tratamento especial caso a situação precise ser abordada de forma diferente. Por fim, vale lembrar que o código fonte de todas as minhas publicações na CodeBase agora também está disponível pelo MetaEditor na seção "Projetos Públicos" sob o nome "FMIC".

2025.04.03
Análise de Candlestick com EA R1 para MetaTrader 5: Estratégia Eficiente para Traders
MetaTrader5
Análise de Candlestick com EA R1 para MetaTrader 5: Estratégia Eficiente para Traders

Se você está em busca de uma ferramenta poderosa para otimizar suas operações no MetaTrader 5, o EA R1 pode ser exatamente o que você precisa. Este Expert Advisor combina uma análise detalhada de padrões de candlestick em múltiplos períodos com um filtro de eventos fundamentais, garantindo uma gestão de risco disciplinada. Vamos explorar os principais recursos deste sistema de trading. Estratégia Principal Foco em Price Action: O EA R1 se baseia exclusivamente em padrões de candlestick, como pin bars, engulfing e hammers/shooting stars, analisando três períodos de tempo: M5, H1 e H4 para gerar sinais de negociação. Confluência Multi-TF: O sistema exige um alinhamento entre os sinais de 5 minutos e a estrutura de tendência em períodos mais altos (H1/H4). Gestão de Risco Razão Risco-Retorno de 1.5:1: O EA calcula automaticamente o take-profit a uma distância de 1.5 vezes o stop-loss. Proteções de Margem: O uso de margem é limitado a menos de 30% por padrão e o tamanho da posição é ajustado automaticamente. Stops Dinâmicos: Utiliza escalonamento de volatilidade com base no ATR ou distâncias fixas em pips para o posicionamento do stop-loss. Filtro de Notícias Desligamento Pré-Evento: O sistema fecha todas as posições duas horas antes de eventos de notícias de alto impacto, como PIB, NFP e CPI. Evitação de Volatilidade: Impede novas operações durante períodos de alto risco programados. Desenho Operacional Execução em 5 Minutos: O EA dispara operações no gráfico de M5, sempre respeitando o contexto dos períodos H1 e H4. Limites de Sessão: Realiza negociações apenas durante as horas de maior liquidez (das 8h às 17h, horário do servidor). Pontos Fortes Elimina o atraso de indicadores por meio de uma análise pura de price action. Controle rigoroso de risco com uma razão fixa de RR e limites de margem. Adaptável tanto a mercados em tendência quanto a mercados laterais. Ideal Para: Negociações em pares como EURUSD e outros majors líquidos durante sessões ativas. Traders que buscam uma execução sistemática com proteção contra riscos de eventos. Este EA equilibra o reconhecimento técnico de padrões com a conscientização macroeconômica, priorizando a preservação do capital enquanto busca cenários de recompensa consistentes de 1.5:1.

2025.03.31
Como Rastrear Saques no MetaTrader 4: Dicas para Traders
MetaTrader4
Como Rastrear Saques no MetaTrader 4: Dicas para Traders

Se você é um trader que utiliza o MetaTrader 4, já deve ter percebido que a gestão dos saques da sua conta pode ser um verdadeiro desafio. Pensando nisso, trago uma solução que pode te ajudar a monitorar os saques de forma eficaz usando um código que pode ser adicionado ao seu robô de negociação. Esse código foi desenvolvido para integrar-se ao seu Expert Advisor (EA) e rastrear os saques da conta onde ele está operando. A grande vantagem é que você poderá acompanhar de perto as movimentações financeiras, evitando surpresas desagradáveis. É comum que muitos traders utilizem servidores virtuais privados (VPS) para rodar seus EAs, garantindo que as configurações não sejam alteradas sempre que mudamos o gráfico ou o período. Um erro frequente que muitos cometem é deixar o tamanho do lote sempre aumentando, mesmo em situações de perda, na esperança de recuperar tudo antes de aumentar ainda mais os lotes. No entanto, isso pode ser arriscado. Os EAs são programados para aumentar o tamanho do lote quando há perdas, mas não conseguem fazer essa distinção entre um saque e uma perda. Ou seja, se ocorrer uma perda, o EA continuará utilizando o último tamanho de lote conhecido na tentativa de se recuperar. Já se for um saque, é crucial que o EA diminua o tamanho do lote para se adaptar ao novo saldo e operar de forma eficaz. Com o código que vou compartilhar, você terá a possibilidade de modificar o seu EA para que ele não apenas monitore os saques, mas também ajuste automaticamente o tamanho do lote em função do novo saldo. Isso é um passo importante para a gestão de risco e para garantir que suas operações sejam mais seguras e eficazes.

2025.03.31
RRS Tangled EA: O Robô de Trading Inovador para MetaTrader 4
MetaTrader4
RRS Tangled EA: O Robô de Trading Inovador para MetaTrader 4

O RRS Tangled EA é uma versão aprimorada e otimizada do RRS Chaotic EA e do RRS Randomness in Nature EA. Este robô de trading utiliza uma abordagem única, escolhendo aleatoriamente os pares de moedas, tamanhos de lote e tipos de ordens. Ao contrário de muitos EAs que dependem de indicadores técnicos ou análises fundamentais, o RRS Tangled EA adota uma metodologia de Randomness in Nature para abrir operações. Com configurações adequadas, como Take Profit, Stop Loss, Trailing e Gestão de Risco, ele tem potencial para gerar lucros significativos. Este é um EA multi-moeda ou multi-ativo, o que significa que, mesmo que esteja vinculado a um gráfico de um único par de moedas, ele pode negociar outros pares e gerenciar todas as operações relacionadas às trades que foram abertas. Variável Valores Descrição minLot_Size Valor Duplo Tamanho mínimo do lote para garantir que a aleatoriedade do lote não fique abaixo desse valor. maxLot_Size Valor Duplo Tamanho máximo do lote para garantir que a aleatoriedade do lote não ultrapasse esse valor. StopLoss Valor Inteiro Defina o seu valor de stop loss em pontos/pips (a menor unidade de movimento de preço para o seu ativo). Defina o Stop Loss como 0 para desativá-lo. TakeProfit Valor Inteiro Defina o seu valor de take profit em pontos/pips. Defina o Take Profit como 0 para desativá-lo. Trailing_Start Valor Inteiro (Pontos/Pips) Especifique o número de pips a partir do preço da operação aberta em que o trailing deve começar. Defina Trailing Start como 0 para desativar essa operação. Trailing_Gap Valor Inteiro (Pontos/Pips) Defina a distância em pips entre o preço de mercado atual e o stop loss do trailing. Defina Trailing Gap como 0 para desativar essa operação. Risk_In_Money_Type FixedMoney, BalancePercentage FixedMoney: Fecha todas as operações abertas quando a flutuação negativa atinge o valor especificado. BalancePercentage: Calcula automaticamente com base no saldo da sua conta e fecha todas as operações uma vez que esse limite é atingido. Money_In_Risk Valor Inteiro Se Risk_In_Money_Type estiver definido como FixedMoney, insira o valor que você pode suportar perder. Se definido como BalancePercentage, o EA calculará automaticamente o risco com base no saldo da sua conta e fechará todas as operações quando esse limite for atingido. Max_Spread Valor Inteiro (Pontos/Pips) Define o spread máximo aceitável. Se o spread atual ultrapassar esse valor, o EA não fará uma operação e aguardará que o spread retorne dentro do limite especificado. Slippage Valor Inteiro (Pontos/Pips) Defina o deslizamento máximo permitido para a execução da ordem. MaxOpenTrade  Valor Inteiro Número máximo de operações abertas permitidas. Boa sorte e boas negociações!

2025.03.23
RRS Chaotic EA: O Robô de Trading Aleatório para MetaTrader 4
MetaTrader4
RRS Chaotic EA: O Robô de Trading Aleatório para MetaTrader 4

Se você está em busca de um robô de trading que foge do convencional, o RRS Chaotic EA pode ser a solução ideal. Esta versão simplificada do RRS Randomness in Nature EA é projetada para operar com aleatoriedade, abrindo negociações com pares de moedas, tamanhos de lotes e tipos de ordens totalmente imprevisíveis. O mais interessante é que esse EA não depende de habilidades técnicas, como indicadores, leitura de gráficos, eventos de notícias ou padrões de velas. Ele oferece várias estratégias de trading, planos de gerenciamento de risco e outras configurações personalizáveis que podem ser ajustadas conforme a sua necessidade. Apesar de operar com base na aleatoriedade, o RRS Chaotic EA consegue gerar lucros satisfatórios quando configurado corretamente. Variável Valores Descrição minLot_Size Valor Double Tamanho mínimo do lote para garantir que a aleatoriedade não fique abaixo deste valor. maxLot_Size Valor Double Tamanho máximo do lote para garantir que a aleatoriedade não exceda este valor. StopLoss Valor Int Defina o valor do seu stop loss em pontos/pips (a menor unidade de movimento de preço do seu ativo). Para desativar, defina Stop Loss como 0. TakeProfit Valor Int Defina o valor do seu take profit em pontos/pips. Para desativar, defina Take Profit como 0. Risk_In_Money_Type FixedMoney, BalancePercentage FixedMoney: Fecha todas as negociações abertas quando a perda flutuante atinge o valor especificado. BalancePercentage: Calcula automaticamente com base no saldo da conta e fecha todas as operações uma vez que esse limite é alcançado. Money_In_Risk Valor Int Se Risk_In_Money_Type estiver definido como FixedMoney, insira o montante que você está disposto a perder. Se definido como BalancePercentage, o EA calculará automaticamente o risco com base no saldo da sua conta e fechará todas as operações quando o limite for atingido. Max_Spread Valor Int (Pontos/Pips) Define o spread máximo aceitável. Se o spread atual ultrapassar esse valor, o EA não fará uma negociação e aguardará que o spread retorne dentro do limite especificado. Slippage Valor Int (Pontos/Pips) Defina o slippage máximo permitido para a execução das ordens.  MaxOpenTrade  Valor Int Número máximo de negociações abertas permitidas. Atenção: Se você está enfrentando problemas ou erros na operação do EA, remova #property strict do código do EA na linha 8. Boa sorte e boas negociações!

2025.03.19
RRS Randomness na Natureza: O EA que Inova no MetaTrader 4
MetaTrader4
RRS Randomness na Natureza: O EA que Inova no MetaTrader 4

Se você está em busca de uma abordagem diferente para o trading, o RRS Randomness na Natureza pode ser a solução. Este EA (consultor especialista) se destaca por sua aleatoriedade, selecionando de forma imprevisível pares de moedas, tamanhos de lotes e tipos de ordens. O legal é que ele não depende de nenhuma habilidade técnica específica, como indicadores, análise de preço, eventos de calendário econômico ou padrões de candlestick. Além disso, oferece diversas estratégias de trading, planos de gerenciamento de risco e outras configurações personalizáveis. Mesmo com essa abordagem baseada na aleatoriedade, o EA conseguiu gerar lucros interessantes. Configurações do RRS Randomness Variável Valores Descrição Estratégia de Trading OneSide, DoubleSide OneSide: O EA fará uma única operação, seja de Compra ou Venda. DoubleSide: O EA realizará uma operação de Compra e uma de Venda. minLot_Size Valor Duplo Tamanho mínimo do lote para garantir que a aleatoriedade do lote não fique abaixo deste valor. maxLot_Size Valor Duplo Tamanho máximo do lote para garantir que a aleatoriedade do lote não ultrapasse este valor. StopLoss Valor Inteiro Defina seu valor de stop loss em pontos/pips (a menor unidade de movimento de preço para seu ativo). Defina Stop Loss como 0 para desativá-lo. TakeProfit Valor Inteiro Defina seu valor de take profit em pontos/pips. Defina Take Profit como 0 para desativá-lo. Trailing_Start Valor Inteiro (Pontos/Pips) Especifique o número de pips a partir do preço de abertura da operação onde o trailing deve começar. Defina Trailing Start como 0 para desativar a operação de trailing. Trailing_Gap Valor Inteiro (Pontos/Pips) Defina a distância em pips entre o preço de mercado atual e o trailing stop loss. Defina Trailing Gap como 0 para desativar a operação de trailing. Risk_In_Money_Type FixedMoney, BalancePercentage FixedMoney: Fecha todas as operações abertas quando a flutuação negativa atinge o valor especificado. BalancePercentage: Calcula automaticamente com base no seu saldo de conta e fecha todas as operações assim que esse limite é alcançado. Money_In_Risk Valor Inteiro Se Risk_In_Money_Type estiver definido como FixedMoney, insira o valor que você pode se dar ao luxo de perder. Se definido como BalancePercentage, o EA calculará automaticamente o risco com base no seu saldo e fechará todas as operações quando esse limite for atingido. Max_Spread Valor Inteiro (Pontos/Pips) Define o spread máximo aceitável. Se o spread atual exceder esse valor, o EA não fará nenhuma operação e aguardará que o spread retorne ao limite especificado. Slippage Valor Inteiro (Pontos/Pips) Defina a slippage máxima permitida para a execução dos pedidos. Nota: Se você estiver enfrentando algum problema ou erro no funcionamento do EA, remova #property strict do código do EA na linha 8. Boa Sorte e Boas Operações!

2025.03.19
RRS EA Não Direcional: O Robô de Trading Versátil para MetaTrader 4
MetaTrader4
RRS EA Não Direcional: O Robô de Trading Versátil para MetaTrader 4

Se você está à procura de um robô de trading que não dependa de análises técnicas tradicionais, o RRS EA Não Direcional pode ser a solução ideal para você. Este EA (Expert Advisor) opera de maneira aleatória, sem se apoiar em indicadores, eventos de calendário econômico ou padrões de candlestick. O mais interessante é que ele oferece diversas estratégias de trading, planos de gerenciamento de risco e configurações personalizáveis. Apesar de seu funcionamento aleatório, com as configurações adequadas de gerenciamento de risco, este EA tem mostrado resultados positivos. Variável Valores Descrição Estratégia de Trading Hedge_Style, BuySell_Random, Buy_Sell, Auto_Swap, Buy_Order, Sell_Order Hedge_Style: Abre operações de compra e venda simultaneamente. BuySell_Random: Abre aleatoriamente uma operação de compra ou venda a cada vez. Buy_Sell: Abre uma operação com base no tipo da última ordem fechada. Se a última ordem foi uma compra, ele abrirá uma venda. Auto_Swap: Abre apenas operações de compra ou venda com base na direção do swap positivo, ignorando operações na direção do swap negativo. Buy_Order: Abre apenas operações de compra. Sell_Order: Abre apenas operações de venda. Nova_Operação Verdadeiro/Falso Verdadeiro: O EA pode realizar operações. Falso: O EA não realizará operações. Tamanho_Lote Valor Duplo Escolha o tamanho do lote desejado para cada operação executada pelo EA. Tipo_StopLoss Virtual_SL, Classic_SL Virtual SL: O EA fecha a operação quando o stop loss especificado é atingido, mas o nível de stop loss não é visível para o servidor do corretor (permanece em seu PC local). Classic SL: O EA coloca um stop loss visível que é refletido no servidor do corretor. Esse recurso é útil se seu corretor não suporta EAs muito ativos, tem um limite de modificações por dia, ou se você suspeita que seu corretor está caçando seu stop loss. StopLoss Valor Inteiro Defina o valor do seu stop loss em pontos/pips (a menor unidade de movimento de preço para seu ativo).Defina Stop Loss como 0 para desativá-lo. Tipo_TakeProfit Virtual_TP, Classic_TP Virtual TP: O nível de take profit não é visível para o servidor do corretor. Classic TP: O nível de take profit é visível para o servidor do corretor. TakeProfit Valor Inteiro Defina seu valor de take profit em pontos/pips. Defina Take Profit como 0 para desativá-lo. Tipo_Trailing Virtual_Trailing, Classic_Trailing Virtual Trailing: As modificações do stop loss são mantidas em seu PC local e não são refletidas no servidor do corretor. Classic Trailing: As modificações do stop loss são atualizadas diretamente no servidor do corretor. Esse recurso é útil se seu corretor não suporta EAs muito ativos, tem um limite de modificações por dia, ou se você suspeita que seu corretor está caçando seu stop loss. Trailing_Início Valor Inteiro (Pontos/Pips) Especifique o número de pips a partir do preço da operação aberta em que o trailing deve começar. Trailing_Gap Valor Inteiro (Pontos/Pips) Defina a distância em pips entre o preço de mercado atual e o stop loss trailing.Defina Trailing Gap como 0 para desativar a operação trailing. Tipo_Risco_Dinheiro FixedMoney, BalancePercentage Fixed Money: Fecha todas as operações abertas quando o saldo negativo flutuante atinge o valor especificado. Balance Percentage: Calcula automaticamente com base no seu saldo da conta e fecha todas as operações assim que esse limite é atingido. Dinheiro_No_Risco  Valor Inteiro Se Tipo_Risco_Dinheiro estiver definido como FixedMoney, insira o valor que você pode perder. Se estiver definido como BalancePercentage, o EA calculará automaticamente o risco com base no saldo da sua conta e fechará todas as operações quando esse limite for atingido. Spread_Máximo Valor Inteiro (Pontos/Pips) Define o spread máximo aceitável. Se o spread atual ultrapassar esse valor, o EA não realizará a operação e aguardará que o spread retorne ao limite especificado. Slippage Valor Inteiro (Pontos/Pips) Defina o slippage máximo permitido para a execução de ordens. Nota: Se você estiver enfrentando problemas ou erros no funcionamento do EA, remova #property strict do código do EA na linha 6. Boa Sorte e Boas Negociações!

2025.03.17
MeanReversionTrendEA: O EA Essencial para MetaTrader 5
MetaTrader5
MeanReversionTrendEA: O EA Essencial para MetaTrader 5

1. Visão Geral O MeanReversionTrendEA é uma ferramenta poderosa que combina estratégias de seguimento de tendência e de reversão à média. Utilizando Médias Móveis e medições de volatilidade baseadas no ATR, este EA conta com um sistema de validação de trades integrado, garantindo execuções confiáveis em diversas condições de mercado. 2. Principais Características Estratégia Dupla: Combina cruzamentos de médias móveis (seguimento de tendência) com desvios de preço em relação à média móvel (reversão à média). Sinais Adaptativos: Usa médias móveis rápidas e lentas para identificar a tendência. Integração de Volatilidade: Incorpora o ATR para medir a volatilidade do mercado e definir entradas de reversão à média. Validador Integrado: Um sistema abrangente de validação de trades que verifica volume, margem e níveis de stop. Mecanismo de Segurança: Inclui funcionalidades de trade de segurança para validação em backtest. Gestão Defensiva de Posições: SL/TP fixos ou proporcionais com validação adequada. Compatível com Múltiplos Ativos: Funciona com forex, commodities, índices e ações com dimensionamento de lotes apropriado. 3. Como Funciona Monitora cruzamentos de médias móveis para mudanças na direção da tendência. Meça desvios de preço em relação à média móvel lenta usando bandas de volatilidade baseadas no ATR. Gera sinais de compra quando a média móvel rápida cruza acima da média lenta ou o preço cai abaixo da banda de volatilidade. Gera sinais de venda quando a média móvel rápida cruza abaixo da média lenta ou o preço sobe acima da banda de volatilidade. Valida e executa trades com parâmetros adequados de gestão de risco. 4. Parâmetros de Entrada Fast_MA_Period (20), Slow_MA_Period (50), ATR_Period (14) ATR_Multiplier (2.0) para cálculo da banda de reversão à média LotSize (0.1) para dimensionamento de posições SL_Points (500), TP_Points (1000) para gestão de risco Magic_Number (123456) para identificação de ordens 5. Notas de Uso Ótimo para todos os principais pares de moedas e instrumentos líquidos. Funciona em todos os timeframes, com H1-H4 recomendados para melhor qualidade de sinal. Requer dados históricos suficientes para cálculos adequados dos indicadores. Ideal para mercados em tendência com oportunidades ocasionais de reversão. Sistema de validação robusto garante execução adequada entre diferentes corretores. 6. Estrutura do Código CTradeValidator: Classe abrangente de validação de trades. Funções de inicialização de indicadores e processamento de dados. Geração de sinais combinando lógica de tendência e reversão. Execução de trades com validação e gestão de risco adequadas. Mecanismos de segurança para integridade de backtesting. 7. Isenção de Responsabilidade Este conteúdo é fornecido como está, para fins educacionais. O desempenho passado não é indicativo de resultados futuros. Teste extensivamente em contas demo antes de operar ao vivo.

2025.03.14
Monitoramento de Múltiplos EAs com Painel de Lucros e Perdas em Tempo Real no MQL5
MetaTrader5
Monitoramento de Múltiplos EAs com Painel de Lucros e Perdas em Tempo Real no MQL5

Insights de Estratégias Individuais Quando você tem várias estratégias rodando em uma única conta, o grande desafio é separar o desempenho de cada uma. Sem os números mágicos, você ficaria dependente de detalhes vagos como comentários das operações ou faixas de tickets. Os números mágicos trazem uma etiqueta numérica sistemática que um EA aplica automaticamente. Rastreamento Preciso de Desempenho Com essa ferramenta, você consegue identificar rapidamente qual sistema está enfrentando um drawdown ou qual está se destacando. Essa informação ajuda na tomada de decisões mais ágeis—por exemplo, decidir pausar um robô que não está performando bem ou alocar mais capital em uma estratégia vencedora. Análise & Registro Simplificados Em vez de ficar analisando logs ou a aba de histórico, você terá um único “painel” que agrega o lucro total fechado de cada EA, a contagem de operações e os campos de comentários relevantes. Isso facilita a organização, otimização de estratégias e até mesmo a apresentação de relatórios para clientes, caso você gerencie contas de terceiros.Código Completo Anexo. Dicas de Uso Conecte o Script/EA  a qualquer gráfico no MT5. Após a compilação, ele exibirá imediatamente uma tabela com cada número mágico. Verifique o Tamanho do Gráfico: Se a janela do gráfico for muito estreita, parte do texto pode sair da tela à direita. Amplie o gráfico ou diminua o tamanho da fonte para melhorar a legibilidade. Alinhe a Fonte: Courier New é recomendado para alinhamento das colunas, mas você pode mudar isso no código se preferir um visual diferente. Ajuste os Tempos: Por padrão, o script se atualiza a cada 5 segundos. Modifique EventSetTimer(5) se você quiser atualizações mais frequentes ou menos frequentes.

2025.02.25
Baixe Todo o Histórico de Ticks de um Símbolo no MetaTrader 5
MetaTrader5
Baixe Todo o Histórico de Ticks de um Símbolo no MetaTrader 5

Se você é trader e utiliza o MetaTrader 5, vai adorar essa dica! Com um sistema de download que desenvolvemos, você pode escanear a lista de símbolos do seu corretor e baixar todos os ticks disponíveis, ou até mesmo até uma data específica. Isso é extremamente útil para quem quer fazer backtests ou criar gráficos personalizados a partir desses dados de ticks. Lembre-se de que os ticks serão armazenados na pasta de dados do terminal, então, não esqueça de verificar se há espaço suficiente no seu HD. Para facilitar o download dos símbolos, começamos com um gerenciador de downloads. A estrutura CDownloadManager contém todas as informações necessárias que vamos utilizar. struct CDownloadManager &nbsp;&nbsp;{ &nbsp;&nbsp; bool m_started, m_finished; &nbsp;&nbsp; string m_symbols[], m_current; &nbsp;&nbsp; int m_index; } O que essa estrutura guarda? O estado do download (iniciado/terminado) A lista de símbolos a serem escaneados O símbolo atual O índice do símbolo que está sendo escaneado Precisaremos também de funções para ler e escrever no HD, pois estamos lidando com símbolos. Então, criamos duas funções rápidas para gravar e ler strings de arquivos binários. Função para salvar uma string em um arquivo: void writeStringToFile(int f, string thestring) &nbsp;&nbsp;{ &nbsp;&nbsp; //salva a string do símbolo &nbsp;&nbsp; char sysave[]; &nbsp;&nbsp; int charstotal = StringToCharArray(thestring, sysave, 0, StringLen(thestring), CP_ACP); &nbsp;&nbsp; FileWriteInteger(f, charstotal, INT_VALUE); &nbsp;&nbsp; for(int i = 0; i < charstotal; i++) &nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileWriteInteger(f, sysave[i], CHAR_VALUE); &nbsp;&nbsp;&nbsp;&nbsp; } } Essa função recebe: O manipulador do arquivo f, que deve estar aberto para escrita e com a flag binária FILE_WRITE|FILE_BIN A string que você deseja escrever no arquivo Ela grava um inteiro que representa a quantidade de caracteres na string e depois armazena cada um deles. Função para carregar uma string de um arquivo: string readStringFromFile(int f) &nbsp;&nbsp;{ &nbsp;&nbsp; string result = ""; &nbsp;&nbsp; //carrega a string do símbolo &nbsp;&nbsp; char syload[]; &nbsp;&nbsp; int charstotal = (int)FileReadInteger(f, INT_VALUE); &nbsp;&nbsp; if(charstotal > 0) &nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayResize(syload, charstotal, 0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int i = 0; i < charstotal; i++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; syload[i] = (char)FileReadInteger(f, CHAR_VALUE); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result = CharArrayToString(syload, 0, charstotal, CP_ACP); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp; return(result); } Essa função recebe: O manipulador do arquivo f, que deve estar aberto para leitura como binário, com as flags FILE_READ|FILE_BIN Ela lê um inteiro que representa a quantidade de caracteres que você pode esperar naquele ponto do arquivo. Em seguida, lê cada caractere e o coloca em um array de caracteres, criando uma string a partir desse array, que é retornada como resultado. Agora, vamos voltar à estrutura CDownloadManager. Precisamos de uma forma de inicializar o gerenciador e preenchê-lo a partir da lista de símbolos: //+------------------------------------------------------------------+ //| Captura os símbolos da lista de mercado | //+------------------------------------------------------------------+ void grab_symbols() &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//! apenas da lista de mercado! &nbsp;&nbsp;&nbsp;&nbsp;int s = SymbolsTotal(true); &nbsp;&nbsp;&nbsp;&nbsp;ArrayResize(m_symbols, s, 0); &nbsp;&nbsp;&nbsp;&nbsp;for(int i = 0; i < ArraySize(m_symbols); i++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_symbols[i] = SymbolName(i, true); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;} É bem simples: Pede quantos símbolos estão na lista de mercado (ativos) Redimensiona nosso array m_symbols para acomodá-los Faz um loop pelos símbolos e solicita o nome de cada um Agora, precisamos gerenciar o download dos dados dos símbolos, então, precisamos de uma função que seja essencialmente o gerenciador: //+------------------------------------------------------------------+ //| Gerencia o processo de download dos símbolos | //+------------------------------------------------------------------+ void manage(string folder, string filename) &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;// essencialmente, isso inicia ou navega para o próximo símbolo &nbsp;&nbsp;&nbsp;&nbsp;// caso esteja definido &nbsp;&nbsp;&nbsp;&nbsp;if(ArraySize(m_symbols) > 0) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// se não começou &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!m_started) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_started = true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// vai para o primeiro símbolo &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_current = m_symbols[0]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_index = 1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;save(folder, filename); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(_Symbol != m_current) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChartSetSymbolPeriod(ChartID(), m_current, _Period); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENUM_TIMEFRAMES new_period = PERIOD_M1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int p = 0; p < ArraySize(TFS); p++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(_Period != TFS[p]) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new_period = TFS[p]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChartSetSymbolPeriod(ChartID(), m_current, new_period); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;// se começou &nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_index++; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(m_index

2025.02.22
Primeiro Anterior 1 2 3 4 5 6 7 8 9 Próximo Último