Unisciti alla nostra fan page
- Visualizzazioni:
- 48
- Valutazioni:
- Pubblicato:
-
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
Quando di recente ho iniziato a testare intensamente la funzionalità di CopyTicksRange(), ho riscontrato alcuni problemi sfavorevoli nella gestione dei tempi al millisecondo:
- In realtà volevo usare CDateTime, poiché è derivato da MqlTimeStruct e si possono modificare le diverse unità di tempo molto facilmente usando i metodi di incremento e decremento inclusi.
- Allo stesso tempo, avevo bisogno di un modo per tradurre agevolmente i millisecondi (secondi dal 1° gennaio 1970 per 1000 in formato ulong) avanti e indietro.
Qui ho incontrato la difficoltà che il numero di millisecondi, per esempio, è un numero molto vago che non dice molto sulla data esatta. Tuttavia, se si usa CDateTime o TimeStruct, tutte le unità di tempo sono facili da cambiare, ma il formato le distrugge e il risultato è molto poco chiaro. Questa classe CDateTimeMsc è stata creata per risolvere questo problema.
#include <Tools\DateTime.mqh> struct CDateTimeMsc: public CDateTime { public: int msc; // additional variable for msc storage datetime check_datetime; // per una comoda osservazione è necessario un piccolo overhead. //--- Metodi CDateTimeMsc ulong MscTime(void) {return(ulong(double(CDateTime::DateTime()) * 1000) + msc);} void MscTime(ulong a_msc_time); // input (datetime*1000) void Msc(int value); //bool IsNumInt(const int num); void MscDec(int delta = 1); void MscInc(int delta = 1); void SecTime(int a_int_time); ulong SecTime(void); void UpdateDateTime(); // aggiorna la variabile di osservazione check_datetime void DateTime(datetime a_datetime) {CDateTime::DateTime(a_datetime); UpdateDateTime();} datetime DateTime(void) {return(CDateTime::DateTime());} };
I nuovi metodi sono stati inseriti sotto l'ereditarietà della vecchia struttura.
Ora la classe, che in realtà è una struttura (vedere Strutture/Classi), può lavorare anche con i millisecondi, purché siano disponibili tali tempi esatti.
Inoltre, i metodi di incremento e decremento sono stati estesi alla proprietà msc.
Si potrebbe ora discutere se la variabile aggiuntiva "check_datetime" sia davvero necessaria, poiché crea un certo overhead (per alcuni è molto importante). Tuttavia, ho pensato che di solito non vengono utilizzati molti oggetti CDateTime, ma solo alcuni nei punti importanti in cui è necessario modificare unità di tempo come ore, minuti, secondi o giorni. Avevo anche qualche dubbio sul metodo UpDateTime(), che viene chiamato inutilmente a ogni incremento/decremento.
Tutto sommato, però, il fattore di gestione era l'obiettivo principale.
Il test
Non è più necessario interrogare l'ora con una variabile datetime aggiuntiva se si vuole conoscere la data esatta, ma si può semplicemente mettere sotto controllo la variabile "check_datetime": (TestEA vedi sopra)
L'ora al millisecondo è stata tradotta automaticamente nel formato datetime.
Tradotto dal tedesco da MetaQuotes Ltd.
Codice originale: https://www.mql5.com/de/code/48156
Il perfetto ZigZag
Zigzag ultraveloce secondo il principio più semplice possibile. Nessun vertice penzolante. Con supporto per la ricerca dei vertici ottimizzata nel tempo.
Corrected Average (CA)
Indicatore di media corretta di A.Uhl (noto anche come "media mobile ottimale").
La versione di Jolly Roger del consigliere
Basato sul partecipante Pirat al Campionato di Trading Automatico 2011.
Triangle Hedge
Apre una posizione di copertura virtuale in MetaTrader 5.
