[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 306
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
Un array di lunghezza "infinita" può essere dichiarato in un indicatore. Dichiaratelo e poi nel ciclo scrivete immediatamente i valori trovati nell'array. L'unica domanda è come trasferire la selezione necessaria all'Expert Advisor/Script? Ci sono alcuni strumenti, ma dobbiamo valutare la complessità. Forse sarebbe davvero più facile fare 2 esecuzioni - nella prima calcoliamo il numero di valori filtrati, poi cambiamo la dimensione dell'array, e nella seconda inseriamo i valori nell'array?
Grazie, ma la variante con l'indicatore non è adatta - prima di trasferire il campione ottenuto all'Expert Advisor, c'è un problema con il trasferimento delle condizioni del campione dall'Expert Advisor all'indicatore.
Dichiarare un array più grande della dimensione massima richiesta.
Esattamente :) Funzionerà se aumentiamo le dimensioni molte volte. Per esempio, sappiamo in anticipo che il numero di valori filtrati non può superare i mille. Dichiariamo un array di diverse migliaia di celle e abbiamo finito :)
Ma ci vorrà un po' della memoria necessaria. :(
Esattamente :) Funzionerà se aumentiamo le dimensioni molte volte. Per esempio, sappiamo in anticipo che il numero di valori filtrati non può superare i mille. Dichiariamo un array di diverse migliaia di celle e abbiamo finito :)
Ma ci vorrà un po' della memoria necessaria. :(
Se "sappiamo in anticipo che il numero di valori filtrati non può superare i mille", è sufficiente dichiarare un array con dimensione 1000.
https://docs.mql4.com/ru/math/MathPow no? Oppure le operazioni elementari sono una condizione del problema. Allora l'opzione http://bpascal.ru/download/desc/436.php se fai tutto a mano, allora implementa esponente e logaritmo con le tue funzioni.
Buon pomeriggio, qualche consiglio: il ciclo cerca i valori che soddisfano certe condizioni. I valori trovati sono scritti in un array. Non si sa in anticipo quanti valori si troveranno, quindi la dimensione dell'array da dichiarare è sconosciuta. Dal punto di vista del tempo e delle risorse, preferirei non fare due corse (in modo da poter contare il numero di valori trovati nella prima corsa, dichiarare l'array e scrivere i dati nell'array nella seconda). C'è un modo per ottenere il risultato richiesto in una sola esecuzione?
Se "sapete in anticipo che il numero di valori filtrati non può superare i mille", potete semplicemente dichiarare un array di dimensione 1000.
Ma che dire di un piano di emergenza in caso di forza maggiore? Scriverebbe del codice che informa di un errore e blocca l'Expert Advisor? Beh, una persona potrebbe non vederlo - beh, era solo al lavoro in quel momento.
Sì, infatti, c'è più di una soluzione al problema. Penso che la soluzione migliore sia quella suggerita da Zhunko - aumentare dinamicamente la dimensionalità dell'array all'interno del ciclo di filtraggio. Francamente parlando, sono contento di questa risposta. Non mi è mai venuto in mente :)
Penso che la migliore sarebbe ancora quella suggerita da Zhunko - aumentare dinamicamente la dimensionalità dell'array all'interno del ciclo di filtraggio. Onestamente, sono contento di questa risposta. Non mi è mai venuto in mente :)
La soluzione è davvero originale, dovremmo provarla. Ma quando si ridichiara l'array, i dati non saranno persi a causa della reinizializzazione?
Lo faccio spesso. Creo alcuni array iniziali. Poi (se necessario) lo massimizzo per qualche valore (uno non può, ci vuole troppo tempo per eseguire operazioni di array) e controllo solo la dimensione dell'array effettivamente riempito nel mio lavoro. Finora non ci sono stati problemi
Le operazioni di matrice richiedono troppo tempo per essere completate
Ci vuole molto tempo per eseguire tutte le operazioni dell'array o solo alcune?
Soprattutto il ridimensionamento di un array. Meglio farli il meno frequentemente possibile