Algoritmi, metodi di soluzione, confronto delle loro prestazioni - pagina 15
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
C'è un chiaro schema di ripetuta mancanza di rispetto per la comunità e un chiaro schema di provocazione.
Non leggerlo (i post di una persona in vari thread costruttivi) non è sempre possibile, dopo di che svilupparlo e dimenticarlo - ancora meno.
Trolling e spitting nelle mani di aiuto, il cui numero distingue notevolmente questa risorsa dal lato positivo.
Potrebbe essere sbagliato.
Controlla le tue emozioni per favore. Se non accetti il punto di vista di qualcun altro, puoi scegliere di non partecipare alla discussione. Nessuno vi obbliga a farlo.
Correggetemi, ma la lunghezza delle stringhe non è finita?
https://msdn.microsoft.com/ru-ru/library/sx08afx2.aspx
Non riesco a trovare questa limitazione per MQL5...
Una stringa è fondamentalmente un array uchar, con le sue caratteristiche speciali come la ripartizione automatica. Ecco perché la lunghezza della stringa non è limitata, almeno in modo esplicito, e nemmeno la dimensione dell'array. Ma una stringa molto lunga può potenzialmente esaurire la memoria, come evidenziato da un codice di errore specifico come ERR_STRING_RESIZE_ERROR (Memoria insufficiente per riallocare la stringa).
Una stringa è essenzialmente un array uchar, con i suoi vantaggi, come la ripartizione automatica. Quindi la lunghezza delle stringhe non è limitata, almeno esplicitamente, e nemmeno la dimensione dell'array. Ma una stringa molto lunga può potenzialmente esaurire la memoria, come evidenziato da un codice di errore specifico come ERR_STRING_RESIZE_ERROR (Non abbastanza memoria per riallocare la stringa).
Solo limitazione di memoria
1. cioè, la velocità dell'algoritmo non è importante. La soluzione è "concettualmente potente" e questo è sufficiente. Ok.
2. Quindi, basta collegarsi tramite il plug-in ed è tutto? Ok.
//--------------------------------------------------------------------
Se il criterio principale per valutare l'algoritmo è"concettualmente potente", allora ho perso.
Se il criterio principale per giudicare l'algoritmo - semplicità, velocità e convenienza - vinco.
A questo punto possiamo chiudere l'argomento.
Potete ancora accelerare e semplificare il "vostro algoritmo" (e ve ne parlano continuamente), se sostituite la stringa con due int[] della stessa dimensione e memorizzate il numero di transazione in uno, e nell'altro mago e cercate l'indice di mago necessario sulla ricerca corrispondente dell'array di transazioni. Sarà più veloce. Naturalmente, questo è un caso speciale che deriva dal tuo esempio.
Peter ha imparato gli array e ha capito che sono strumenti universali e potenti, poi ha cominciato a imparare le stringhe... Vi immaginate cosa succederà quando imparerà le strutture?)
Piotr sostituisce queste funzioni nel suo esempio:
E la velocità prenderà il modello :)
1. cioè, la velocità dell'algoritmo non è importante. La soluzione è "concettualmente potente" e questo è sufficiente. Ok.
2. Quindi, basta collegarsi tramite il plug-in ed è tutto? Ok.
//--------------------------------------------------------------------
Se il criterio principale per valutare l'algoritmo è"concettualmente potente", allora ho perso.
Se il criterio principale per valutare l'algoritmo - "Semplicità, velocità e convenienza " - vinco.
A questo punto possiamo chiudere l'argomento.
Solo un esempio mostra il più comune - cioè un sacco di informazioni extra, almeno il gestore di debug e definire sulla stampa è assente - altrimenti avrebbe aggiunto altre 300 linee.
Almeno l'intero codice è completamente....
la parte di codice da aggiungere e chiamare attraverso la libreria sarà molto più conveniente, meno codificata e più leggibile
Quando un ticker arriva con un magik - dovrebbe essere salvato e poi può essere inviato al ticker o al magik in una forma conveniente.
In effetti, la soluzione più veloce sarebbe quella di memorizzare tutte le informazioni nella struttura. Ma gli accessi saranno fatti attraverso l'indice di riferimento ordinato sammiva.
Questa è una soluzione di testa e quindi non è la più rapida. Sarebbe meglio farlo tramite HashMap. Tuttavia, non avremmo bisogno di una struttura nell'implementazione attuale, ma piuttosto di una classe ereditata da una certa interfaccia per descrivere i campi dei suoi ordini.
Puoi velocizzare e semplificare il "tuo algoritmo" (e continuano a parlartene), se sostituisci la stringa con due int[] della stessa dimensione e memorizzi il numero di transazione in uno e magik nell'altro e cerchi l'indice necessario di magik tramite l'enumerazione corrispondente dell'array di transazioni. Sarà più veloce. Naturalmente, questo è un caso speciale che deriva dal tuo esempio.
Questa è una proposta interessante e utile. Mantenere registri paralleli. L'ho fatto nelle mie altre soluzioni.
L'unica cosa è che non sappiamo il numero di ordini che l'EA piazzerà inizialmente. Quale dimensione dovremmo impostare per l'array int?
Ecco perché ho deciso di usare una stringa.
Questa è una soluzione di testa e quindi non è la più rapida. È meglio farlo tramite HashMap. Ma l'implementazione attuale non richiederebbe una struttura, ma una classe ereditata da una certa interfaccia per descrivere i campi dei suoi ordini.
Non ho trovato il filegenerico, sembra che questa sia una vecchia build. Quindi, come sarà fornito il principio di navigazione - qual è il codice sorgente?
È un suggerimento interessante e intelligente. Mantenere registri paralleli. L'ho fatto nelle mie altre soluzioni.
L'unica cosa che non sappiamo è il numero di ordini che verranno piazzati dall'Expert Advisor. Quale dimensione dovremmo impostare per l'array int?
Così ho deciso di prendere una corda.
Peter, c'è una grande funzione chiamata ArrayResize(). Permette di aumentare la dimensione di un array al momento dell'esecuzione del programma.