Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 767
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Non ho notato subito la risposta. Beh, ad essere onesti non ho capito bene cosa intendi dicendo che non c'è confusione.
Cosa intendete con "non importa a che oraStringToTime() conta i secondi trascorsi"?
La funzione essenzialmente prende una data del tutto sinistra(credo che la data del PC locale sia sinistra) e confronta l'ora corrente del server del broker con essa, perché non dovrebbe essere importante?
Dallo screenshot qui sopra, il commento dice che l'ora sul tuo PC locale è 1 ora avanti rispetto all'ora del broker, cioè lo spostamento GMT è maggiore. Se fosse X ore in meno, sarebbe critico, come nel caso di cui ho scritto venerdì.
Per quanto riguarda la fine del tempo di negoziazione. Immagino che per la funzioneStringToTime() non dovrebbeimportare quando il broker finisce il giorno o la settimana di trading...
Non ho altre spiegazioni.
Se sono le 11:40 a Mosca, allora sono passati XXX secondi dal 01.01.1970 all'ora attuale.
Quando sono le 11:40 a Londra, per esempio, il numero di secondi sarà lo stesso che a Mosca ora... Questo è solo perché il 01.01.1970 a Londra era molto più tardi dell'ora attuale. Non è il tempo inserito, ma solo il numero di secondi.
Provate a scrivere voi stessi una formula per calcolare il numero di secondi dal 01.01.1970 00:00:00.
Per un breve periodo di tempo si potrebbe usare questa formula. Dall'inizio del mese corrente passato 6*24*60*60 + 11*60*60 + 59*60 + il valore attuale dei secondi sull'orologio che state guardando.
Naturalmente, il confronto si basa sul numero di secondi che sono trascorsi dall'anno 70, ma questo numero di secondi tiene conto di tutto - data e ora.
Vi farò solo un esempio, che è essenzialmente una semplificazione di un problema che ho incontrato di recente.
Inizialmente avevo una soluzione del genere:
E ora la trovata: la stampa specificata nel codice apparirà venerdì, ma non dopo le 21:30, bensì alle 00:00 del primo tick.
Perché quando il server del mio broker ha ottenuto venerdì, sul mio PC locale era ancora giovedì, il timeshift è diverso.
Nel tester, tutto è OK e la stampa sarà rilasciata come dovrebbe essere venerdì dopo le 21:30. Non è confuso?
Naturalmente, il confronto si basa sul numero di secondi che sono trascorsi dall'anno 70, ma questo numero di secondi tiene conto di tutto - data e ora.
Vi farò solo un esempio, che è essenzialmente una semplificazione di un problema che ho incontrato di recente.
Inizialmente avevo una soluzione del genere:
E ora la trovata: la stampa specificata nel codice apparirà venerdì, ma non dopo le 21:30, bensì alle 00:00 del primo tick.
Perché quando il server del mio broker ha ottenuto venerdì, sul mio PC locale era ancora giovedì, il timeshift è diverso.
Nel tester, tutto è OK e la stampa sarà rilasciata come dovrebbe essere il venerdì dopo le 21:30. Non è confuso?
Certo che è confuso. È solo confusione nella tua testa. TimeToString("21:30") darà la data corrente dalle 21:30:00 alle 21:29:59 del giorno successivo. Correggo i commenti nel tuo codice.
E questo codice funzionerà correttamente
Ci sono due terminali MT4 sullo stesso portatile: uno con 4 cifre decimali e uno con 5 cifre decimali. Nello stesso tempo il traffico sul primo è 105/0 kb, sul secondo 3450/0 kb. La prima è intensiva per la CPU del 6%, la seconda del 39%. Qual è il problema? Ma questa è una norma?
AlexeyVik
Ho cambiato la data sul mio computer in 2000.
ha eseguito questo script:
e ho ottenuto questo:
quindi StringToTime() prende la data dal computer locale
AlexeyVik
Ho cambiato la data sul mio computer in 2000.
ha eseguito questo script:
e ho ottenuto questo:
Quindi StringToTime() prende la data dal computer locale
E allora? Lasciate che lo prenda dalla luna, purché impostiate il tempo "da e verso" passato XXX secondi e questo numero intero lo confrontiamo con il numero di secondi passati dal 01.01.1970 del tempo necessario.
È meglio controllare questa linea
dove avete avuto il problema. Oggi è venerdì.
Faresti meglio a controllare quella linea
dove avete avuto il problema. Oggi è venerdì.
Ho controllato, se il computer locale ha una data inferiore a quella del broker, allora le stampanti sono lì,
e se il computer locale ha una data maggiore di quella del broker, nessuna stampante.
Allo stesso tempo ho controllato il tempo che è sicuramente passato, cioè "11:30".
nel primo caso TimeCurrent() è confrontato con 2014.11.06 11:30, e nel secondo casocon 2014.11.0811:30
PS ha corretto l'evidenziato
La prima linea è chiara, il commento sulla seconda linea no.
Perché il venerdì è lontano quando è già arrivato? Dopo tutto, la seconda linea viene eseguita solo se è venerdì.
Ho controllato, se il computer locale ha una data inferiore a quella del broker, allora le stampanti ci sono,
e se la data sul computer locale è superiore a quella del broker, allora non ci sono stampanti.
cioè il tempo è passato, cioè "11:30".
nel primo caso TimeCurrent() è confrontato con 2014.11.06 11:30, e nel secondo casocon 2014.11.0811:30
PS ha corretto l'evidenziato
Bene, qui ho l'ora locale maggiore dell'ora del server di 1 ora.
Questo script
Emette i seguenti valori.
Prima il numero di secondi trascorsi dal 01.01.1970 all'ora specificata, e poi l'ora nella forma a cui siamo abituati.
Su questa base, per favore, spiegate cosa vi confonde di questi valori?
Sì, nel mio secondo commento pensavo a qualcos'altro.
да.
Salve.
C'è un compito come questo. (non può attaccarlo a un segno di spunta)
Se un ordine pendente si innesca {allora...}.
Nel mio EA, uso Terminal.mqh per calcolare gli ordini.
Terminale // Mas_Tip[0] aperto Comprare
// se il numero di ordini di acquistoè aumentato di 1
se (Mas_Tip[0]+1)
{
funzione
}
Tutto funziona. Ma si innesca ad ogni prossimo tick.
Come attaccare questo caso a una zecca? E poi confrontare il valore sul tick precedente e sul tick attuale.