spiegare
MQL4 usa TimeLocal(); TimeCurrent() che sono basati su tick per tick anche iTime....
Quello che voglio davvero è essere in grado di visualizzare sul mio grafico un orologio in tempo reale che si aggiornerà ogni secondo, probabilmente utilizzando l'orologio del mio computer o un server remoto.
TimeCurrent() non è basata sui tick.
Ma la funzione start è basata sul tick. Puoi usare un ciclo infinito in combinazione con sleep. c'è un articolo pubblicato qui su mql4.com che spiega vantaggi e soluzioni.
Dato che l'intero mt4 è basato sui tick non mi piace implementare una logica sensibile al tempo. In passato ho combinato questi due nei miei indicatori Custom Timeframe. E' solo un semplice lavoro ma potresti farti un'idea. Se vuoi un orologio aggiornato ogni secondo allora il mio lavoro è inutile per te. https://www.mql5.com/en/code/10080
//z
L'idea è quella di ottenere un orologio che si aggiorni ogni secondo, non solo chiamare le funzioni in Start() come il vostro programma, cioè
if(TimeCurrent()>(t+TimeInSeconds))
dalla tua spiegazione; posso usare un ciclo while nella funzione init() e poi quando lo chiamo nella funzione start(); sarà ancora tick per tick !
zzuegg; questo sarà un ciclo infinito e limiterà l'indicatore metatrader a fare una sola cosa... contare.
Quindi se scegliete di usare la funzione sleep in combinazione con il TimeCurrenet chiamato da una funzione per aggiungere un secondo ogni Sleep(1000); questo programma non sarà in grado di fare altro.
Conterà soltanto.... quindi vi limiterete ad una sola funzione.
e sì, a metatrader non piacciono i loop infiniti; va in crash come ho sperimentato ora lol, dovrebbe avere una pausa da qualche parte :)
Non siete limitati a una sola funzione. Potresti aver bisogno di alcuni ricalcoli per garantire un tempo di esecuzione di 1sec. ma in generale funziona.
Non l'ho mai fatto con gli indicatos, ma negli EA funziona.
Un'altra opzione è quella di utilizzare un programma esterno per inviare tick falsi al tuo terminale in un intervallo di 1sec. in questo modo hai garantito che la funzione start sia chiamata almeno una volta ogni secondo. In combinazione con il mio codice del Custom Timeframe Candles dovresti ottenere il tuo risultato.
while( !(IsTesting() || IsStopped()) ){ updateWatch(); RefreshRates(); if (...) doTrading(); Sleep(1000); }
Utilizzare MQL5
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Ho capito che la funzione Start() funziona tick per tick.
C'è un modo per usare i dati in tempo reale dall'orologio del computer e aggiornare ogni secondo? Non tick per tick ma ogni secondo?
Se è così, vi prego di darmi un aiuto.
grazie