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
Codice di prova:
Questo codice mostra che l'autore non capisce il problema.
Questo EA ottiene il prezzo Bid del simbolo corrente in due modi. Per ognuno di essi, somma il tempo di esecuzione dei casi di esecuzione lunga. E poi mostra la differenza tra i due.
Caricato 6/8 agenti. E ho eseguito questo EA su sei grafici (diversi simboli) sul demoRannForex-Server. Risultato.
Abbiamo una prova completa che il tempo di esecuzione totale(TimeBid1) di SYMBOL_BID è disastrosamente perdente (TimeBid2) rispetto all'alternativa che ottiene il prezzo Bid.
Questa soluzione di tipo stampella per ottenere i prezzi attuali batte le prestazioni della funzione principale MQL5 stessa. Sei d'accordo con questa prova?
Vorrei aver pensato prima a questa stampella eloquente.
ZZZY Affinché un EA funzioni, è necessario consentire il trading algo. Pertanto, eseguitelo solo su conti demo.
Questo EA ottiene il prezzo Bid del simbolo corrente in due modi.
POSITION_PRICE_CURRENT è scattato?
Allora con cosa ci confrontiamo? Ottenere l'ultimo prezzo memorizzato (quando?) con l'ultimo prezzo noto al terminale?
Bene e circa 6 nuclei su 8 l'hanno detto chiaramente. Perché questi test?
Questo codice mostra che l'autore non capisce il problema.
La tua affermazione dimostra che non vuoi vedere l'ovvio.
Questo codice mostra che non c'è nessuna "frenata di SymbolInfoTick".
Su un hardware più o meno moderno, il tempo di esecuzione di SymbolInfoTick è inferiore a 1 MICROSecondo.
Questo Expert Advisor ottiene il prezzo Bid del simbolo corrente in due modi. Per ognuno di essi, somma il tempo di esecuzione dei casi di esecuzione lunga. E poi mostra la differenza tra loro.
Caricato 6/8 agenti. E ho eseguito questo EA su sei grafici (diversi simboli) sul demoRannForex-Server. Risultato.
Abbiamo una prova completa che il tempo di esecuzione totale(TimeBid1) di SYMBOL_BID è disastrosamente perdente (TimeBid2) rispetto all'alternativa che ottiene il prezzo Bid.
Questa soluzione di tipo stampella per ottenere i prezzi attuali batte le prestazioni della funzione principale MQL5 stessa. Sei d'accordo con questa prova?
Vorrei aver pensato prima a questa stampella eloquente.
ZZZY Affinché un EA funzioni, è necessario consentire il trading algo. Pertanto, può essere utile eseguirlo solo su conti demo.
No, non è una prova. Un test assolutamente disgustoso che non può essere preso sul serio.
Non mi prenderò nemmeno la briga di entrare nei dettagli, il fatto che stai di nuovo cronometrando una singola chiamata usando GetMicrosecondCount(), e di nuovo con "Loaded 6/8 Agents" su una CPU a 4 kernel in background.
Ho già mostrato chiaramente sopra che è possibile trovare freni immaginari nell'esecuzione "x++" anche in questo modo.
La tua affermazione sui "freni SymbolInfoTick" è elementarmente controllata e confutata dal mio codice, molto semplice e ovvio.
L'implementazione originale di SymbolInfoTick, anche se abbastanza veloce, permetteva sporadici picchi di tempo di esecuzione su singoli thread sotto un carico stressante di multithreading.
Nelle ultime build, non ha nemmeno questo inconveniente.
È incredibile che continuiate a discutere con qualcuno che sa esattamente di cosa sta parlando, cioè vede le implementazioni e le può profilare in diverse modalità.
"Discutiamo del gusto delle ostriche e delle noci di cocco con chi le ha mangiate".
POSITION_PRICE_CURRENT è scattato?
No. MT4Orders è usato solo per piazzare una posizione.
Allora con cosa ci confrontiamo? Ottenere l'ultimo prezzo salvato (quando?) vs. ottenere l'ultimo prezzo noto al terminale?
Confrontiamo la durata del prezzo ottenuto da Market Watch e la posizione. I prezzi naturalmente coincidono.
E circa 6 nuclei su 8 hanno detto direttamente. Perché questi test?
Solo per far vedere anche ad un cieco che c'è un problema. Non ha senso, quando Bid-price non rallenta tramite la posizione e SymbolInfoTick è terribilmente in ritardo.
Sento che questo MQ-wall non può essere rotto senza il supporto degli utenti del forum. Il codice è breve, i professionisti dovrebbero essere in grado di afferrarlo rapidamente. Non ci sono difetti. Si dimostra chiaramente che i prezzi attraverso le posizioni si ottengono molto più velocemente che da Market Watch. Come i MQ non vedono l'ovvio - non capisco.
La tua affermazione dimostra che non vuoi vedere l'ovvio.
Questo codice mostra che non c'è alcuna "frenata di SymbolInfoTick".
Su un hardware più o meno moderno, il tempo di esecuzione di SymbolInfoTick non supera 1 MICROsecondo.
No, non è una prova. Un test assolutamente disordinato che non può essere preso sul serio.
Non mi prenderò nemmeno la briga di entrare nei dettagli, il fatto che state ancora una volta misurando il tempo di una singola chiamata di GetMicrosecondCount(), e di nuovo sullo sfondo di "Loaded 6/8 Agents" su una CPU a 4 core è sufficiente.
Ho già mostrato chiaramente sopra che è possibile trovare freni immaginari nell'esecuzione "x++" anche in questo modo.
La tua affermazione sui "freni SymbolInfoTick" è elementarmente controllata e confutata dal mio codice, molto semplice e ovvio.
L'implementazione originale di SymbolInfoTick, anche se abbastanza veloce, permetteva sporadici picchi di tempo di esecuzione su singoli thread sotto un carico stressante di multithreading.
Nelle ultime build, non ha nemmeno questo inconveniente.
È incredibile che continuiate a discutere con qualcuno che sa esattamente di cosa sta parlando, cioè vede le implementazioni e le può profilare in diversi modi.
"Discutiamo del gusto delle ostriche e delle noci di cocco con chi le ha mangiate".
Non hai guardato il codice. Non credo nell'incompetenza.
È una condizione in cui conta solo se l'esecuzione è durata più di 100µs. Se pensi che sia un valore piccolo, allungalo di un ordine di grandezza. L'effetto è lo stesso.
Le due funzioni confrontate sono in condizioni assolutamente uguali. Uno è alla fine frenato, l'altro no. Date un'altra occhiata da vicino a ciò che misura il codice.
Al momento, la sostituzione di SymbolInfoTick negli EA di combattimento con la stampella suggerita rimuove quasi tutti i ritardi associati all'ottenimento dei prezzi correnti. È sconclusionato, ma purtroppo è così.
HI Notate il while in OnTick. È fatto deliberatamente per catturare le zecche che sono arrivate dopo che OnTick è stato accettato. Il codice non è stato scritto di punto in bianco. Non è un ciclo forzato completamente artificiale che misura la temperatura media dell'ospedale in condizioni ideali.
Sento che questo muro di MQ non passerà senza il sostegno dei membri del forum. Il codice è breve, i professionisti dovrebbero essere in grado di capirlo rapidamente. Non ci sono difetti. Si dimostra chiaramente che i prezzi attraverso le posizioni sono ottenuti molto più velocemente che da Market Watch. Come MQ non riesca a vedere l'ovvio - non lo capisco.
Non ci sono errori nel codice, quindi SymbolInfoTick è più lento che ottenere il prezzo di una posizione aperta
Bella mossa ottenere il prezzo dalla posizione, non avrei mai immaginato o realizzato che ci potesse essere una tale differenzaSolo per far capire anche a un cieco che c'è un problema. Beh, non ha senso quando il prezzo Bid attraverso la posizione non è lento, ma SymbolInfoTick è laggoso in modo terribile.
Prova a testare SymbolInfoTick quando c'è un solo simbolo nella panoramica del mercato e quando ci sono decine di simboli, ma chiedi un solo simbolo - come nel tuo esempio
è molto probabile che il server abbia traffico compresso e che SymbolInfoTick abbia questo ritardo intermittente quando decomprime i dati
cioè quando ci sono molti personaggi, ci saranno cali ancora più frequenti o più profondi nel tempo di prova
quindi se questo si dimostra vero, allora rifare tutta l'architettura.... piacere discutibile
provare a testare SymbolInfoTick quando c'è un solo simbolo nella panoramica del mercato e quando ci sono decine di simboli, ma chiedere un solo strumento - come nel tuo esempio
c'è un'alta probabilità che il server stia inviando traffico compresso e che SymbolInfoTick stia sperimentando ritardi periodici quando i dati vengono decompressi
cioè quando ci sono molti simboli, ci saranno cali ancora più frequenti o più profondi nel tempo di prova.
Questa ipotesi si riferisce al caso in cui i prezzi nel Market Watch sono in ritardo rispetto ai prezzi di tumblr (e viceversa). Ma finora stiamo parlando solo della frenata di SymbolInfoTick stesso all'interno del terminale, senza toccare la questione della rilevanza del prezzo.
Le due funzioni confrontate si trovano esattamente nelle stesse condizioni.
Almeno GetBid viene chiamato dopo SymbolInfoDouble. Se li scambiamo, il risultato sarà lo stesso?
Qualcosa mi dice chePOSITION_PRICE_CURRENT prende il prezzo memorizzato e non il prezzo fresco.
Poi di nuovo, non vedo il senso di testare su una CPU caricata all'80%. Stiamo testando le prestazioni della CPU e l'allocazione delle risorse da parte del windup, non le caratteristiche di cui abbiamo bisogno.
Almeno GetBid viene chiamato dopo SymbolInfoDouble. Se lo scambiate, il risultato sarà lo stesso?
Lo stavo sperimentando prima della pubblicazione. No, non influisce sul risultato.
Qualcosa mi dice chePOSITION_PRICE_CURRENT prende il prezzo memorizzato e non il prezzo fresco.
Questo è il punto, i programmi MQL hanno bisogno dell'ultimo prezzo che è arrivato al terminale, non di qualcos'altro. Quando un tick entra in Terminal, aggiorna automaticamente tutte le tabelle di posizione/ordine.
Bene e di nuovo, non vedo il senso dei test su una CPU caricata all'80%. Stiamo testando le prestazioni della CPU e l'allocazione delle risorse tramite il windup, non le caratteristiche di cui abbiamo bisogno.
La condizione principale è che l'ambiente sia identico per entrambe le funzioni. Il carico della CPU è il fattore più eclatante per la visibilità delle discrepanze.
Venti EAs in parallelo possono a volte fare una chiamata SymbolInfoTick allo stesso tempo, quindi c'è una raffica di millisecondi di carico e lag. Ho solo suggerito di farlo esplicitamente in modo che il problema si noti immediatamente.
Di nuovo, le condizioni di prova sono identiche per entrambe le funzioni. Fatto.
Forum sul trading, sistemi di trading automatico e test di strategia
MT5 e la velocità in azione
fxsaber, 2020.10.26 17:53
Al momento, la sostituzione di SymbolInfoTick negli EA di combattimento con la stampella proposta rimuove quasi tutti i freni associati all'ottenimento dei prezzi correnti. È delirante, ma purtroppo è così.