Parâmetros do Robô de Negociação
O Babi Ngepet é um robô que oferece uma série de parâmetros que você pode ajustar para controlar o seu comportamento:
Parâmetros Gerais
| Parâmetro | Tipo | Descrição |
| MagicNumber | int | Um identificador único para as operações do robô. |
| InitialLot | double | Tamanho do lote inicial para a primeira operação em uma série. |
| AllowBuy | bool | Permissão para o robô abrir operações de compra (inicial e Martingale). |
| AllowSell | bool | Permissão para o robô abrir operações de venda (inicial e Martingale). |
| TakeProfit | int | Um Take Profit fixo em pontos que será usado ao colocar ordens pendentes (não para execução no mercado). |
| FindHighLowBackBars | int | Número de barras anteriores a serem analisadas para determinar os altos e baixos para a colocação de ordens pendentes iniciais. |
| ResetAfterBars | int | Número de barras após as quais as ordens pendentes iniciais serão deletadas e reavaliadas (caso nenhuma posição esteja aberta). |
Estratégia Martingale
| Parâmetro | Tipo | Descrição |
| ReverseMartingale | bool | Se verdadeiro, as operações subsequentes do Martingale serão na direção oposta da última operação na série. |
| LotMultiplier | double | Fator pelo qual o tamanho do lote é multiplicado para a próxima operação em uma série de perdas. |
| SecureProfitMartingaleTarget | double | O lucro flutuante total em moeda da conta em que toda a série de operações abertas será fechada. |
| DistanceMartingalePips | int | A distância (em pips) que o preço deve se mover contra o preço de abertura da última operação antes de abrir uma nova operação Martingale. |
| MaxTradesInSeries | int | Número máximo de operações permitidas em uma única série Martingale. |
Estratégia de Tempo
| Parâmetro | Tipo | Descrição |
| AllowMonday... AllowFriday | bool | Flags para habilitar ou desabilitar a negociação em dias específicos da semana. |
| ForbiddenDates | string | Uma lista separada por vírgulas de datas (formato YYYY.MM.DD) nas quais a negociação é proibida. |
Visão Geral das Funções Principais
OnInit() (Inicialização)
Define o MagicNumber do robô, modo de margem e desvio. Reseta as variáveis do status Martingale para seus valores iniciais, preparando para um novo começo.
OnDeinit() (Desinicialização)
Uma função simples para limpeza, imprimindo uma mensagem quando o robô é parado ou removido.
IsTradingDateAllowed() e IsTradingDayAllowed() (Filtros de Negociação)
Essas funções verificam o dia e a data atuais em relação aos inputs definidos pelo usuário para determinar se a negociação é permitida.
OpenTradeLogic(ENUM_ORDER_TYPE type, string tradeComment) (Execução de Mercado)
Essa função gerencia a abertura de novas posições no mercado (Compra ou Venda).
Valida e normaliza o tamanho do lote de acordo com o mínimo, máximo e tamanho de passo do corretor.
Verifica se há margem livre suficiente.
Executa a operação sem um Take Profit ou Stop Loss fixo.
Atualiza as variáveis globais do status Martingale.
CloseAllPositions()
Itera por todas as posições abertas e fecha aquelas que foram abertas por este robô.
PendingOrders(ENUM_ORDER_TYPE type, double price, double lotSize, string comment) (Colocação de Ordem Pendente)
Essa função coloca ordens de Compra Limit ou Venda Limit:
Valida o tamanho do lote e verifica a margem suficiente.
Valida o preço de entrada de acordo com a distância mínima do corretor.
Calcula um Take Profit fixo baseado no parâmetro TakeProfit.
Envia o pedido de negociação.
UpdateHighLowAndOrders() (Lógica de Entrada Inicial)
Mecanismo de entrada inicial quando não há posições abertas:
Busca as Altas e Baixas.
Calcula os limites de venda e compra.
Verifica se ordens Limit já existem.
Coloca uma ordem Sell Limit e uma Buy Limit.
OnTick() (Lógica Principal)
O cerne da lógica de execução do robô:
Verificação de Tempo: Prevê cálculos redundantes no mesmo tick.
Verificação de Filtro: Se a negociação não for permitida, deleta todas as ordens pendentes.
Verificação de Meta de Lucro: Se houver posições abertas e o lucro total flutuante atingir o SecureProfitMartingaleTarget, fecha todas as posições.
Colocação de Ordem Inicial: Se não houver posições abertas e a negociação for permitida, verifica se um novo candle se formou.
Se um novo candle se formou, verifica se as ordens pendentes devem ser atualizadas.
Lógica do Passo Martingale: Se houver posições abertas e não tiver alcançado o máximo de operações:
Verifica se o lucro total flutuante é negativo.
Se as condições forem atendidas, calcula o próximo lote.
Determina a direção da ordem a abrir.
Chama OpenTradeLogic() para abrir a nova posição.
Resumo da Estratégia
O robô "Babi Ngepet" implementa uma estratégia Martingale arriscada, mas com potencial para altos retornos:
Entrada Inicial: Coloca ordens de compra e venda com base em comportamentos de mercado.
Gestão de Trades: Se uma das operações iniciais for acionada e o mercado se mover contra, abre uma nova posição.
Estratégia de Saída: Continua a aumentar o tamanho do lote até que o lucro total flutuante atinja o SecureProfitMartingaleTarget.
Aviso: A estratégia Martingale é conhecida por altos drawdowns e risco significativo de perda de capital, pois o tamanho do lote aumenta após cada passo de perda.
Publicações relacionadas
- MACD Sample: Um Guia Prático para o Expert Advisor no MetaTrader 5
- Como Criar Sinais de Negociação com MQL5 Wizard Usando Estrelas da Manhã e da Noite + Estocástico
- MQL5 Wizard: Sinais de Negociação com Padrões Candlestick e RSI no MetaTrader 5
- MQL5 Wizard: Sinais de Negociação com Estrelas da Manhã/Noite + RSI para MetaTrader 5
- Como Criar um Expert Advisor com MQL5: Sinais de Negociação Baseados em Harami e RSI