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
Ok, lasciami riformulare. Entro mql è approssimativamente possibile, a seconda della velocità di clock del processore.
Che dire del PWM? -Un segnale a impulsi di frequenza costante e duty cycle variabile.
Non imposta una costante?
Prima di tutto, leggete cos'è la funzione WinAPI Sleep e cosa fa effettivamente
PS Windows non è un sistema in tempo reale
Per prima cosa, leggete cos'è la funzione WinAPI Sleep e cosa fa effettivamente
PS Windows non è un sistema in tempo reale
Cosa c'entra WinAPI Sleep?
Quando si parla di slittamento di microsecondi
Individualmente, per il vostro processore potete definire la frequenza del timer e calcolare il numero di ripetizioni.
Quindi, potete scrivere il vostro MicrosecondCount in mql, ma qual è il punto? Quello standard è sufficiente.
Mi imbarazza chiedere: cosa c'entra WinAPI Sleep?
Quando si parla di slittamento al microsecondo
Individualmente, per il vostro processore, potete definire la frequenza del timer e calcolare il numero di ripetizioni.
Quindi, potete scrivere il vostro MicrosecondCount in mql, ma qual è il punto? Quello standard è sufficiente.
Il vostro slittamento in sospeso senza commutazione di contesto consumerà il vostro core al 100%.
Questo è un metodo di programmazione inquietante. Dio non voglia che tale codice trapeli nel mercato.
Il vostro slittamento d'attesa senza commutazione di contesto consumerà il vostro core al 100%.
È un metodo di programmazione orribile. Dio non voglia che tale codice trapeli nel mercato.
E nessuno ha negato questo hardcore ))
Se mostri un esempio di commutazione di contesto, forse puoi migliorare?
Ecco il carico della CPU per µsSLEEP (µsRange), su VirtualBox con solo 2 core, 4 thread.
I minatori fanno peggio di così ))
Forum sul trading, sistemi di trading automatico e test di strategia
Biblioteche: Sequenza
fxsaber, 2020.10.13 12:54
Un esempio di un EA che ucciderà la maggior parte dei VPS.Lo sto eseguendo su alcuni grafici di diversi simboli. Ho usato questo script con inAmount = 5 per automatizzare questa azione.
Risultato.
Il terminale richiede più di 4 Gb di memoria per eseguire questi sei Expert Advisors. Si prega di notare che è necessario solo per l'inizializzazione, non per il funzionamento di questi EA. Immaginate di avviare il terminale con Expert Advisors che penzola. Se non si hanno a disposizione 4 Gb di RAM - è quasi un disastro.
Ora rimuoviamo il commento di questa linea nel codice sorgente.
Così, abbiamo abilitato l'inizializzazione sequenziale di Expert Advisors.
Guardiamo il risultato (dopo la ricompilazione).
All'inizio degli Expert Advisors siamo riusciti a ridurre il consumo di memoria del terminale di più di 2,5 Gb. La probabilità di crash dei VPS (e di computer domestici deboli) è diminuita significativamente.
Ecco come appaiono entrambe le corse nella dinamica.
Il lancio sequenziale ha allungato l'inizializzazione complessiva nel tempo, ma è riuscito a mantenere il terminale dal consumare enormi quantità di RAM.
Igrafici superiore e inferiore mostrano chiaramente il processo di inizializzazione parallela (picco alto a sinistra) e sei inizializzazioni consecutive (sei picchi centrali).
SZY Durante gli esperimenti è venuta alla luce una spiacevole sfumatura con Sleep - vedi codice sorgente.
Chiedo di permettere in qualche modo di liberare la memoria con la forza dopo aver usato CopyTicks. Non per creare queste stampelle del sonno.
Si prega di consigliare il modo più economico per richiedere la cronologia delle zecche ad un dato intervallo.
mi sembra che tu non stia cercando un economico, ma un modo per liberare rapidamente la memoria
come opzione da controllare:
- avvolgere l'array dinamico MqlTick Ticks[] nella classe e creare un oggetto con new (cioè anche un oggetto dinamico), cancellarlo quando non serve
- lo stesso, ma con struttura, ma in ambito locale ( o funzione o blocco locale { } - o ciclo con una iterazione ? ), le strutture non funzionano bene come le classi - ho riscritto la maggior parte del mio codice EA abbandonando le classi e sostituendole con strutture dati, la velocità di ottimizzazione è aumentata significativamente - forse è un effetto soggettivo - forse le nuove build sono più veloci
- provare ad aggiungere ArrayFree() al distruttore
Non credo che tu stia cercando uno economico, ma un modo per liberare rapidamente la memoria
Il terminale non libera la memoria. Le variabili MQL non c'entrano niente.
Il terminale non libera la memoria. Le variabili MQL non c'entrano niente.
Cosa succede se si forza la dimensione = 1?
cosa succede se lo fai^
e se
Dopo aver chiamato CopyTicks, il terminale tiene tutti i dati in memoria per alcuni secondi. Solo nel caso in cui qualcuno voglia rileggere un pezzo di storia della zecca.
Cioè, la quantità di memoria così consumata dal terminale non dipende dalla dimensione delle variabili MQL.
Il compito è quello di forzare il terminale a rilasciare la memoria.