Ottenere il numero di posizioni decimali di qualsiasi numero (non solo le virgolette) bypassando Digits() in MQL4 e MQL5 - pagina 21
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
Sulla strada per ora. Potete provarlo voi stessi. L'idea è di usare le unioni con array di strutture di diverse dimensioni, per esempio 10, 100, 1000, 10000...
Questa idea è stata utilizzata. In questo caso
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Ottenere il numero di posizioni decimali di qualsiasi numero (non solo le virgolette) bypassando Digits() in MQL4 e MQL5
fxsaber, 2018.12.08 16:25
Ho provato diverse misure, naturalmente. Per qualche motivo non influenzano il risultato.
Questa idea è stata utilizzata. Così facendo
Puoi vedere tutto nel sourcebook.Sì, l'ho cercato. Strano che non abbia alcun effetto.
C'è una linea nel sorgente che controlla la dimensione
Potete cambiare questo valore e vedere il risultato. Se il valore è superiore a cento, la velocità non aumenta. È infatti facile da spiegare, perché tutti lo stesso numero di elementi sono copiati in totale. E i ritardi associati a piccole porzioni di copia sono eliminati.
Temo che siamo già bloccati nelle prestazioni massime.
Sì, sono d'accordo.
Ho provato - lo stesso risultato del tuo TicksToIntArray_fxsaber4/IntArrayToTicks_fxsaber4
Avete il codice sorgente, potete misurarlo voi stessi.
Quindi misuratelo. Sono abbastanza sicuro di no, quindi non vedo il motivo di perdere tempo né con l'articolo né con la misura.
Temo che siamo già al limite delle prestazioni.
Ad essere onesti, sono molto sorpreso che siano riusciti ad avvicinarsi così tanto a memcpy. Non può essere. C'è qualcosa che non va.
Temo che siamo già bloccati con le massime prestazioni.
Credo di capire un suo grave errore di calcolo.
Il vostro BANCH seleziona il minimo di 50 corse assolutamente identiche.
Ma il compilatore è un gran furbone e pigro. Non farà lo stesso lavoro 50 volte e ottimizzerà il codice. Ecco perché dovreste almeno cambiare gli array ad ogni esecuzione. Oppure si può sostituire 50 con 1 e aumentare il numero di test. Allora i risultati saranno molto diversi e più obiettivi.
Quando la differenza rispetto a memcpy è del 40% è più plausibile
Mi chiedo se comprimere l'array avrà un effetto. Un array di tick può essere compresso con un fattore di 10-12. L'unica domanda è se questo farà risparmiare il tempo risultante nell'invio e nella ricezione attraverso la risorsa.
Credo di capire un tuo gravissimo errore di calcolo.
La tua BANCH seleziona il minimo di 50 corse assolutamente identiche.
Ma il compilatore è un gran furbone e pigro. Non farà lo stesso lavoro 50 volte, ottimizzerà il codice.
Il codice è scritto in modo tale che farà esattamente quello che si suppone che faccia. Il compilatore non sarà in grado di influenzare la velocità di memcpy, ma i risultati dei suoi passaggi sono i seguenti
Un ciclo di un passaggio
Su 50
Il codice è scritto in modo tale che farà esattamente quello che volete che faccia. Il compilatore non è in grado di influenzare la velocità di memcpy, ma i risultati dei passaggi sono
Un ciclo di un passaggio.
Su 50.
Quindi misuratelo. Sono abbastanza sicuro di no, quindi non vedo il motivo di perdere tempo né con l'articolo né con la misura.
Non sono obbligato a farlo.