Joao Prata Silva Yglesias
Joao Prata Silva Yglesias
5 (1)
  • Informações
6+ anos
experiência
4
produtos
2
versão demo
0
trabalhos
2
sinais
0
assinantes
Trader e desenvolvedor de robôs com foco em automação e gestão de risco para o mercado Forex. Crio Expert Advisors que priorizam proteção de capital e sobrevivência, em vez de promessas — estratégias reais, resultados transparentes e monitoramento ao vivo.

Meu principal produto é o SurfBot, um grid bidirecional de reversão à média com controle de exposição por portfólio e hedge de tendência opcional. Tudo que publico roda em contas reais com sinais públicos, para você verificar o desempenho antes de comprar.

Prezo por documentação clara e suporte ágil. Dúvidas são sempre bem-vindas — fale comigo quando quiser.
Joao Prata Silva Yglesias Produto publicado

Grid Survival Ruler answers one question that decides whether a grid survives: how far can price move against you before the last layer is filled, and how often has THIS pair actually moved that far? Enter your spacing (% of price) and your maximum layers. The indicator draws the ladder on the chart, marks the last layer in red (book full), and shows the total adverse move in % and in price, plus how many average daily ATRs it represents. Then it tests that distance against the pair's own D1

Joao Prata Silva Yglesias Produto publicado

Spacing Audit measures the grid spacing your EA REALLY uses, from its own closed trades, not from its inputs and not from the gaps between open layers. Why: I spent a week believing my grid used ATR-based spacing because UseATR was true. It did not. Every pair sat on the minimum-spacing floor, 2.8x to 5.1x tighter than intended, and the book kept clogging. The inputs said one thing; 1,120 closed trades said another. The method: in a grid where each layer carries a take-profit one spacing away

