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
Potrebbe esserci un'opzione più veloce. Ma un passo a sinistra nella condizione di ciò che deve essere contato, e la logica potrebbe dover cambiare notevolmente. Non è facile, in generale.
Non è caching, è indicizzazione. Ecco il caching (parte del codice):
Il codice è stato scritto frettolosamente e c'è molto da perfezionare, dato il frequente ArrayResize, ma aggiorna esattamente la cache, ordinata per Closed. Se vuoi cercare in seguito, usa il tuo indice. Ma dovete aggiornare solo una piccola parte ogni volta.
Non ricordo perché"12*3600" sia lì, non credo che tutte le offerte mi siano state rilasciate.
Non è una cache, è un indice.
Si prega di leggere attentamente.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
MT5 e la velocità in azione
fxsaber, 2020.08.28 21:10
Il puro MQL5 è 100 volte più lento del caching parziale (solo HistorySelectByPosition).
Ecco il caching (parte del codice):
Il codice è stato scritto frettolosamente e ha alcune cose da migliorare considerando le frequenti ArrayResize, ma aggiorna la cache ordinata per Closed. Se vuoi cercare in seguito, usa il tuo indice. Ma dovete aggiornare solo una piccola parte ogni volta.
Questo è solo un esempio di salvataggio della storia a testa alta senza gli espedienti del mondo reale. Anche in MT4Orders il caching parziale è fatto con un margine di cinque secondi...
Non ricordo perché c'è"12*3600", non credo che tutti gli scambi siano stati rilasciati a me.
Imposta sempre INT_MAX.
Architettonicamente, fare il caching completo richiede un sacco di pensieri. Ci sono molte insidie.
Non c'è davvero niente di complicato. Si può fare un campionamento con ore di anticipo, per esempio, per tutti gli ordini che potrebbero apparire nella storia in modo retroattivo (il che è molto strano, tra l'altro).
Questo è solo un esempio di salvataggio della storia a testa alta, senza espedienti in tempo reale. Anche in MT4Orders il caching parziale è fatto con un margine di cinque secondi...
Imposta sempre INT_MAX.
Non capisco il senso dello spostamento. Come se ci fosse un timestamp attuale, voglio ottenere relativo ad esso ed è strano che si debba specificare un tempo che non esiste. Vorrei una spiegazione logica.
La mia cache, tra l'altro, funziona su conti reali con 10k+ scambi.
E i principali freni nel codice finora sono le funzioni di rete.
Nell'ultima beta di 2588, la funzione HistorySelect è molto ben memorizzata e quasi sempre (tranne la prima volta) è libera.
Probabilmente faremo una serie di altri miglioramenti per il rilascio.
Come ho spiegato prima, in MT5 non c'è nessun costo aggiuntivo nella creazione automatica di istantanee di mercato per ogni EA prima di ogni evento, come veniva fatto in MT4. Questo riduce i ritardi e permette ai robot di correre più velocemente. Ogni sviluppatore chiede esattamente ciò di cui ha bisogno.
Quindi, dovreste capire chiaramente che l'approccio di "chiamare HistorySelect su tutta la storia, e poi fare immediatamente un'altra selezione di HistorySelectByPosition" ucciderà le cache della storia create in precedenza. Questo è un colpo al piede.
Dopo il rilascio inizieremo un grande lavoro sull'aggiunta di nuove funzioni MQL5 più efficienti e strutture dati native aperte per ordini e compravendite, in modo da poter semplificare e velocizzare l'algotrading.
Nell'ultima beta 2588, la funzione HistorySelect è molto ben memorizzata e quasi sempre (tranne la prima volta) è libera.
Risultato.
Su ogni zecca c'è un problema.
ZY ha installato Win10, LatencyMon mostra che tutto è a posto.
Dopo il rilascio inizieremo un sacco di lavoro per aggiungere nuove funzioni MQL5 più efficienti e aprire le strutture dati native di ordini e transazioni in modo che il trading algoritmico possa essere semplificato e accelerato.
MqlDeal, MqlOrder e MqlPosition sarebbero ottimi. Potrebbe anche diventare più semplice.
Al momento, vedo che nel 99% dei casi dovremmo usare solo HistorySelect(0, INT_MAX). Cerca di non usare le altre opzioni.
Se ho centinaia di migliaia di ordini nella mia storia, sarà anche più veloce che prendere la storia dell'ultimo minuto?
Quindi devo passare attraverso tutta questa storia? Non ha senso.
Se ho centinaia di migliaia di ordini nella mia storia, è anche più veloce che prendere la storia dell'ultimo minuto?
Ha lasciato solo la variante 0-INT_MAX nei robot da combattimento. Ho smesso di notare i ritardi.