Trebuchet Bracket Engine
- Experts
-
Syarief Azman Bin Rosli
Olá e seja bem-vindo ao meu perfil oficial no MQL5!
Sou Syarief Azman Bin Rosli, desenvolvedor de sistemas de trading algorítmico e engenheiro de software quantitativo com mais de uma década de experiência especializada na criação de Expert Advisors para MetaTrader 5 e MetaTrader 4. - Versão: 1.0
- Ativações: 5
Trebuchet Bracket Engine é um Expert Advisor para MetaTrader 4 de rompimentos por expansão do range diário. No âncora (por padrão a abertura do dia) ele mede o range dos últimos N dias, coloca um buy stop acima e um sell stop abaixo do âncora a K x range, põe o stop loss no âncora e fecha tudo na saída diária. No máximo uma operação por lado por dia; sem grid, martingale, preço médio nem posições de um dia para o outro (a não ser que desligue a saída diária).
Início rápido
- Anexe o EA a um gráfico do símbolo (qualquer tempo gráfico; a lógica usa barras diárias e o relógio) e ative AutoTrading e "Allow live trading".
- Comece com os padrões: range Dual Thrust de 4 dias, gatilhos a 0.50 x range, stop no âncora, corte de entradas 21:00 e saída 22:00 no horário do servidor, risco de 1 %.
- Após o âncora o painel mostra BRACKET ARMED e surgem duas ordens pendentes: um buy stop e um sell stop.
- Teste: uma execução visual do Testador em XAUUSD M15 por duas semanas desenha cada bracket e operação.
- Alertas push: configure seu MetaQuotes ID (Ferramentas > Opções > Notificações) e Push Notifications = true.
Como opera
Range: Range Basis Dual Thrust (max of HH-LC, HC-LL) usa os N dias completos antes de hoje (Range Lookback): HH/LL são a máxima e a mínima, HC/LC o maior e o menor fechamento, range = o maior entre HH-LC e HC-LL. Average daily range = média de máxima-mínima desses dias; Previous day range = máxima-mínima de ontem.
Âncora: em Anchor Time o preço do âncora é fixado. 00:00 usa a abertura diária (primeiro tick do dia do servidor). Outro horário usa a abertura da primeira barra nesse horário ou depois.
Gatilhos: compra = âncora + Buy Trigger Distance x range, venda = âncora - Sell Trigger Distance x range. Se range / ATR diário (Daily ATR Period) ficar abaixo de Minimum Range ou acima de Maximum Range, não há bracket no dia (RANGE TOO NARROW / RANGE TOO WIDE).
Entry Orders:
- Pending stop orders: um buy stop e um sell stop são colocados logo após o âncora. Se um gatilho estiver mais perto que o nível de stops da corretora, esse lado é vigiado pelo EA e entra a mercado (VIRTUAL).
- Market order on touch: sem ordens pendentes; o EA compra quando o Ask atinge o gatilho de compra e vende quando o Bid atinge o de venda (ignorado enquanto o spread passar de Max Spread for Market Entries).
Um lado cujo gatilho já foi ultrapassado ao montar o bracket (por exemplo após reiniciar) fica MISSED e nunca é perseguido. Cada lado opera no máximo uma vez por dia e Max Trades per Day limita o total. Cancel the Opposite Order on Fill apaga o outro lado quando um é executado.
Stop Loss Placement:
- At the anchor: o stop fica no preço do âncora.
- At the opposite trigger (stop and reverse): o stop da compra fica no gatilho de venda e o da venda no de compra, assim um rompimento falso pode virar para o outro lado.
- Range fraction from entry: entrada menos (mais nas vendas) Stop Distance for Range Fraction x range.
Os stops são ampliados ao mínimo da corretora quando preciso.
Saídas: Take Profit define um alvo nesse múltiplo R da distância do stop (0 = sem alvo). Breakeven Trigger leva o stop à entrada quando a operação ganhou esse número de R. Em Entry Cutoff todas as pendentes são apagadas; em Day Exit Time todas as posições do EA são fechadas, e uma posição de um dia de servidor anterior fecha na hora (vazio = manter à noite). Fechamentos, exclusões e alterações de stop só fora da zona de congelamento e dentro da sessão; senão são repetidos.
Lot Sizing: Fixed lots opera Fixed Lots. Risk % of balance: lotes = saldo x Risk per Trade / 100 / perda por lote até o stop, arredondado ao passo e limitado por Max Lots. Abaixo do mínimo da corretora usa-se o lote mínimo, então contas pequenas, ou ouro com ranges diários amplos, podem arriscar mais que o percentual definido. A margem livre é verificada antes de cada ordem (NO MARGIN).
Recomendado: XAUUSD e GBPUSD. Pares de baixa volatilidade como EURUSD deram resultados fracos com os padrões. Os horários são do servidor (feito para servidores GMT+2/+3). Vale otimizar: Range Lookback, as duas distâncias de gatilho, Stop Loss Placement, Day Exit Time e Maximum Range.
Controles do painel
- [-] / [+]: recolher em uma pílula (TREBUCHET mais o estado) ou expandir.
- <>: mover o painel para o próximo canto.
- PAUSE / RESUME: PAUSE apaga as pendentes e bloqueia novas entradas (posições abertas continuam geridas); RESUME recoloca o bracket de hoje se ainda for válido. Guardado em uma variável global, sobrevive a reinícios.
- BRACKET ON / BRACKET OFF: mostrar ou ocultar as linhas do gráfico.
- CLOSE ALL: o primeiro clique mostra CONFIRM?, um segundo clique em 4 segundos fecha todas as posições e apaga todas as pendentes do EA no símbolo.
Recolhimento, canto e linhas voltam aos parâmetros ao reanexar o EA.
Leituras do painel
- LED do cabeçalho: verde com o bracket armado ou uma operação ativa, âmbar em pausa, cinza nos demais casos.
- DAY STATE: selo WAITING FOR ANCHOR, BRACKET ARMED, LONG LIVE, SHORT LIVE, PAUSED, DAY QUOTA USED, DAY DONE (após o corte), BRACKET SPENT (os dois lados usados), RANGE TOO NARROW, RANGE TOO WIDE ou NO DAILY HISTORY; data; horário e preço do ANCHOR; horários de CUTOFF e EXIT.
- RANGE ENGINE: período e base; valor RANGE com os dois K; HH, LL, HC, LC; um medidor de range / ATR de 0 a 3 com marcas nos dois limites; a razão, os limites e OK ou o motivo.
- BRACKET: medidor com o gatilho de venda (coral), o âncora (bronze) e o gatilho de compra (turquesa); o marcador mostra o Bid e muda de cor além de um gatilho. Abaixo: preços SELL, ANCHOR e BUY e a distância até cada gatilho em pontos. À direita: STOP AT ANCHOR, STOP+REVERSE ou STOP x.xxR, e o alvo em R.
- Linhas de lado LONG e SHORT: READY, BUY STOP AT / SELL STOP AT preço, WATCHING preço (VIRTUAL), FILLED - IN TRADE, TRADED TODAY, MISSED: PRICE ALREADY BEYOND, SKIPPED: NO MARGIN ou ORDER FAILED, CANCELLED: OCO, CUTOFF, QUOTA, PAUSED, MANUAL ou NEW DAY, NO BRACKET TODAY.
- POSITION: FLAT, ou lado, lotes, entrada e lucro flutuante; SL, TP, R e BE ([x] quando o stop está no breakeven). Sem posição: TODAY operações / máximo e DAY P/L, ou NEW ENTRIES PAUSED.
- ACTIVITY: os três últimos eventos com horário: BRACKET, NO BRACKET, BUY STOP / SELL STOP colocado, BUY FILLED / SELL FILLED, STOP CANCELLED, MISSED, SKIPPED, ORDER FAILED, BREAKEVEN, CLOSED (saída diária, dia anterior, manual), CLOSE ALL, PAUSED by user, RESUMED by user.
- Linha inferior: TRADES, percentual WIN e NET de lucro fechado do EA no símbolo.
Linhas no gráfico
Do âncora à saída diária: uma linha turquesa BUY TRIGGER, uma coral SELL TRIGGER e uma pontilhada bronze ANCHOR, rotuladas para hoje; Past Days Drawn on Chart brackets anteriores em linhas finas (cinza quando filtrados). Visível em tempos gráficos até H4.
Alertas
Pop-up Alerts e Push Notifications disparam ao montar o bracket no âncora, em cada execução e em cada fechamento. Não no Testador.
Efeitos colaterais
- Variável global TBE_PAUSE_<símbolo>_<magic> = 1 enquanto pausado.
- Objetos com prefixo TBE_P_ (painel) e TBE_Z_ (linhas), removidos com o EA. Temporizador de um segundo. Sem arquivos nem DLL.
bool paused = GlobalVariableCheck("TBE_PAUSE_XAUUSD_26110901"); Parâmetros de entrada
Range Engine
- Range Lookback (4 dias), Range Basis (Dual Thrust (max of HH-LC, HC-LL); ou Average daily range, Previous day range).
- Buy Trigger Distance (0.50) e Sell Trigger Distance (0.50): x range.
- Daily ATR Period (14 dias), Minimum Range (0.0 x ATR, 0 = desligado), Maximum Range (2.5 x ATR, 0 = desligado).
Horários
- Anchor Time (00:00 = abertura do dia), Entry Cutoff (21:00), Day Exit Time (22:00, vazio = desligado): horário do servidor, âncora antes do corte, corte não depois da saída.
Ordens e saídas
- Entry Orders (Pending stop orders; ou Market order on touch).
- Stop Loss Placement (At the anchor; At the opposite trigger (stop and reverse); Range fraction from entry), Stop Distance for Range Fraction (0.30 x range).
- Take Profit (0.0 R = só saída diária), Breakeven Trigger (0.0 R = desligado).
- Max Trades per Day (2), Cancel the Opposite Order on Fill (false).
Gestão de capital
- Lot Sizing (Risk % of balance; ou Fixed lots), Fixed Lots (0.10), Risk per Trade (1.0 %), Max Lots (5.0).
- Max Spread for Market Entries (0 pontos = desligado).
Execução
- Magic Number (26110901, um por gráfico no mesmo símbolo), Max Slippage (30 pontos), Order Comment (Trebuchet).
Exibição e alertas
- Show Panel (true), Draw Bracket Levels (true), Past Days Drawn on Chart (5), Start Collapsed (false), Panel Scale (1.0, 0.5-2.5).
- Pop-up Alerts (true), Push Notifications (false).
Configurações típicas
- Bracket diário clássico (XAUUSD, GBPUSD): padrões.
- Stop e reversão: Stop Loss Placement = At the opposite trigger (stop and reverse), Max Trades per Day 2.
- Bracket de Londres: Anchor Time 08:00, Entry Cutoff 16:00, Day Exit Time 21:00, Range Basis = Average daily range, as duas distâncias 0.40.
- Alvo e proteção: Take Profit 2.0, Breakeven Trigger 1.0, Cancel the Opposite Order on Fill true.
Notas
- Após reiniciar, o bracket é reconstruído com barras diárias; ordens existentes mantêm o seu lado e um gatilho ultrapassado nunca é perseguido.
- Ordens pendentes nunca passam para um novo dia.
- Day Exit Time vazio só é aceito junto com um Take Profit acima de 0; caso contrário, uma operação só poderia fechar no stop.
- O Testador usa as mesmas regras; painel e linhas só no modo visual. Teste primeiro em conta demo.
Aviso de risco
Operar forex e CFDs com margem envolve alto risco de perda. Resultados passados ou simulados não garantem resultados futuros. Este EA não promete lucro; use apenas capital que você pode perder.