Joao Prata Silva Yglesias
Publicado o código Contract Sizer: ladder, floor and a breaker that survives a deposit
Três proteções de dimensionamento de posição que funcionam de maneiras diferentes; confundir essas proteções é o motivo pelo qual tantas contas vão à falência: - ladder: um contrato por cada X do saldo, sempre aplicada como um limite máximo (CAP), mesmo com dimensionamento manual de lotes; - floor: abaixo do capital mínimo, a conta não opera; é necessário um novo depósito; - breaker: interrompe a operação quando o saldo fica X% abaixo do pico, independentemente do tamanho da conta, e não se reativa automaticamente. O que esta biblioteca resolve e quase nenhuma outra resolve: um depósito não é lucro, e um saque não é perda. O breaker mede a queda em relação ao pico do saldo. Se não for tratado, um depósito feito DURANTE uma queda eleva o saldo e o pico juntos, e a proteção deixa de detectar a queda exatamente quando seria útil. Aqui, depósitos e saques alteram o pico no mesmo valor. O pico é salvo em um arquivo: um limitador que esquece o pico ao reiniciar o terminal não é um limitador. A demonstração simula um depósito no ponto mais baixo de uma queda. Execute-a com o depósito ativado e desativado e compare a coluna “queda”.
Joao Prata Silva Yglesias
Publicado o código Safe Logger: why your log lines vanish while FileOpen keeps returning success
Four EAs writing to the same file, all with FILE_SHARE_READ|FILE_SHARE_WRITE, FileSeek(SEEK_END), FileWrite, FileClose. Looks correct. Every FileOpen returns success. No error in the log. And the lines vanish. Reason: FILE_SHARE_WRITE lets all four open at the same time. All four call FileSeek(SEEK_END) and get THE SAME offset, because none has written yet. All four write at the same position. Whoever closes last wins. Three lines vanish silently. In my case: 12 events expected, 8 in the file. The fix is to open EXCLUSIVELY (no FILE_SHARE_WRITE) and retry while another EA holds the file. And to shout in the log when the retries run out: a log that fails silently is worse than no log at all, because you trust it. The demo script reproduces both modes. To see the loss, drag it onto four charts at the same time with safe mode off and count the lines in the CSV. On a single chart the defect does not show up - which is why it passes in testing and breaks in production.
80
Joao Prata Silva Yglesias
Publicado o código Clock Diagnostic: TimeCurrent() freezes and steps backwards
TimeCurrent() is not a clock. It is the stamp of the LAST TICK. Two consequences break robots in production: 1. It freezes. With no tick it does not move: illiquid instrument, end of session, unstable connection - and any rule based on it stops with it. 2. It steps backwards: on a symbol switch, a reconnection or a tick from another instrument, the value can go back. The case that cost me a whole protection: I compared the date of a daily decision with TimeCurrent() to reject an expired one. The server clock stepped back to the previous day, the comparison matched, and four EAs accepted YESTERDAY's decision as valid. The gate that should have failed closed failed open - without a single error in the log. Rule: TimeLocal() for timestamps, dates, day changes, expiry - all that must always move forward; TimeCurrent() for session hours and market data. The script measures the divergence in your environment and reports both symptoms live. Run it with the market closed.
103
Joao Prata Silva Yglesias
Publicado o código Trade Excursion Report: MFE and MAE of every closed trade, to CSV
Exporta uma linha CSV por operação encerrada com os números que um extrato bancário não apresenta: o melhor lucro não realizado que a operação apresentou (MFE), a pior perda não realizada que ela suportou (MAE), quanto do MFE foi efetivamente mantido, quantas barras ela abrangeu e por quanto tempo foi mantida. A mesma métrica do indicador Trade Excursion, gravada em um arquivo em vez de exibida graficamente, pois as perguntas que valem a pena fazer sobre esses dados são aquelas que um gráfico não consegue responder: a taxa de captura depende da hora de entrada? As operações que eu fecho antecipadamente são as que eu mantenho por mais tempo? As operações com prejuízo às segundas-feiras atingem um MAE diferente das de sexta-feira? Basta uma tabela dinâmica para responder a essas perguntas, uma vez que o arquivo CSV esteja disponível. A saída é separada por ponto-e-vírgula com uma linha de cabeçalho, no formato MQL5\Files; abre em qualquer planilha. Limite da medição: as excursões são calculadas a partir das máximas e mínimas das barras no período de tempo escolhido; o trajeto dentro de uma barra é desconhecido. A coluna de barras informa a resolução obtida por cada operação, e o resumo conta as operações de barra única separadamente, em vez de calcular a média delas.
Joao Prata Silva Yglesias
Publicado o código Trade Excursion: how much of each winner you actually kept (MFE/MAE from your own history)
Your statement tells you what you KEPT. It does not tell you what you HAD. This indicator reads your own closed trades from the account history and draws, for each one, the full range it travelled: the best unrealised profit it ever showed (MFE) and the worst unrealised loss it survived (MAE). The gap between what a trade showed and what it paid is where two common problems hide, and neither is visible in a balance curve: winners closing far below their best point (the exit leaves money behind), and losers whose worst excursion barely passed the stop (the stop sits inside the noise). The number to look at is the CAPTURE RATIO: of the profit a winner showed at its best, how much did you take home? 90% says the exits are well placed; 30% says the market kept offering and the exit kept refusing. Limit, stated up front: excursions come from the bars each trade spanned, on the chart timeframe; the path inside a bar is unknown. Predicts nothing; measures trades that already happened.
134
Joao Prata Silva Yglesias
Publicado o código Decision Watchdog: refuse yesterday's decision, fail closed, log once
A daily process writes "today's decision" (which strategy runs, or FLAT) to a file the EAs read at the open. One day the writer did not run. The EAs read yesterday's file, compared its date with TimeCurrent() - the server clock, which had stepped back to the previous day overnight - saw a match, and traded all morning on a 24-hour-old decision. No error anywhere. Two rules, both in this class: 1) staleness is judged against TimeLocal(), which always moves forward; TimeCurrent() is the last tick's stamp - it freezes without ticks and can step back on reconnect. 2) When in doubt the answer is FLAT: missing file, bad date, wrong day, empty line - every failure path returns "do nothing", and each is logged ONCE per state change, not on every tick and not never. File format: line 1 = ISO date, line 2 = decision string. The demo writes a fresh, a stale, a malformed, an empty and a missing file, and shows that only the first is allowed to trade.
86
Joao Prata Silva Yglesias
Publicado o código Exposure Cap: one position limit per symbol across all your EAs
Four EAs on the same symbol, each one honest on its own: each checks "do I have a position?" with its own magic number, sees none, and enters. On a demo account this reached 22 contracts on a symbol meant to carry 1, and a watchdog had to close 16 positions in one morning. The cap belongs at the door, not after the fact. ExposureCap::Allowed(symbol, lots, cap) sums the volume of every open position on the symbol - all magic numbers, manual trades included - and refuses the order BEFORE it is sent when it would breach the cap. One log line with the three numbers (held, requested, cap) says why. Deliberately simple: gross exposure, no netting of longs against shorts, no per-EA quota. It is a check, not a lock: two EAs deciding on the same tick can both pass; in practice EAs on different charts decide on different ticks. The demo script prints held / cap / room for the current symbol and shows the refusal line. Nothing is traded.
84
Joao Prata Silva Yglesias
Publicado o código Server Time Offset: the three clocks in MQL5 and how timestamps shift on export
A datetime in MQL5 is seconds since 1970 - but server time (TimeCurrent, bar times, deal times) is the broker's wall clock stored AS IF it were UTC. Export it to CSV, read it in Python or a spreadsheet with a "seconds since 1970 UTC" parser, and every timestamp shifts by the server's UTC offset. On a UTC-3 broker that is three hours: the daily bar dated 00:00 reads as 21:00 of the previous day, and "yesterday's session" silently becomes "today's, half formed". That happened to a morning report of mine before this script existed. The script prints TimeTradeServer, TimeCurrent, TimeGMT and TimeLocal, the three offsets between them, the tick lag, and this chart's last bar time in server time and in real UTC - then states the rule: export server timestamps as wall-clock text, or export the epoch together with the offset, and never let the consumer apply its own timezone.
100
Joao Prata Silva Yglesias
Publicado o código Elder Force Index (faithful to the book definition)
Índice de Força, conforme definido por Alexander Elder: Volume x (Fechamento de hoje - Fechamento de ontem), e a série resultante é então suavizada. Dois comprimentos, 2 e 13, ambos de seus livros.
Joao Prata Silva Yglesias Publicado sinal MetaTrader 5
SurfBot v2 Grid FXGlobe
Preço: 30 USD, Crescimento: 9.35%
SurfBot 2.06 — grid Forex de direção única com tetos rígidos de capital, rodando em conta real FXGlobe. Este é o registro ao vivo do mesmo engine vendido na MQL5 Market como SurfBot (produto 179990, magic number 880001): https://www.mql5.com/pt/market/product/179990 O QUE FAZ: um grid por par, em UM lado só (compra ou venda), escolhido pelo melhor swap. Cada camada tem o seu próprio take-profit a um espaçamento de distância. NÃO há stop-loss por trade, por desenho. O QUE O MANTÉM VIVO: máximo de
Joao Prata Silva Yglesias Produto publicado
Comentário: 1
FREE

