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
Fate attenzione con una tale affermazione. c'è sempre una ragione logica per eseguire sleep(). in Tester e anche negli indicatori.
Dai un'occhiata a cosa ti dà TimeSeconds(), poi pensa a cosa ti dà TimeCurrent() . . quale ti serve e perché?
Simon,
Restituisce la quantità di secondi trascorsi dall'inizio del minuto per il tempo specificato.
"Quale ti serve e perché?" - Simon
Io li userei entrambi di concerto, perché vanno di pari passo. - Nathan
TimeSeconds(datetime time) richiede una variabile posta all'interno delle sue parentesi graffe. TimeCurrent() è quindi posto all'interno di queste parentesi graffe, il che mi presenta una soluzione praticabile. Ho fatto questo b4 ma non capivo perché i valori di tempo restituiti sembravano saltare e mettere in pausa (a causa della mancanza di un tick/tick attivo).
Cosa ne dite di questo?
Grazie.
William,
Grazie per l'esposizione di questo argomento.
La mia interpretazione di "2." è che quando viene creato un tick, viene chiamata la funzione return. Poi la funzione Start() viene chiamata direttamente dopo aver chiamato la funzione return(0) che innesca l'esecuzione del programma ancora una volta. Questa interpretazione di questa parte del 2. è corretta?
"Se si calcola per 5 minuti", come posso essere sicuro che l'EA calcolerà per cinque minuti (anche se l'EA calcola per cinque minuti, non credo che questo garantisca la creazione di un tick. La probabilità di creazione di un tick è aumentata)?
Mi scuso, sto avendo difficoltà a leggere questo:
"Se calcoli per 5 minuti e restituisci il volume (conteggio dei tick) sulla prossima chiamata sarà +1. In un grafico live, se si calcola per 5 minuti, allora si perderanno 5 minuti di tick e sul M1 si saranno formate diverse nuove barre".
Molte grazie per la vostra risposta.
Non ho detto che non ci sono ragioni logiche per usare sleep(), ce ne sono molte, ho detto che non c'è ragione di aspettarsi che sleep() funzioni nello Strategy Tester. Funziona in un indicatore che gira su un grafico dello Strategy Tester, non lo so, forse sì. . funziona in un EA in esecuzione nello Strategy Tester, per quanto ne so, no. Un EA in esecuzione nello Strategy Tester può essere messo in pausa?
Simon,
"Un EA in esecuzione nello Strategy Tester può essere messo in pausa?
Potresti esprimere il tuo pensiero riguardo a questo metodo che useresti per "mettere in pausa" un EA nel tester?
Grazie.
William,
Quindi, un nuovo tick chiama la funzione start() in un EA, sì?
La mia domanda è questa: "Conosci qualche altro modo per chiamare la funzione start() oltre a quella di un nuovo tick? Possibilmente un'azione ripetitiva coerente per sostituire una chiamata a Start()?"
(Sto pensando, c'è un modo per tracciare coerentemente i secondi che non dipende dai tick)
"...Il prossimo tick viene creato quando lo fa".
Credo che quello che volevi scrivere fosse: "Alla creazione di un nuovo tick, viene poi eseguito Start()" ;)
Quindi, dici che un EA non può essere messo in pausa o dormire nel tester, sì?
Rivedrò il link che hai fornito, ma nel frattempo, puoi per favore spiegare questo metodo di "premere un pulsante di pausa per mettere in pausa il tester" dopo che un EA in fase di test ritorna dallo start?
Quando viene eseguito nel tester, questo metodo simulerebbe la performance dell'EA che viene messo in pausa per un segmento di tempo deciso in "tempo reale" su un conto live?
Capisco che il tester abbia delle limitazioni e che si debbano usare dei "work-around" per simulare le prestazioni in "tempo reale".
Molta gratitudine William.
Inoltre, ti dispiace se ti chiamo semplicemente Will? Mi risparmierebbe un secondo di tempo per ogni messaggio. Decidi tu.
Mi piace una caratteristica che il tuo EA possiede e questa è, "Volevo chiudere tutti gli ordini prima della fine della settimana (chiusura del mercato venerdì,) per evitare perdite se il mercato dovesse avere un gap oltre la fine della settimana, passando lo SL".
(Battendo le mani con gioia.) Hahaha! ;) Aggiungendo questa funzione al tuo EA, tagli le perdite inutili, ma questo è diverso da quello che cerco di fare attualmente. Attualmente sto cercando di tracciare i secondi di tempo in modo coerente senza il bisogno di tick per aggiornare i secondi. Desidero un mezzo diverso per aggiornare la funzione Start(), capito?
Grazie, grazie
Attualmente sto cercando di tracciare i secondi di tempo in modo coerente senza il bisogno di tick per aggiornare i secondi. Desidero un mezzo diverso per aggiornare la funzione Start(), capito?
Ho il sospetto che quello che stai cercando di fare sia una soluzione imperfetta al tuo problema a causa della mancanza di comprensione. Perché hai bisogno di conoscere il secondo da un secondo all'altro se il prezzo non è cambiato per 30 secondi? quando il prezzo cambia si ottiene un tick.
Una precisazione su quanto detto daWHRoeder, tutti i tick sono creati prima che lo Strategy Tester inizi a chiamarli/eseguirli, sono salvati in un file .fxt in tester/history, il ST chiama un primo tick e questo a sua volta causa l'esecuzione di start(), il tick successivo non viene chiamato/utilizzato finché start() non ha finito l'esecuzione, è molto importante capire questo. Solo quando start() ha finito, il prossimo tick sarà usato in modo che l'EA possa chiamare di nuovo start(). Quando la ST viene eseguita alla massima velocità, è la velocità alla quale start() viene eseguito che governa la velocità della ST, quindi una funzione start() molto semplice permetterà alla ST di correre molto velocemente, una funzione start() complessa farà sì che la ST corra più lentamente.
In una situazione Live/Demo se la funzione start() è molto complessa e impiega molto tempo per essere eseguita, forse qualche decimo di secondo, è possibile che il prossimo tick possa arrivare prima che start() abbia completato, in questa situazione il tick sarà mancato e non causerà la chiamata di start(). . . . questo NON può accadere con la ST.
Simon,
"Un EA in esecuzione nello Strategy Tester può essere messo in pausa?
Potresti esprimere il tuo pensiero su questo metodo che useresti per "mettere in pausa" un EA nel tester?
"Quale ti serve e perché? - Simone
Io userei entrambi gli e'm in concerto, perché vanno di pari passo. - Nathan
TimeSeconds(datetime time) richiede una variabile posta all'interno delle sue parentesi. TimeCurrent() è quindi posto all'interno di queste parentesi graffe, il che mi presenta una soluzione praticabile. Ho fatto questo b4 ma non capivo perché i valori di tempo restituiti sembravano saltare e mettere in pausa (a causa della mancanza di un tick/tick attivo).
Ho il sospetto che quello che stai cercando di fare sia una soluzione imperfetta al tuo problema a causa della mancanza di comprensione. Perché hai bisogno di sapere il secondo da un secondo all'altro se il prezzo non è cambiato per 30 secondi? Quando il prezzo cambia si ottiene un tick.
Una precisazione su quanto detto daWHRoeder, tutti i tick sono creati prima che lo Strategy Tester inizi a chiamarli/eseguirli, sono salvati in un file .fxt in tester/history, lo ST chiama un primo tick e questo a sua volta causa l'esecuzione di start(), il tick successivo non viene chiamato/utilizzato finché start() non ha finito di essere eseguito, è molto importante capire questo. Solo quando start() ha finito, il prossimo tick sarà usato in modo che l'EA possa chiamare di nuovo start(). Quando la ST viene eseguita alla massima velocità, è la velocità alla quale start() viene eseguito che governa la velocità della ST, quindi una funzione start() molto semplice permetterà alla ST di correre molto velocemente, una funzione start() complessa farà sì che la ST corra più lentamente.
In una situazione Live/Demo se la funzione start() è molto complessa e impiega molto tempo per essere eseguita, forse qualche decimo di secondo, è possibile che il prossimo tick possa arrivare prima che start() abbia completato, in questa situazione il tick sarà mancato e non causerà la chiamata di start(). . . . questo NON può accadere con l'ST.
Simon,
Ho il sospetto che quello che stai cercando di fare sia una soluzione imperfetta al tuo problema a causa della mancanza di comprensione. Perché hai bisogno di sapere il secondo da un secondo all'altro se il prezzo non è cambiato per 30 secondi? quando il prezzo cambia si ottiene un tick.
Ammetto di avere una mancanza di comprensione, ecco perché sto discutendo l'argomento nel forum MQL4. Desidero salvare il prezzo ogni volta che cambia (capisco come farlo). Inoltre, ho capito come salvare i prezzi ogni secondo in modo costante su un grafico LIVE/DEMO usando Sleep(). Obiettivo: Desidero tracciare costantemente i secondi (senza tracciare i secondi in base alla creazione di tick) fino a un massimo di un minuto o meno, quindi azzerare i secondi tracciati. Capisco perché desidero realizzare questo obiettivo. Il motivo è che ho bisogno di testare un EA nel tester e non posso usare Sleep() durante i test. Cosa fare, giusto? Raccogliere le opzioni.
Dettagli allora hm? ;)
Codifica un timer (utilizzabile in tester) in un EA. Questo timer conta su da 0-30 o giù da o 30-0. Mentre questo tempo conta su/giù, ho un vettore separato che segue l'azione del prezzo (un vettore di dimensioni molto grandi).
Le mie condizioni sono tali,
Se il prezzo viaggia x punti (entro 0-30 o 30-0 secondi), prendo una decisione.
Se il prezzo non viaggia x punti (entro 0-30 o 30-0 secondi), ArrayInitialize().
Cosa ne dite di questo Simon?
Grazie