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
Più di una volta ho visto situazioni in cui Terminal carica la CPU al 100% così tanto che non reagisce a nulla.
Poi ho guardato i log e ho visto che c'erano salti selvaggi di tick in OnTick. Tuttavia, se scrivo correttamente un EA, questa situazione disastrosa non influenzerà i risultati di trading. L'ho analizzato specificamente, tutto è chiaro.
Mi chiedo quanto siano diffusi i meccanismi di gestione dei ritardi nei prodotti di mercato. Non ho mai visto una volta menzionare la potenza della macchina per funzionare. Il ping minimo è un sì.
Dove li avete lanciati?
Se su VPS per 2-5 dollari, allora ritardi di decine e centinaia di millisecondi sono facilmente catturati in qualsiasi funzione WinAPI poco seria. Tutto rallenta a partire dal livello dell'hypervisor, trasformando una macchina virtuale in una proiezione di diapositive.
Spiegato sopra.
Non è GetMicrosecondsCount che sta rallentando, è il sistema operativo che sta quantificando le risorse della CPU per qualsiasi thread nel vostro VPS strangolato. Per qualsiasi funzione, qualsiasi azione, qualsiasi programma all'interno della vostra UPU.
Beh, nessuna shell della CPU può affettare e allocare le risorse in modo equo quando ha 20 (che è ancora rispettabile) sistemi operativi con 1500 thread di esecuzione per copia. Prendete 8-16 core e distribuiteli su 20 * 1.500 = 30.000 (trentamila tracce fisiche).
Nel mio caso (scatola virtuale con vin7 + 2 core + 16 GB di RAM su un hardware interamente mio con nient'altro in esecuzione), da dove vengono i 2-3 µs periodici?
Forum sul trading, sistemi di trading automatico e test di strategie di trading
MT5 e velocità in combattimento
Andrey Khatimlianskii, 2020.10.05 10:19
Non proprio un UPU, ma una macchina virtuale su hardware in affitto:
Nel mio caso (scatola virtuale con win7 + 2 core + 16GB di RAM sul proprio hardware con nient'altro che gira), da dove vengono i 2-3 µs periodici?
Questo è il prezzo della doppia virtualizzazione.
Soprattutto perché VirtualBox non è un hypervisor completo di tipo Hyper-V, ma vive sopra il vostro attuale sistema operativo desktop (anche Windows 7?) che ha una shell della CPU fatta su misura per un caso d'uso diverso.
Quindi, avete: Windows 7/10 -> VirtualBox -> Windows 7. Essenzialmente, due livelli di virtualizzazione, con il primo che non conosce le aspirazioni di VirtualBox, vedendolo solo come un programma normale. L'allocazione delle risorse della CPU (il threadsheduler) è chiaramente incasinata.
Dovrebbe essere: Hyper-V 2016/2019 -> Windows 2016/2019
Non è GetMicrosecondsCount che sta rallentando, è il sistema operativo che sta quantificando le risorse della CPU per qualsiasi thread nel vostro VPS strangolato. Per qualsiasi funzione, qualsiasi azione, qualsiasi programma all'interno della vostra UPU.
Credo che un argomento come questo faccia riflettere. Consulente.
Così lontano dal rallentare tutto. Ecco perché sono stato in grado di passare a winmm::timeBeginPeriod(1)+winmm::timeGetTime() in modo abbastanza innocuo, ottenendo velocità come GetTickCount, ma senza il temuto limite di 16 ms. Tuttavia, i produttori di mercato non sono autorizzati a farlo, poiché si tratta di una DLL. È improbabile che tu faccia una versione regolare al millisecondo.
La funzione MQL5 per minimizzare tutte le finestre e l'applicazione stessa è una grande idea. Lavoreremo su questo.
Ecco un'altra cosa.
terminale su un VPS, allora sarà fortemente contraria ad avere tutto bruscamente rollato. Lui stesso può e deve minimizzare windows se lascia la sessione RDP.
Ecco un esempio di quello che volevo dire.
Entrambi i server sono broker diversi, sono nella stessa zona, possono essere nella stessa posizione.
La scheda di servizio suggerisce che AMP si trovi nel Regno Unito.
E per Solo per qualche motivo offre in NL.
Perché? Se c'è un vpc più vicino.
Credo che troverete un argomento che vi farà riflettere. Consigliere.
Così lontano dal rallentare le cose. Ecco perché sono stato in grado di passare a winmm::timeBeginPeriod(1)+winmm::timeGetTime() abbastanza innocuamente, ottenendo velocità come GetTickCount, ma senza il temuto limite di 16ms. Tuttavia, i produttori di mercato non sono autorizzati a farlo, poiché si tratta di una DLL. È improbabile che tu faccia una versione regolare al millisecondo.
Beh, sei un maestro degli stress test di corsa senza correlazione o controllo di ragionevolezza.
Naturalmente la misurazione al microsecondo richiede risorse per poter misurare intervalli 1000 volte più piccoli di un millisecondo.
Se occasionalmente avete bisogno di misurare intervalli in modo super accurato, allora usate i microsecondi. E vi costerà 0 microsecondi.
Se sei impostato per chiamare milioni di volte l'auto-misura, probabilmente ti stai impegnando in un'auto-illusione.
Su un VPS soffocato, overcloccare il timer di sistema tramite timeBeginPeriod è rischioso. Aumenterete solo l'overhead della CPU:
Altrimenti, il sistema operativo avrebbe dovuto fare un accurato GetTickCount/GetTickCount64 molto tempo fa e rallegrarsi della precisione gratuita. Ma no, dovrete pagare per la precisione di questo timer.
Ecco un esempio di quello che volevo dire.
Entrambi i server sono broker diversi, sono nella stessa zona, possono essere nella stessa posizione.
La scheda di servizio suggerisce che AMP si trovi nel Regno Unito.
E per Solo per qualche motivo offre in NL.
Perché? Se c'è un PSTN più vicino.
Conosciamo i geopunti dei server, e qui le posizioni dei server broker sono costruite da basi GeoIP.
E spesso succede che l'informazione non corrisponde alla realtà. Perciò non dovremmo mai dare per scontato che la posizione del broker sia accurata.
Approfondiremo questo aspetto domani, perché abbiamo bisogno di ricontrollare e riesaminare manualmente tutto per rispondere alla domanda.
Questo è il prezzo della doppia virtualizzazione.
Soprattutto perché VirtualBox non è un hypervisor completo di tipo Hyper-V, ma vive sopra il vostro attuale sistema operativo desktop (anche Windows 7?) che ha una shell della CPU fatta su misura per un caso d'uso diverso.
Quindi, avete: Windows 7/10 -> VirtualBox -> Windows 7. Essenzialmente, due livelli di virtualizzazione, con il primo che non conosce le aspirazioni di VirtualBox, vedendolo solo come un programma normale. L'allocazione delle risorse della CPU (il threadsheduler) è chiaramente incasinata.
Dovrebbe essere: Hyper-V 2016/2019 -> Windows 2016/2019
No, ho dei virtualizzatori che girano su CentOS. Ma non sono competente per continuare questo dialogo.