Sono completamente perso - pagina 5

 
Non so cosa intendi per cast statico. Il problema del fuso orario è un dolore in mql. Con il vecchio mql4 l'approccio era quello di avere una variabile globale che l'utente impostava all'offset dei broker, è anche possibile ottenere il tempo gmt usando la nuova funzione timegmt ma ho visto alcuni rapporti che questo è buggato. Inoltre non sono sicuro di come si comporta durante il backtesting. L'intera cosa è un casino purtroppo. Ma non impossibile da codificare.
 
RaptorUK: OK, che fuso orario è un datetime di 0 ?
È il fuso orario del server del vostro broker. PERIODO. Qualsiasi datetime che ottieni da mt4 è il fuso orario del tuo server. (Escludendo TimeLocal() e il nuovo mt5 TimeGMT)
ydrol: Sono perplesso su come i progettisti di MQL4 siano arrivati a non imporre UTC per tutti i datetime,

Sei perplesso per qualcosa che ha più di dieci anni? Avete mai sentito parlare dell'Y2K? Se no, saresti solo perplesso sul perché le date sono state memorizzate con solo due cifre per anno, quindi dopo il 1999 era l'anno 1900 o 19100.

Probabilmente ti stai chiedendo perché gli indirizzi IP sono limitati a 4,2 miliardi in un mondo di 7 miliardi di persone. Qualcuno ha preso questa decisione alla DARPA quando si cercava di collegare i computer mainframe esistenti (decine) nel paese. Ora ci stiamo convertendo a IPv6 da IPv4.

Supera te stesso. Qui non siamo a Berger King, non si fa a modo tuo. Qualcuno ha preso una decisione che sembrava ragionevole in quel momento e ora non lo è più. Fatevene una ragione.

 
zortharg:

ydrol, per l'amore di tutto ciò che è sacro o altro, per favore dimmi - se lo sai - se static_cast può essere usato in mql4! È lo stesso che in C++? Questa pagina https://docs.mql4.com/basis/types/casting non ne parla mai, non lo trovo nei forum, non lo trovo da nessuna parte. Mi sto imbattendo in situazioni nel mio coding costantemente, non solo nel trasformare datetime in long, ma datetime in double, dove è inevitabile, quindi voglio farlo bene. Vale a dire che il programma capisce in quale parte della settimana si trova un campione, e lo enfatizza nei suoi calcoli di conseguenza - ma il tempo modulo il numero di secondi in una settimana è ancora una variabile di tipo datetime e a meno che non possa castarlo come qualcos'altro, è bloccato in quel modo. Ma ho bisogno di eseguire una funzione matematica su di essa, e che sia un doppio alla fine, vedete. Se non lo sapete, allora non preoccupatevi, ma per favore ditemi, se lo sapete, come dovrei digitare correttamente le cose in questo tipo di situazione.

C'è un'intera sezione nei documenti sui tipi di dati e la digitazione, premi F1 mentre usi l'editor?

 
WHRoeder:
È il fuso orario del server del vostro broker. PERIODO. Qualsiasi datetime che ottieni da mt4 è il fuso orario del tuo server. (Escludendo TimeLocal() e il nuovo mt5 TimeGMT)

Sei perplesso per qualcosa che ha più di dieci anni? Avete mai sentito parlare dell'Y2K? Se no, saresti solo perplesso sul perché le date sono state memorizzate con solo due cifre per anno, quindi dopo il 1999 era l'anno 1900 o 19100.

Probabilmente sei perplesso sul perché gli indirizzi IP sono limitati a 4,2 miliardi in un mondo di 7 miliardi di persone. Qualcuno ha preso questa decisione alla DARPA quando si cercava di collegare i computer mainframe esistenti (decine) nel paese. Ora ci stiamo convertendo a IPv6 da IPv4.

Supera te stesso. Qui non siamo a Berger King, non si fa a modo tuo. Qualcuno ha preso una decisione che sembrava ragionevole in quel momento e ora non lo è più. Fatevene una ragione.

