Guarda come scaricare robot di trading gratuitamente
Ci trovi su Twitter!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Librerie

News Filter for the Strategy Tester (DST-corrected calendar export) - libreria per 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:
| Italian English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Türkçe
Visualizzazioni:
12
Valutazioni:
(3)
Pubblicato:
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
IL PROBLEMA

La maggior parte dei filtri di notizie si basa sul calendario economico di MQL5 (CalendarValueHistory). Tale calendario non è presente nello Strategy Tester, pertanto tali filtri non producono alcun effetto nei backtest: l’EA effettua operazioni proprio in concomitanza con i dati NFP, CPI o le decisioni sui tassi d’interesse, e il backtest non rispecchia più il comportamento reale. In uno dei miei test, un ordine in sospeso su XAUUSD è stato eseguito 5 minuti prima della pubblicazione del CPI statunitense e lo stop loss è stato attivato con uno slippage di 45 USD: una singola operazione ha comportato una perdita pari a 6,5 volte il rischio previsto.

Un secondo problema, meno noto: il terminale converte gli orari storici del calendario in base all’offset ATTUALE del server. Esportando i dati in estate su un broker con fuso orario GMT+2 / GMT+3, ogni evento invernale risulta ritardato di un’ora (NFP alle 16:30 invece che alle 15:30, ora del server). Un filtro basato su tali orari blocca l’ora errata per metà dell’anno.

LA SOLUZIONE - TRE FILE

NewsCalendarExport.mq5 (script) - esporta gli eventi in Terminal\Common\Files\NewsCalendar.csv e ricalcola ogni evento con l’offset del server della propria data. Al termine, esegue un autocontrollo: l’orario più frequente degli eventi relativi al dollaro USA deve essere identico sia in inverno che in estate.

NewsFilter.mqh (classe CNewsFilter) - un unico filtro sia per il trading in tempo reale che per i backtest. In tempo reale legge il calendario economico (interrogato al massimo una volta al minuto); nello Strategy Tester legge il file CSV. Vengono utilizzate solo le valute del simbolo (EURUSD: EUR + USD, XAUUSD: USD, CFD su indici quotati in USD: USD).

NewsFilter_Example.mq5 - un EA minimale che segnala l’inizio e la fine di una finestra di notizie e disegna le finestre bloccate sul grafico, in modo da poter vedere il filtro in funzione nella modalità visiva del tester.

COME UTILIZZARLO

Copiare NewsFilter.mqh in MQL5\Include, NewsCalendarExport.mq5 in MQL5\Scripts e NewsFilter_Example.mq5 in MQL5\Experts. Compilare lo script e l’esempio (il file .mqh viene compilato insieme a essi).

Esegui NewsCalendarExport una volta, su qualsiasi grafico di un terminale connesso. Nella scheda "Esperti" dovresti vedere: "OK: stesso orario in inverno e in estate".

Nel proprio EA, aggiungere il seguente codice:

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

int OnInit()
{
news.Init(_Symbol, 30, 30); // blocca 30 minuti prima e dopo ogni evento
return(INIT_SUCCEEDED);
}

void OnTick()
{
if(news.IsBlocked())
return; // nessuna nuova voce durante le notizie
// ... la tua logica di inserimento ...
}
Esegui il backtest come di consueto. Il registro mostra quanti eventi sono stati caricati per il simbolo.

DATI DI INPUT DELLO SCRIPT

Esporta eventi a partire da: data di inizio dell’esportazione.

Esporta anche gli eventi programmati con N giorni di anticipo: include gli eventi imminenti.

Valute: elenco separato da virgole (impostazione predefinita: USD, EUR, GBP, JPY, CAD, AUD, NZD, CHF).

Importanza: solo impatto elevato, oppure impatto medio + elevato.

Regola DST del server del broker: regola USA (predefinita, server = New York + 7h, la maggior parte dei broker GMT+2/+3), regola UE o nessun DST.

Nome del file: salvato in Terminal\Common\Files.

CNewsFilter::Init(symbol, minutesBefore, minutesAfter, mediumToo = false, csvFile = "NewsCalendar.csv")

NOTE E LIMITAZIONI

Testato su FTMO (GMT+2 / GMT+3, regola DST statunitense) e su IC Markets UE. Esempio di output: 5645 eventi esportati, 1897 dei quali spostati di un'ora; prima della correzione l'orario più frequente per l'USD era alle 16:30 in inverno e alle 15:30 in estate, dopo la correzione alle 15:30 in entrambe le stagioni.

Se l’autocontrollo mostra ancora orari diversi per l’inverno e l’estate, prova un’altra “Regola DST del server del broker”.

La cronologia del calendario MQL5 è limitata e dipende dal terminale; sul mio terminale inizia nel 2020, quindi i backtest più vecchi non conterranno eventi.

Vengono utilizzate solo le valute del simbolo; pertanto, per gli indici e le materie prime, è la valuta di quotazione a determinare a quali eventi si applica il calcolo.

Gli agenti remoti e cloud non possono leggere la cartella Common\Files: ottimizzare con agenti locali.

Alcune valute presentano pochissimi eventi ad alto impatto nel calendario MQL5 (ad esempio l’AUD). Per queste, utilizzare l’opzione “Impatto medio + alto”.

Il filtro indica al vostro EA solo quando NON aprire nuove operazioni. La gestione delle posizioni già aperte spetta al vostro EA.

Esegui nuovamente lo script di tanto in tanto per includere nuovi eventi.

HAI BISOGNO DI AIUTO PER INTEGRARLO?

Se non sei un programmatore e desideri integrare questo filtro di notizie nel tuo EA esistente, oppure se hai bisogno di regole di gestione del rischio personalizzate su misura per le valutazioni della tua società di trading, contattami direttamente tramite il mio profilo MQL5 Freelance. Sarò lieto di programmarlo per te!

Versione 1.00 - prima versione (esempio EA 1.01: disegna sul grafico le finestre delle notizie bloccate). finestre bloccate dal filtro, visualizzate nella modalità visiva dello Strategy Tester Autocontrollo dello script: stesso orario dell'evento in USD sia in inverno che in estate, dopo l'adeguamento all'ora legale Diario di Strategy Tester: apertura e chiusura delle finestre delle notizie

Tradotto dall’inglese da MetaQuotes Ltd.
Codice originale https://www.mql5.com/en/code/77617

Risk Lot Panel Risk Lot Panel

On-chart panel that turns a risk setting into a lot size and shows what the broker's volume step and minimum lot do to that risk. Display only - it never places, modifies or closes an order.

BacktestOverfitting: probability of backtest overfitting (PBO) of an optimization BacktestOverfitting: probability of backtest overfitting (PBO) of an optimization

Probability of Backtest Overfitting (PBO) of an MT5 optimization by combinatorially symmetric cross-validation. Every pass sends its daily results as a frame, and the PBO is computed when the optimization ends.

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

Pannello di trading didattico per un conto di hedging su MT5 con gestione del rischio, protezione dallo spread, blocco permanente delle perdite giornaliere, break-even e trailing stop.

ICT Model Tracker - Sweep, MSS and FVG Setups with Honest Statistics ICT Model Tracker - Sweep, MSS and FVG Setups with Honest Statistics

Detects the ICT model on closed bars (killzone liquidity sweep, MSS with displacement or inverted FVG, retrace entry with SL and TP) and follows every setup to its result with worst-case statistics. It never trades and never repaints; EA-ready buffers.