Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Facebook!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Bibliotecas

News Filter for the Strategy Tester (DST-corrected calendar export) - biblioteca para MetaTrader 5

Cristian Ciunae
Cristian Ciunae
Trader for 8 years & MQL5 Developer. Specializing in Prop Firm Risk Management.
My Core Focus: I build MQL5 tools and Expert Advisors designed for the realities of live trading: strict drawdown limits, hidden swap/commission costs, and news slippage.
What I Do:
| Portuguese English Русский 中文 Español Deutsch 日本語 한국어 Français Italiano Türkçe
Visualizações:
17
Avaliação:
(3)
Publicado:
Freelance MQL5 Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
O PROBLEMA

A maioria dos filtros de notícias consulta o calendário econômico do MQL5 (CalendarValueHistory). Esse calendário não existe no Testador de Estratégias, portanto, esses filtros, sem dar aviso, não realizam nenhuma ação nos backtests: o EA opera diretamente durante a divulgação do NFP, do CPI ou das decisões sobre taxas de juros, e o backtest deixa de corresponder ao comportamento em tempo real. Em um dos meus testes, uma ordem pendente no XAUUSD foi executada 5 minutos antes da divulgação do CPI dos EUA e o stop loss foi acionado com um slippage de 45 USD — uma única operação resultou em uma perda 6,5 vezes maior do que o risco planejado.

Um segundo problema, menos conhecido: o terminal converte os horários históricos do calendário com o deslocamento ATUAL do servidor. Ao exportar no verão em uma corretora com fuso horário GMT+2 / GMT+3, todos os eventos de inverno aparecem com uma hora de atraso (NFP às 16h30 em vez de 15h30, horário do servidor). Um filtro criado com base nesses horários bloqueia a hora errada durante metade do ano.

A SOLUÇÃO — TRÊS ARQUIVOS

NewsCalendarExport.mq5 (script) — exporta os eventos para Terminal\Common\Files\NewsCalendar.csv e recalcula cada evento com o deslocamento do servidor da respectiva data. No final, ele exibe uma verificação automática: o horário mais frequente dos eventos do USD deve ser idêntico tanto no inverno quanto no verão.

NewsFilter.mqh (classe CNewsFilter) — um filtro tanto para negociação ao vivo quanto para backtests. Em tempo real, ele lê o calendário econômico (consultado no máximo uma vez por minuto); no Strategy Tester, ele lê o arquivo CSV. Apenas as moedas do símbolo são utilizadas (EURUSD: EUR + USD, XAUUSD: USD, CFDs de índices cotados em USD: USD).

NewsFilter_Example.mq5 — um EA mínimo que exibe uma mensagem quando uma janela de notícias começa e termina, além de destacar as janelas bloqueadas no gráfico, para que você possa ver o filtro em funcionamento no modo visual do testador.

COMO USAR

Copie o NewsFilter.mqh para MQL5\Include, o NewsCalendarExport.mq5 para MQL5\Scripts e o NewsFilter_Example.mq5 para MQL5\Experts. Compile o script e o exemplo (o arquivo .mqh é compilado junto com eles).

Execute o NewsCalendarExport uma vez, em qualquer gráfico de um terminal conectado. Na aba “Experts”, você deverá ver: “OK: mesmo horário no inverno e no verão”.

No seu EA, adicione o seguinte código:

C++
#include <NewsFilter.mqh>
CNewsFilter news;

int OnInit()
{
news.Init(_Symbol, 30, 30); // bloqueia 30 minutos antes e depois de cada evento
return(INIT_SUCCEEDED);
}

void OnTick()
{
if(news.IsBlocked())
return; // nenhuma nova entrada durante as notícias
// ... sua lógica de entrada ...
}
Faça o backtest como de costume. O diário mostra quantos eventos foram carregados para o símbolo.

ENTRADAS DO SCRIPT

Exportar eventos a partir de: data de início da exportação.

Exporte também eventos agendados para N dias à frente: inclui eventos futuros.

Moedas: lista separada por vírgulas (padrão: USD, EUR, GBP, JPY, CAD, AUD, NZD, CHF).

Importância: apenas alto impacto, ou impacto médio + alto.

Regra de horário de verão do servidor da corretora: regra dos EUA (padrão, servidor = Nova York + 7h, a maioria das corretoras em GMT+2/+3), regra da UE ou sem horário de verão.