No, superate voi stessi. Seriamente sono perplesso sul perché questa decisione sia stata presa quando è stata progettata. E sono perfettamente nel mio diritto di dirlo. La libertà di parola e tutto il resto. Tu non hai il diritto di cercare di sopprimere me più di quanto io non abbia il diritto di sopprimere te. Si basa su un formato orario stabilito che già usava utc per una ragione, ed è molto più vecchio di 10 anni, e ora mql4 ha problemi di fuso orario a causa di una decisione che francamente mi lascia perplesso. E mi è permesso dirlo. Puoi essere faceto sull'y2k quanto vuoi, non fa alcuna differenza. Lavoro nell'integrazione dei sistemi da quasi vent'anni e mi sembra una cattiva decisione di progettazione non aggiustarla a utc. Scusa se non riesci a gestire qualcun altro che esprime la sua opinione.
 
WHRoeder:
È il fuso orario del server del vostro broker. PERIODO. Qualsiasi datetime che ottenete da mt4 è il fuso orario del vostro server. (Escludendo TimeLocal() e il nuovo mt5 TimeGMT.
e GlobalVariableSet() che è il tempo gmt derivato dall'orologio del pc (non modellato)
 

Riporto a galla questo argomento solo perché attualmente sto migrando le mie funzioni TimeZone/Session in una classe ordinata di mql4++!

WHRoeder: Someone made a decision that seemed reasonable at the time and now isn't. Deal with it.

Me ne sto occupando, ma sono ancora perplesso sul perché devo farlo! Le migliori pratiche per la gestione delle informazioni sui fusi orari esistono da molto tempo, dal 1988. Ad esempio per ISO 8601

Ifusi orari in ISO 8601 sono rappresentati come ora locale (con la posizione non specificata), come UTC, o come un offset da UTC.

Se non viene data alcuna informazione sulla relazione UTC con una rappresentazione del tempo, si presume che il tempo sia in ora locale. Mentre può essere sicuro assumere l'ora locale quando si comunica nello stesso fuso orario, è ambiguo quando viene usato per comunicare attraverso diversi fusi orari.[Enfasi mia] Di solito è preferibile indicare un fuso orario (designatore di zona) usando la notazione dello standard".

Il bit sottolineato è noto nell'informatica da quasi 30 anni, se non di più. Il formato datetime di MQL è derivato da UnixTime (non hanno tirato fuori dal nulla la data magica 1/1/1970) quindi avrebbero dovuto esserne a conoscenza.

Sempre nel 1988, POSIX ha ratificato UnixTime

"Il comitato POSIX è stato influenzato da argomenti contro la complessità delle funzioni di libreria, e definì fermamente il tempo Unix in modo semplice in termini di elementi del tempo UTC. [Mia enfasi]

Gli architetti di sistema o gli sviluppatori che progettano sistemi client-server 10 anni fa (che non è nemmeno tanto tempo fa), che scambiano informazioni critiche sul tempo, avrebbero dovuto avere abbastanza informazioni per anticipare/evitare l'attuale pasticcio del fuso orario. I trader in un fuso orario, ricevono dati in un altro fuso orario, che a volte vogliono interpretare in un altro fuso orario (per esempio NY). Le uniche scuse sono:

- ignoranza

- bassa priorità (la confusione dei fusi orari va a vantaggio dei broker e non dei trader?)

- qualche considerazione/convinzione/requisito tecnico che non è ovvio per noi all'esterno. Forse disegnare grafici o qualcosa del genere? Anche se non è così difficile aggiungere/sottrarre un offset noto?

Tutto quanto sopra mi lascia perplesso come ho detto prima. Sento che non dovrei avere bisogno di scrivere codice per calcolare l'ora GMT durante il backtesting! Ma TimeGMT() e TimeLocal() non sono modellati correttamente, (sono entrambi impostati sul TZ non specifico derivato dai dati storici) quindi abbiamo bisogno di ruoli le nostre funzioni di fuso orario, per calcolare accuratamente UTC e quindi i tempi di inizio e fine sessione durante il backtesting.

PS L'ironia di essere detto di "superare me stesso" da WHRoeder non è persa :)