Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 118
- Avaliação:
- Publicado:
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Parâmetros do Expert Advisor (entradas)
O EA fornece vários parâmetros externos que o usuário pode modificar para controlar seu comportamento:
Parâmetros gerais
| Parâmetro | Tipo de parâmetro | Descrição |
| MagicNumber | int | Um identificador exclusivo para as negociações do EA. |
| InitialLot | double | O tamanho do lote inicial para a primeira negociação em uma série. |
| AllowBuy | bool | Sinalizador para permitir que o EA abra negociações de compra (inicial e Martingale). |
| AllowSell | bool | Sinalizador para permitir que o EA abra negociações de venda (inicial e Martingale). |
| TakeProfit | int | Um Take Profit fixo em pontos/pips usado ao colocar ordens pendentes (embora não para execução no mercado). |
| FindHighLowBackBars | int | O número de barras anteriores a serem analisadas para determinar a máxima mais alta e a mínima mais baixa para a colocação inicial da ordem pendente. |
| ResetAfterBars | int | O número de barras após as quais as ordens pendentes iniciais serão excluídas e reavaliadas (se nenhuma posição estiver aberta). |
Estratégia Martingale
| Parâmetro | Tipo de parâmetro | Descrição |
| ReverseMartingale | bool | Se verdadeiro, as negociações subsequentes de Martingale serão na direção oposta da última negociação da série (isso normalmente seria uma abordagem anti-Martingale ou de hedging, mas o código abre na mesma direção se for falso). A lógica atual sugere a abertura na mesma direção se ReverseMartingale for falso. |
| LotMultiplier | duplo | O fator pelo qual o tamanho do lote é multiplicado para a próxima negociação na série de perdas (por exemplo, 2 .0 significa dobrar o lote). |
| SecureProfitMartingaleTarget | duplo | O lucro flutuante total (na moeda da conta) no qual toda a série de negociações abertas será fechada. |
| DistanceMartingalePips | int | A distância (em pips) que o preço deve se mover em relação ao preço de abertura da última negociação antes que uma nova negociação de Martingale seja aberta. |
| MaxTradesInSeries (Máximo de negociações na série) | int | O número máximo de negociações permitido em uma única série de Martingale. |
Estratégia de tempo
| Parâmetro | Tipo de parâmetro | Descrição |
| AllowMonday... AllowFriday | bool | Sinalizadores para ativar ou desativar a negociação em dias específicos da semana. |
| ForbiddenDates (Datas proibidas) | string | Uma lista separada por vírgulas de datas (formato AAAA.MM.DD) nas quais a negociação é proibida. |
Visão geral das funções principais
OnInit() (Inicialização)
Define o MagicNumber, o modo de margem e o desvio do EA. Ele redefine as variáveis de status do Martingale ( s_currentLot , s_totalTradesInSeries , etc.) para seus valores iniciais, preparando para um novo começo.
OnDeinit() (Desinicialização)
Uma função simples para limpeza, imprimindo uma mensagem quando o EA é interrompido ou removido.
IsTradingDateAllowed() e IsTradingDayAllowed() (Filtros de negociação)
Essas funções verificam o dia e a data atuais em relação às entradas definidas pelo usuário (AllowMonday a AllowFriday e ForbiddenDates) para determinar se a negociação é permitida.
OpenTradeLogic(ENUM_ORDER_TYPE type, string tradeComment) (Execução de mercado)
Essa função lida com a abertura de novas posições de mercado (compra ou venda).
-
Ela valida e normaliza o tamanho do lote em relação ao tamanho mínimo, máximo e escalonado do corretor.
-
Ela verifica se há margem livre suficiente usando CheckMargin().
-
Ele executa a negociação sem um Take Profit ou Stop Loss fixo (tp_calculated é 0).
-
Atualiza as variáveis globais de status da Martingale: s_currentLot , s_lastOpenPrice , s_seriesType e s_totalTradesInSeries .
CloseAllPositions()
Itera através de todas as posições abertas no momento e fecha todas as que foram abertas por esse EA (de acordo com o MagicNumber).
PendingOrders(ENUM_ORDER_TYPE type, double price, double lotSize, string comment) (Colocação de ordem pendente)
Essa função coloca ordens Buy Limit ou Sell Limit:
-
Ela valida o tamanho do lote e verifica se há margem suficiente.
-
Valida o preço de entrada em relação à distância mínima do corretor ( SYMBOL_TRADE_STOPS_LEVEL ).
-
Calcula um Take Profit (tp) fixo com base na entrada TakeProfit.
-
Ele envia a solicitação de negociação. Observação: a função UpdateHighLowAndOrders chama essa função para colocar as ordens iniciais Buy Limit e Sell Limit.
UpdateHighLowAndOrders() (Lógica de entrada inicial)
Esse é o mecanismo de entrada inicial quando nenhuma posição está aberta:
-
Ele analisa o FindHighLowBackBars para encontrar a máxima mais alta e a mínima mais baixa.
-
Ele calcula priceSellLimit (Highest High + 1 tick) e priceBuyLimit (Lowest Low - 1 tick).
-
Ele verifica se já existem ordens Buy Limit e Sell Limit com o MagicNumber do EA.
-
Ele coloca uma ordem Sell Limit inicial logo acima da máxima mais alta recente e uma ordem Buy Limit logo abaixo da mínima mais baixa recente, cada uma usando o InitialLot .
OnTick() (Lógica principal)
O núcleo da lógica de execução do EA:
-
Verificação de tempo: Evita cálculos redundantes no mesmo tick.
-
Verificação de filtro: Se a negociação não for permitida por dia/data, ele exclui todas as ordens pendentes.
-
Verificação da meta de lucro (saída de série): Se eaHasOpenPositions for verdadeiro E totalFloatingProfit for ≥ SecureProfitMartingaleTarget , ele chama CloseAllPositions() e redefine todas as variáveis de status de Martingale para iniciar uma nova série.
-
Colocação inicial da ordem: Se !eaHasOpenPositions AND trading for permitido, ele redefine o status de Martingale e verifica se uma nova barra foi formada.
-
Se uma nova barra for formada, ele verifica se barsCount é ≥ ResetAfterBars . Em caso afirmativo, ele exclui as ordens pendentes e chama UpdateHighLowAndOrders() para colocar novas ordens iniciais. Caso contrário, ele chama apenas UpdateHighLowAndOrders() .
-
-
Lógica da etapa de Martingale: Se eaHasOpenPositions for verdadeiro E s_totalTradesInSeries for $< MaxTradesInSeries`:
-
Verifica se totalFloatingProfit é negativo E se o preço se moveu contra a última negociação aberta por pelo menos DistanceMartingalePips .
-
Se ambas as condições forem atendidas, ele calcula o nextLot multiplicando s_currentLot pelo LotMultiplier .
-
Ele determina a direção do orderToOpen (a mesma direção da série ou a inversa, com base no ReverseMartingale).
-
Ele chama OpenTradeLogic() para abrir a nova posição multiplicada, dando continuidade à série Martingale.
-
Resumo da estratégia
O EA "Babi Ngepet" implementa uma estratégia de Martingale arriscada, mas com potencial de alta recompensa, combinada com uma entrada inicial de rompimento/reversão de faixa:
-
Entrada inicial: O EA coloca um limite de compra inicial (abaixo da mínima recente) e um limite de venda (acima da máxima recente). Isso sugere uma suposição inicial de comportamento de limite de faixa - ele entra em uma compra quando o preço cai para uma mínima e em uma venda quando o preço sobe para uma máxima.
-
Gerenciamento de negociações: Se uma das negociações iniciais for acionada e a posição se mover para uma perda agregada (lucro flutuante negativo) e o preço continuar a se mover contra as posições abertas por uma distância definida, o EA abrirá uma nova posição na mesma direção com um tamanho de lote maior (Martingale).
-
Estratégia de saída: A série de negociações continua a aumentar o tamanho do lote até que o lucro flutuante agregado de todas as negociações da série atinja o SecureProfitMartingaleTarget, momento em que todas as posições são fechadas e o EA reinicia uma nova série.
Aviso: A estratégia de Martingale é conhecida por altos drawdowns e alto risco de perda de capital porque o tamanho do lote aumenta após cada etapa de perda.
Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/64444
Trap News MT5
Script para notícias de armadilha de alto impacto
KopierMaschineMT5
O KopierMaschine é uma copiadora local de negociações entre diferentes contas MetaTrader 4 e MetaTrader 5 em qualquer direção, localizada em um computador com uma interface intuitiva.
Consultor especialista em teoria de probabilidade para Forex
Consultor de Teoria da Probabilidade
Breakout Strategy with Prop Firm Helper Functions
Esta é uma atualização da "Simple Yet Effective Breakout Strategy". Nesse código, adicionei algumas funções auxiliares para os desafios da firma de apoio.