ciao,
in anni ed anni di uso di Metatrader4 non avevo mai avuto bisogno di fare backtest con dati storici settimanali e mensili,
perciò quando una decina di giorni fa ho provato a fare un backtest di un EA che fa uso di Pivot settimanale e mensile,
ho scoperto che lo script PeriodConverter.mq4 (nativo di Metatrader4 con cui si ricavano tutti i timeframe dai dati storici M1)
calcola i timeframe settimanale e mensile in maniera quasi sempre errata, per le seguenti ragioni.
Timeframe settimanale
Eseguendo lo script PeriodConverter con la variabile di input Period multiplier factor = 10080,
lo script considera come giorno di inizio della settimana, NON la domenica come dovrebbe essere, ma il giorno della settimana precedente alla data della candela più antica dei dati storici,
e poi calcola l'inizio delle settimane successive sommando 7 giorni a questa data: quindi se i dati storici iniziano esattamente con una candela di lunedì, allora lo script calcola correttamente le candele settimanali, altrimenti sbaglia SEMPRE la data di avvio di tutte le candele settimanali.
Ad esempio se la candela M1 più antica inizia di venerdì, lo script calcola le candele settimanali considerando il giovedì la data di inizio della settimana,
calcolando quindi in maniera arbitraria le grandezze Open High Low e Close di tutte le candele settimanali.
Timeframe mensile
Eseguendo lo script PeriodConverter con la variabile di input Period multiplier factor = 43200,
lo script calcola l'inizio di ogni mese successivo, sommando 30 giorni al mese corrente, (il numero di 43200 corrisponde a 30 giorni in minuti), senza considerare che nella realtà un mese può avere 28, 29, 30 o 31 giorni!
Il risultato è che la data di inizio delle candele MENSILI sono quasi tutte sballate, perché approssimando ogni mese a 30 giorni, gli errori un mese dopo l'altro si sommano e le date di inizio mese sono tutte sbagliate.
Ho corretto lo script e l'ho chiamato PeriodConverter_OK_Weeks_Months.mq4
Lo script allegato calcola correttamente le candele settimanali e mensili, lasciando inalterato il codice, corretto, per il calcolo dei timeframe da M5 a Daily.
In pratica lo script allegato va a sostituire il nativo PeriodConverter, se uno vuole calcolare correttamente le candele settimanali e mensili, quando si usa
Period multiplier factor = 10080 per calcolare le candele settimanali
Period multiplier factor = 43200 per calcolare le candele mensili.
Di seguito l'effetto dell'uso del codice corretto PeriodConverter_OK_Weeks_Months.mq4 al posto di PeriodConverter.mq4 per la generazione di candele settimanali e mensili.
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Uso di PeriodConverter_OK_Weeks_Months per generare le candele SETTIMANALI: date CORRETTE di inizio settimana
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Uso di PeriodConverter per generare le candele settimanali: date sbagliate di inizio settimana
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Uso di PeriodConverter_OK_Weeks_Months per generare le candele MENSILI: date CORRETTE di inizio mese
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Uso di PeriodConverter per generare le candele MENSILI: date sbagliate di inizio mese
in anni ed anni di uso di Metatrader4 non avevo mai avuto bisogno di fare backtest con dati storici settimanali e mensili,
perciò quando una decina di giorni fa ho provato a fare un backtest di un EA che fa uso di Pivot settimanale e mensile,
ho scoperto che lo script PeriodConverter.mq4 (nativo di Metatrader4 con cui si ricavano tutti i timeframe dai dati storici M1)
calcola i timeframe settimanale e mensile in maniera quasi sempre errata, per le seguenti ragioni.
Timeframe settimanale
Eseguendo lo script PeriodConverter con la variabile di input Period multiplier factor = 10080,
lo script considera come giorno di inizio della settimana, NON la domenica come dovrebbe essere, ma il giorno della settimana precedente alla data della candela più antica dei dati storici,
e poi calcola l'inizio delle settimane successive sommando 7 giorni a questa data: quindi se i dati storici iniziano esattamente con una candela di lunedì, allora lo script calcola correttamente le candele settimanali, altrimenti sbaglia SEMPRE la data di avvio di tutte le candele settimanali.
Ad esempio se la candela M1 più antica inizia di venerdì, lo script calcola le candele settimanali considerando il giovedì la data di inizio della settimana,
calcolando quindi in maniera arbitraria le grandezze Open High Low e Close di tutte le candele settimanali.
Timeframe mensile
Eseguendo lo script PeriodConverter con la variabile di input Period multiplier factor = 43200,
lo script calcola l'inizio di ogni mese successivo, sommando 30 giorni al mese corrente, (il numero di 43200 corrisponde a 30 giorni in minuti), senza considerare che nella realtà un mese può avere 28, 29, 30 o 31 giorni!
Il risultato è che la data di inizio delle candele MENSILI sono quasi tutte sballate, perché approssimando ogni mese a 30 giorni, gli errori un mese dopo l'altro si sommano e le date di inizio mese sono tutte sbagliate.
Ho corretto lo script e l'ho chiamato PeriodConverter_OK_Weeks_Months.mq4
Lo script allegato calcola correttamente le candele settimanali e mensili, lasciando inalterato il codice, corretto, per il calcolo dei timeframe da M5 a Daily.
In pratica lo script allegato va a sostituire il nativo PeriodConverter, se uno vuole calcolare correttamente le candele settimanali e mensili, quando si usa
Period multiplier factor = 10080 per calcolare le candele settimanali
Period multiplier factor = 43200 per calcolare le candele mensili.
Di seguito l'effetto dell'uso del codice corretto PeriodConverter_OK_Weeks_Months.mq4 al posto di PeriodConverter.mq4 per la generazione di candele settimanali e mensili.
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Uso di PeriodConverter_OK_Weeks_Months per generare le candele SETTIMANALI: date CORRETTE di inizio settimana
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Uso di PeriodConverter per generare le candele settimanali: date sbagliate di inizio settimana
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Uso di PeriodConverter_OK_Weeks_Months per generare le candele MENSILI: date CORRETTE di inizio mese
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Uso di PeriodConverter per generare le candele MENSILI: date sbagliate di inizio mese
Comment