O SurfBot Radar é um indicador gratuito de rompimento e tendência para o MetaTrader 5. Ele desenha um canal de Donchian (a máxima e a mínima das últimas N barras), marca a primeira barra que rompe o canal e confirma cada rompimento com o fluxo — o saldo do volume direcional numa janela recente. Rompimento + fluxo a favor mostra um sinal claro de COMPRA ou VENDA; um rompimento sem fluxo é marcado como "sem confirmação". Um painel gráfico no gráfico (posicionável em qualquer canto) mostra o

Joao Prata Silva Yglesias Produto publicado

SurfBot — grid Forex de uma direção por par, com tetos duros de capital. Sem stop-loss por operação, por desenho. 🔴 Desempenho real (conta real verificada, exatamente este motor): https://www.mql5.com/pt/signals/2383326 O QUE ELE FAZ Roda um grid por par, num lado SÓ (comprado ou vendido). O lado é escolhido pelo melhor swap (GridSide=AUTO) ou forçado por você. Cada camada tem o próprio take-profit a um espaçamento de distância; não há stop-loss por operação. O espaçamento vem de uma tabela

Joao Prata Silva Yglesias Publicado sinal MetaTrader 5
"SurfBot Bidirectional Grid" está indisponível
Joao Prata Silva Yglesias
Registrado no site MQL5.community