Break-out di Londra - pagina 2

 

Sì, tutto a causa di IMO una decisione di progettazione sconcertante:) Quindi il tempo del server potrebbe anche non corrispondere a nessun orologio mondiale conosciuto nel corso di un anno.

Ho un metodo per determinare accuratamente l'ora GMT, specialmente durante il backtesting. Questo metodo sembra funzionare per i broker che

  • hanno cambiato TZ nel mezzo dei loro dati storici (Alpari),
  • o usano un DST non standard rispetto al loro fuso orario (FXCM) come sottolinea Tredici,

ma l'approccio mi sembra ancora un po' da hacker.

Si trattava di scaricare le quotazioni basate su GMT da altre fonti (dukascopy), e confrontare l'ora di ogni massimo giornaliero. Funziona bene per il backtesting, ma al momento sto scaricando manualmente i dati orari e filtrando i massimi (usando uno script perl).

Una volta che posso ottenere automaticamente le quotazioni GMT H1 da almeno due fonti, allora sarò a mio agio con questo approccio per i miei scopi.

 
SDC:

Come si potrebbe rendere MT4 più adeguato per fare questo? Non so voi, ma di sicuro non mi piacerebbe il compito di creare un calcolatore di offset GMT storico regionale. Ve lo immaginate? omg. Se mai lo farò, lo metterò sul mercato, è meglio che abbiate un bel libretto di assegni ;)

Un calcolatore storico GMT non è di per sé particolarmente difficile (il sistema operativo Windows contiene già tutti i dati necessari), ma non è il problema principale. Il problema è che puoi determinare l'offset attuale tra il tempo del broker e il GMT, ma non sai se/quando è cambiato. Usando l'esempio sopra, puoi vedere che il broker è attualmente su GMT+3 (assumendo che l'orologio del computer locale sia accurato...), ma non sai che il broker era su GMT+2 la settimana scorsa.

È molto probabile che il terminale client MT4 semplicemente non abbia queste informazioni.

Se le avesse, allora MT4 potrebbe fornire o i dati nudi che potreste elaborare voi stessi, o una funzione che vi permetta di dire "convertire qualsiasi data del broker nel passato in GMT". Una volta ottenuto questo, si potrebbe usare una tabella di ricerca (o l'API di Windows) per convertire l'ora GMT storica in un altro fuso orario come quello di Londra. Tuttavia, sarebbe preferibile che MT4 facesse anche questo per voi, ad esempio una coppia di funzioni come la seguente:

datetime ConvertToBrokerTime(datetime HistoricRegionalTime, SortSortOfTimeZoneInfo FromTimeZone);

datetime ConvertFromBrokerTime(datetime HistoricBrokerTime, SortSortOfTimeZoneInfo ToTimeZone);

 
ydrol:

Sì, tutto a causa di IMO una decisione di design sconcertante:)

(Presumo che la ragione per non fissare su UTC è in modo che i broker possano funzionare a EET dando cinque candele D1 a settimana, evitando una sesta piccola candela che porta a sottostime sistematiche di cose come D1 ATR sui broker che usano GMTZ).
 
gchrmt4:
(Suppongo che la ragione per non fissare su UTC è così che i broker possono correre a EET dando cinque candele D1 a settimana, evitando una sesta piccola candela che porta a sottostime sistematiche di cose come D1 ATR sui broker che usano GMTZ).


Avrei messo tutta quella roba nel client, ma rende il client più complicato in diversi punti :) Ma almeno tutte le variabili sono note.
 

Un altro approccio, secondo questa pagina ci sono solo 62 broker MT4? Quindi non sarebbe troppo difficile avere una tabella di ricerca per ogni broker e la loro definizione di tempo (se è basata su un fuso orario reale o su una combinazione di FXCM), e anche incorporare i cambiamenti storici (ala Alpari).

Questo è probabilmente l'approccio più robusto, e avrà solo bisogno di modifiche ogni volta che un broker decide che vuole confondere i suoi clienti un po' di più :)

 

gchrmt4:

[1] Il tempo del tuo server di GMT+3 può corrispondere a EEST nel senso che EEST è GMT+3 ma, secondo sia Wikipedia che worldclock.com, da nessuna parte dovrebbe essere ancora su EEST. Questo cambiamento non dovrebbe avvenire prima del 30 marzo. L'ora attuale a Cipro, Grecia, Israele ecc. è GMT+2.

[2] Quindi, quello che avete probabilmente è un broker che fa funzionare i suoi server a GMT+2, ma che passa all'ora legale nelle date statunitensi piuttosto che in quelle europee.

[3] Non è la stessa cosa di EET/EEST. (Ed è ancora meno prevedibile in termini di essere in grado di scrivere codice che regola automaticamente orari e date senza dover chiedere all'utente qualche tipo di input su quali impostazioni temporali il broker utilizza).

  1. Corretto.
  2. Corretto.
  3. EET è GMT+2, ma GMT+2 non è solo EET. Inoltre, EEST è GMT+3, ma GMT+3 non è solo EEST. Descrivendo il fuso orario del mio broker come EET/EEST, intendevo solo dedurre che era GMT+2 mentre era in orario standard e GMT+3 mentre era in ora legale, soprattutto perché questo thread discute la rottura di Londra. Mi scuso se la mia descrizione ha portato a qualche confusione :)

