Errori, bug, domande - pagina 1936
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
Non sono ancora pronto a mostrare il codice a causa di
Ma pronto a mostrare i risultati di profilazione da MT5 - come ho capito le funzioni di trading sono fuori questione.
Forse sto facendo qualcosa di sbagliato?Per l'ambiente OHLC uso le seguenti funzioni
Purtroppo state sbagliando tutto.
Invece di scrivere un codice MQL5 nativo ed efficiente, si usa un emulatore MQL4 terribilmente inefficiente che rallenta l'operazione decine di volte.
La cosa brutta è che non sai nemmeno cosa stai facendo, visto che fai domande sulla velocità.il risultato è il seguente codice
https://www.mql5.com/ru/code/18305
https://www.mql5.com/ru/code/18305
Grazie - ho visto questa libreria - la descrizione era confusa
Lamaggior parte del tempo viene spesa nella fase di inizializzazione. A meno che non abbiate intenzione di accedere più volte ai dati delle serie temporali - più di qualche migliaio di volte durante la formazione delle barre - dovreste considerare metodi alternativi.
Sfortunatamente, state sbagliando tutto.
Invece di scrivere un codice MQL5 nativo ed efficiente si usa un emulatore MQL4 terribilmente inefficiente, che rallenta l'operazione decine di volte.
La cosa brutta è che non capisci nemmeno cosa stai facendo, visto che fai domande sulla velocità.Naturalmente, stavo cercando una soluzione - come sostituire le funzioni MQL4 con MQL5, in particolare riferendosi alle serie temporali, e ho visto che questo è uno dei problemi incontrati dalla maggior parte delle persone che passano a MQL5.
Di conseguenza, ho trovato la soluzione sullo stesso sito, dove uno degli articoli raccomandava il mio metodo.
Personalmente, non capisco la ragione di escludere una buona e comoda funzione dal linguaggio.
Quindi la mia domanda è: qual è il modo corretto di ricevere informazioni, e come si può trarre vantaggio da MQL5?
Quindi la mia domanda è: come organizzare correttamente la ricezione dei dati per sentire i vantaggi di MQL5?
Usare le funzioni native e più produttive di MQL5, e non aggrapparsi al codice MQL4. Qualsiasi convertitore/splitter MQL4 -> MQL5 ha prestazioni decine di volte più lente, dal momento che cerca di emulare le microfunzioni ad accesso diretto da MQL4 tramite operazioni in blocco MQL5. E l'emulazione è fatta completamente senza ottimizzazione e caching.
Alla radice dell'uso di una particolare funzione (un po' di codice, incluso il codice di altre persone), ci dovrebbe essere la comprensione di ciò che esattamente viene fatto. Altrimenti si ottiene "Ho appena usato il codice di qualcun altro e la velocità è scesa! Non si può ottenere un buon risultato senza capire lo strumento e ciò che si sta facendo con esso.
Oltre a "come farlo bene", dovrei chiarire che il compito di "imparare a programmare" è estremamente difficile, non appena si supera il livello più elementare di operare (non anche di capire, cioè operare) con un linguaggio. Quindi non vedo altro modo per imparare se non leggere masse di articoli, documentazione, codice pronto in biblioteca e pratica obbligatoria per diversi anni.
Usate le funzioni native e più produttive del linguaggio MQL5 e non aggrappatevi al codice MQL4.
Alla base dell'uso di una particolare funzione (un pezzo di codice, incluso il codice di altre persone) dovrebbe esserci la comprensione di ciò che viene fatto. Altrimenti ottieni "Ho appena usato il codice di qualcun altro, guarda - la velocità è diminuita! Senza capire lo strumento e ciò che si sta facendo con esso, non si può ottenere un buon risultato.
Oltre a "come farlo bene", dovrei chiarire che il compito di "imparare a programmare" è estremamente difficile, una volta che si va oltre il livello più elementare di operare (nemmeno capire, ma operare) con il linguaggio. Ecco perché non vedo altro modo per imparare se non leggere articoli, documentazione, codice pronto in biblioteca e fare pratica per diversi anni.
Renat, hai guardato il codice base? Ho del codice con funzioni esattamente adattate dal linguaggio MQL4.
Ti sto chiedendo specificamente di scrivere come ottenere le giuste informazioni sull'ambiente - fare riferimento a libri astratti non è produttivo e rafforza solo la mia idea (probabilmente sbagliata) che questa è solo una scusa che non puoi controllare.
Dire che sono così stupido da non capire il significato di una funzione, che è copiare informazioni in un array, è come dire che la documentazione di accompagnamento di un linguaggio di programmazione è di basso livello. Non capisco il beneficio di questa copia da un array all'altro e perché una funzione che ottiene informazioni da un array come necessario è un codice terribile.
Naturalmente, stavo cercando una soluzione - come sostituire le funzioni MQL4 con MQL5, in particolare riferendosi alle serie temporali, e ho visto che questo era uno dei problemi incontrati dalla maggior parte delle persone che passano a MQL5.
Di conseguenza, ho trovato la soluzione sullo stesso sito, dove uno degli articoli raccomandava il mio metodo.
Personalmente, non capisco la ragione di escludere una buona e comoda funzione dal linguaggio.
Ecco perché vi chiedo: qual è il modo corretto di ricevere informazioni per farmi sentire i vantaggi di MQL5?
Forse ho cercato male? Qui hai tutto quello che ti serve invece di tutto questo codice in una sola copia
Forum sul trading, sistemi di trading automatico e test di strategia
Bug, bug, domande
Aleksey Vyazmikin, 2017.07.21 01:20
Grazie - l'ho corretto.
Di conseguenza, il codice è il seguente
Il tempo nel tester è aumentato - sono già stanco di aspettare :)
Per usarlo, devi solo capire qual è la struttura
Forse non stavo cercando abbastanza? Qui, in una sola copia si ottiene tutto il necessario invece di tutto questo codice
Per usarlo, tutto quello che dovete fare è capire qual è la struttura
Riceviamo la stessa cosa - infatti...
La variante che suggerisci si adatta, ifle:
- Il calcolo avviene solo all'apertura di una barra.
- Si sa in anticipo quante barre sono necessarie
Ho dei cicli nel mio codice, la quantità di calcolo può essere sconosciuta in anticipo.
E che senso ha copiare le informazioni per, diciamo, 300 barre ogni volta che lo apriamo, se sarebbe più ragionevole aggiungere semplicemente le informazioni su una nuova barra - perché lo sviluppatore non ha scelto questa strada?
Ma vi mostrerò la direzione:
Non ho alcun desiderio di comunicare in questo modo. Invece di cercare di capire quello che viene detto, di capire cosa succederà, si tirano fuori delle obiezioni incredibili.