Nome do arquivo: armazenado em Terminal\Common\Files.

CNewsFilter::Init(símbolo, minutosAntes, minutosDepois, mediumToo = false, arquivoCSV = "NewsCalendar.csv")

NOTAS E LIMITAÇÕES

Testado na FTMO (GMT+2 / GMT+3, regra de horário de verão dos EUA) e na IC Markets UE. Exemplo de saída: 5.645 eventos exportados, 1.897 deles deslocados em uma hora; antes da correção, o horário mais frequente para o USD era 16h30 no inverno e 15h30 no verão; após a correção, 15h30 em ambas as estações.

Se a verificação automática ainda mostrar horários diferentes para o inverno e o verão, tente outra “Regra de horário de verão do servidor da corretora”.

O histórico do calendário MQL5 é limitado e depende do terminal; no meu terminal, ele começa em 2020, portanto, backtests mais antigos não conterão eventos.

Apenas as moedas do símbolo são utilizadas; portanto, para índices e commodities, a moeda de cotação determina quais eventos se aplicam.

Agentes remotos e na nuvem não conseguem acessar a pasta Common\Files — otimize com agentes locais.

Algumas moedas têm muito poucos eventos de alto impacto no calendário MQL5 (o AUD, por exemplo). Use “Impacto médio + alto” para elas.

O filtro apenas informa ao seu EA quando NÃO abrir novas operações. O gerenciamento das posições já abertas fica a cargo do seu EA.

Execute o script novamente de tempos em tempos para incluir novos eventos.

PRECISA DE AJUDA PARA INTEGRAR ISSO?

Se você não é programador e deseja integrar este filtro de notícias ao seu EA existente, ou se precisa de regras personalizadas de gestão de risco adaptadas às avaliações da sua empresa de trading, entre em contato diretamente comigo pelo meu perfil de freelancer no MQL5. Terei prazer em programá-lo para você!

Versão 1.00 – primeiro lançamento (exemplo de EA 1.01: desenha as janelas de notícias bloqueadas no gráfico). janelas bloqueadas pelo filtro, exibidas no modo visual do Testador de Estratégias Autoverificação do script: mesmo horário do evento em dólares americanos no inverno e no verão, após a correção do horário de verão Diário do Strategy Tester: janelas de notícias abrindo e fechando

Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/77617

CSetupLedger: a per-setup win rate ledger for Expert Advisors CSetupLedger: a per-setup win rate ledger for Expert Advisors

Avalia cada tipo de configuração do seu EA em seu próprio registro, em vez de agrupá-los em uma única curva de patrimônio líquido. Ele se reconstrói a partir do histórico de negociações da conta na inicialização, de modo que uma reinicialização não apague o registro. Exibe um limite inferior da pontuação de Wilson ao lado da taxa de ganhos bruta, para que uma sequência de três negociações lucrativas deixe de parecer uma vantagem.

Session Candle Counter: candles numbered from the cash open, DST aware Session Candle Counter: candles numbered from the cash open, DST aware

Numera cada vela do dia de negociação atual, a partir da abertura do mercado à vista em Frankfurt, Londres, Nova York ou Tóquio. O ponto de referência é convertido da hora local da bolsa para a hora do servidor da corretora, com ajuste automático para o horário de verão, de modo que a primeira vela após a abertura é sempre a número um, tanto no verão quanto no inverno.

Safe Risk Manager EA - Daily Loss, Break-Even and Trailing Stop Safe Risk Manager EA - Daily Loss, Break-Even and Trailing Stop

Painel de negociação educacional para conta de hedge no MT5, com cálculo de risco, proteção contra spread, bloqueio persistente de perdas diárias, ponto de equilíbrio e stops móveis.

Trade Reporter Lite - Telegram trade notifications Trade Reporter Lite - Telegram trade notifications

Envia para um chat do Telegram as posições abertas e fechadas no MT5: direção, símbolo, ponto de entrada, stop e meta em pips, lotes e, ao fechar, o resultado, pips, múltiplo de R e tempo de manutenção da posição. Fila de novas tentativas, compatível com reinicialização, nunca realiza negociações. Notificador gratuito de negociações para MT5 no Telegram e no Discord