Ho notato che il backtesting sembra essere limitato a circa 5 anni (dal 2017 in poi), anche se tutte le notizie sono scaricate correttamente (il file BIN è di 67mb). Esiste un limite al numero di eventi che MT5 può gestire in memoria per il backtesting?
mqtrader #: Ho notato che il backtesting sembra essere limitato a circa 5 anni(dal 2017 in poi), anche se tutte le notizie sono scaricate correttamente (il file BIN è di 67mb). Esiste un limite al numero di eventi che MT5 può gestire in memoria per il backtesting?
#property script_show_inputs#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/it/code/32430inputbool inFromFile = false;
#define CALENDAR_FILENAME "Calendar.bin"// Nome del file per la lettura/scrittura del Calendario.voidOnStart()
{
CALENDAR Calendar;
if (inFromFile)
Calendar.Load(CALENDAR_FILENAME);
else
{
Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, INT_MAX); // Ha preso l'intero calendario.
Calendar.Save(CALENDAR_FILENAME); // > > 65 MB.
}
Print(Calendar[0].ToString());
}
Risultato.
2007.01.0623:30 USD 1 CFTC Crude Oil Non-Commercial Net Positions(cftc-crude-oil-non-commercial-net-positions), United States(US) | 2.2 K | | 19.8 K |
Il primo evento nel database del calendario è gennaio 2007.
Mi sono appena accorto che i valori "Forecast" partono da 2017.05.05, motivo per cui il backtest può partire solo da quella data quando si esegue l'esempio. Altri valori possono essere utilizzati prima di tale data.
Grazie ancora una volta a fxsaber per questa utilissima libreria!
calendario degli eventi è prescritto significativamente in avanti nel futuro. Per questo motivo è possibile utilizzare un promemoria in MT4, dopo aver salvato un file dai dati di MT5 in anticipo (un mese prima, ad esempio).
Questo è ciò che faccio io per la MT4.
Procedura per lavorare con il calendario nella MT4.
1. Eseguire uno script in MT5 che salvi il calendario in un file comune.
#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/it/code/32430#define CALENDAR_FILENAME "Calendar.bin"// Nome del file per la lettura/scrittura del Calendario.voidOnStart()
{
CALENDAR Calendar;
Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, INT_MAX); // Ha preso l'intero calendario.
Calendar.Save(CALENDAR_FILENAME, true); // Calendario registrato. > 65 MB.
}
2. Caricare il calendario dal file comune nella MT4.
Di seguito è riportato un esempio di promemoria di eventi importanti sulle valute del simbolo corrente, lavorando in MT4.
#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/it/code/32430#define CALENDAR_FILENAME "Calendar.bin"// Nome del file per la lettura/scrittura del Calendario.intOnInit()
{
return(!EventSetTimer(1));
}
voidOnTimer()
{
static CALENDAR Calendar;
if (Calendar.GetAmount()) // Se il calendario non è vuoto.
{
staticint Pos = 0;
Pos = Calendar.GetPosAfter(TimeCurrent(), Pos); // Trovato Eventi futuri.Comment(Calendar.ToString(Pos, 5, true)); // Stampateli.
}
elseif (Calendar.Load(CALENDAR_FILENAME, true)) // Il calendario è stato caricato da un file.
{
string Currencies[2];
// Ottenere le valute del carattere corrente.
Currencies[0] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE);
Currencies[1] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT);
Calendar.FilterByCurrency(Currencies); // Lascia gli eventi sulle valute del simbolo.
Calendar.FilterByImportance(CALENDAR_IMPORTANCE_HIGH); // Solo gli eventi importanti sono stati lasciati indietro.
}
}
Dopo il lancio abbiamo un grafico aggiornato (conto alla rovescia) che ci ricorda gli eventi importanti sulle valute del simbolo direttamente in MT4.
Allo stesso modo, il calendario può funzionare in MT4-Tester.
Naturalmente, tali lavori dovrebbero essere sviluppati e corretti e descrivere la documentazione, l'intera comunità e non solo una persona. Ma per qualche motivo l'amministrazione stessa non dà tali disposizioni e non inserisce un link allo stesso GitHub, per una corretta organizzazione. Anche se ci sono progetti, il loro uso, quasi lo stesso GitHub.
Grazie! per il codice, è molto interessante leggere tale codice, onestamente: modelli di sovraccarico mancanza di commenti )) che cosa vale la creatività, 5 minuti pensato che cosa è? un'istanza di una classe o un array con i dati. In generale, tutto per lo sviluppo del cervello.
CALENDAR Calendar;Calendar[i].time
Il lavoro è certamente bello, si dovrebbe solo capire come funziona
Il vostro codice è difficile da capire, ma presumo che ci sia un ordinamento finale nel codice qui sopra, ma probabilmente il codice è in errore. Non capita spesso, ma quando si uniscono gli array, l'array finale presenta errori sotto forma di mancanza di ordinamento, perché gli elementi più recenti dell'array dovrebbero avere un periodo di tempo più lungo.
Questo non è stato fatto. Contattare uno specialista.
Ho notato che il backtesting sembra essere limitato a circa 5 anni(dal 2017 in poi), anche se tutte le notizie sono scaricate correttamente (il file BIN è di 67mb). Esiste un limite al numero di eventi che MT5 può gestire in memoria per il backtesting?
Risultato.
Il primo evento nel database del calendario è gennaio 2007.
calendario degli eventi è prescritto significativamente in avanti nel futuro. Per questo motivo è possibile utilizzare un promemoria in MT4, dopo aver salvato un file dai dati di MT5 in anticipo (un mese prima, ad esempio).
Questo è ciò che faccio io per la MT4.
Procedura per lavorare con il calendario nella MT4.
1. Eseguire uno script in MT5 che salvi il calendario in un file comune.
2. Caricare il calendario dal file comune nella MT4.
Di seguito è riportato un esempio di promemoria di eventi importanti sulle valute del simbolo corrente, lavorando in MT4.
Dopo il lancio abbiamo un grafico aggiornato (conto alla rovescia) che ci ricorda gli eventi importanti sulle valute del simbolo direttamente in MT4.
Allo stesso modo, il calendario può funzionare in MT4-Tester.
Continuo però a riscontrare un problema: eseguo il download standard del file del calendario
poi imposto un orario di inizio e ottengo gli eventi dopo questo orario in un ciclo per ogni valuta.
Cercate di incollare i sorgenti in modo che possano essere letti.
Grazie per le forti fatiche e le cose utili.
Naturalmente, tali lavori dovrebbero essere sviluppati e corretti e descrivere la documentazione, l'intera comunità e non solo una persona. Ma per qualche motivo l'amministrazione stessa non dà tali disposizioni e non inserisce un link allo stesso GitHub, per una corretta organizzazione. Anche se ci sono progetti, il loro uso, quasi lo stesso GitHub.
Grazie! per il codice, è molto interessante leggere tale codice, onestamente: modelli di sovraccarico mancanza di commenti )) che cosa vale la creatività, 5 minuti pensato che cosa è? un'istanza di una classe o un array con i dati. In generale, tutto per lo sviluppo del cervello. Il lavoro è certamente bello, si dovrebbe solo capire come funzionaSarebbe bello se la funzione ordinasse per tempo l'intero array dopo l'unione
Sarebbe bello se la funzione ordinasse per tempo l'intero array dopo l'unione
Fornire un esempio in cui non lo fa.
Mi faccia un esempio in cui questo non è il caso.
Il vostro codice è difficile da capire, ma presumo che ci sia un ordinamento finale nel codice qui sopra, ma probabilmente il codice è in errore. Non capita spesso, ma quando si uniscono gli array, l'array finale presenta errori sotto forma di mancanza di ordinamento, perché gli elementi più recenti dell'array dovrebbero avere un periodo di tempo più lungo.