Se, quindi, il broker è recentemente passato da GMT+2 a GMT+3, piuttosto che essere in procinto di passare da GMT+3 a GMT+4, ciò che significa è che l'attuale offset tra l'ora del broker e GMT sarebbe sbagliato se si cercasse di applicarlo alle barre della settimana scorsa, prima del cambio dell'orologio americano. Questa settimana, le barre del broker sono 3 ore avanti rispetto a Londra. La settimana scorsa erano 2 ore avanti. (E, dal 30 marzo, saranno di nuovo 2 ore avanti.) Se prendi l'offset attuale di 3 ore e lo usi per cercare di ottenere il prezzo alle 8 di mattina ora di Londra in un giorno della settimana scorsa, otterrai la risposta sbagliata.

Un broker generalmente non cambia spesso il fuso orario del suo server, tranne che per regolare l'ora legale. Per la regolazione dell'ora legale, posso usare qualsiasi data/ora (dal 1987 (USA) e 1996 (UE) al 2020 e oltre) e calcolare, per gli USA e l'UE, il giorno in cui inizia l'ora legale e il giorno in cui finisce l'ora legale. Una volta che avete questo codice, tutto quello che dovete fare è aggiustare l'offset corrente al GMT per adattarlo all'ora legale per il tempo che state guardando.

Con TimeGMT(), che è nuovo nella build 600+, si calcola l'offset corrente del vostro broker rispetto al GMT. Ma non si può (per quanto ne so) determinare il fuso orario di un broker dal passato. Per esempio, ho avuto un broker che ha cambiato il fuso orario del suo server da GMT per il tempo standard a GMT+2 per il tempo standard. L'ho affrontato codificando un offset per il tempo prima del cambiamento perché tutti i dati della cronologia erano GMT, non GMT+2 (e non volevo modificare la cronologia per riflettere GMT+2). A questo proposito, credo che tu ed io siamo d'accordo. Finché un broker non cambia semplicemente il fuso orario (se non per adattarlo all'ora legale), dovresti essere in grado di calcolare l'offset rispetto a GMT e adattarlo all'ora legale.

Tutto quello che sto dicendo è che l'informazione che è possibile ottenere solo da MT4 stesso - l'offset attuale tra l'ora del broker e GMT - è inadeguata in pratica per fare cose come dire "calcola il prezzo di apertura a Londra mercoledì scorso".

Credo di non essere d'accordo con te. Finché il broker non cambia il fuso orario, tranne che per l'adeguamento all'ora legale, è possibile determinare l'offset rispetto al GMT, sia per il tempo corrente che per il tempo storico. Se la settimana scorsa, durante l'ora solare, il broker è GMT+2 e Londra è GMT, allora le 8 di Londra sarebbero le 10 del mattino del server. Il mese prossimo, durante l'ora legale, quando il broker è GMT+3 e Londra è GMT+1, le 8 del mattino di Londra corrisponderebbero alle 10 del mattino del server. Oggi, quando il broker è sull'ora legale e Londra è sull'ora standard, il broker è GMT+3 e Londra è GMT, quindi le 8 di Londra corrisponderebbero alle 11 dell'ora del server.

Se il broker è GMT-5 (EST) e Londra è GMT, le 8 di Londra sono le 3 del mattino, ora del server.

 
gchrmt4:

Un calcolatore storico GMT non è di per sé particolarmente difficile (il sistema operativo Windows contiene già tutti i dati necessari), ma non è il problema principale. Il problema è che puoi determinare l'offset attuale tra l'ora del broker e GMT, ma non sai se/quando è cambiato. Usando l'esempio sopra, puoi vedere che il broker è attualmente su GMT+3 (assumendo che l'orologio del computer locale sia accurato...), ma non sai che il broker era su GMT+2 la settimana scorsa.

È molto probabile che il terminale client MT4 semplicemente non abbia queste informazioni.

Se le avesse, allora MT4 potrebbe fornire o i dati nudi che potreste elaborare voi stessi, o una funzione che vi permetta di dire "convertire qualsiasi data del broker nel passato in GMT". Una volta ottenuto questo, si potrebbe usare una tabella di ricerca (o l'API di Windows) per convertire l'ora GMT storica in un altro fuso orario come quello di Londra. Tuttavia, sarebbe preferibile che MT4 facesse anche questo per voi, ad esempio una coppia di funzioni come la seguente:

datetime ConvertToBrokerTime(datetime HistoricRegionalTime, SortSortOfTimeZoneInfo FromTimeZone);

datetime ConvertFromBrokerTime(datetime HistoricBrokerTime, SortSortOfTimeZoneInfo ToTimeZone);


Sì, non sarebbe difficile se non ci fosse il DST, ma c'è lol... sarebbe un incubo da codificare. Le anomalie storiche sarebbero ovunque. Regioni che hanno cambiato il fuso orario che usano, regioni che hanno sperimentato di non usare affatto il DST e poi sono tornate al DST, regioni che rispettano il DST in alcuni posti ma non in altri, ci sarebbero così tante anomalie da prendere in considerazione, in tutto il mondo...
 
ydrol:

Un altro approccio, secondo questa pagina ci sono solo 62 broker MT4? Quindi non sarebbe troppo difficile avere una tabella di ricerca per ogni broker e la loro definizione di tempo (se è basata su un fuso orario reale o una combinazione ala FXCM), e anche incorporare i cambiamenti storici (ala Alpari).

62 è una sottostima, e i broker più grandi hanno server impostati su diversi fusi orari.
 

Thirteen:

Se la settimana scorsa, durante l'orario standard, il broker è GMT+2 e Londra è GMT,

Come, usando solo le informazioni fornite da MT4, sapete che il broker era su GMT+2 la settimana scorsa?
 

L'approccio di buon senso sarebbe per il server MT4 di utilizzare GMT tutto il tempo, ma si sa che non lo faranno.