Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1466
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
Buon pomeriggio. Scrivendo un Expert Advisor su Mql5 ho riscontrato un problema. C'è un array con i valori delle candele che aprono l'anno. Su ogni candela di questo array devo creare un array di n-candele, diciamo 30, per controllare i massimi e i minimi. Qualcosa di simile a un indicatore Zigzag.
Ho scritto questo codice, che dà un errore: "array out of range" ovvero i valori di massimo e minimo nell'intero array, ma non nel periodo di 30 candele richiesto.
Forse devo creare un altro array da controllare nelle funzioni ArrayMaximum() e ArrayMinimum(), ma sono confuso con i loop annidati e la dimensione dell'array.
Per favore, datemi un suggerimento.
if(i+30<=dimensione array(opens))
Ecco l' output al di fuori dell'array
Questo errore è dovuto a una disattenzione. La correzione non risolve il problema.
Come posso creare un array di 30 prezzi di apertura delle candele per cercare i massimi e i minimi in esso?
ArrayMaximum
ArrayMaximum
Restituisce indice del valore massimo, non del prezzo.
Non ho controllato, ma sembra essere il modo per ottenere gli indici dei minimi e dei massimi delle aperture delle candele (aperture).
Anche se è possibile ottenere il prezzo in una volta sola, ma non gli indici.
Non ho trovato da nessuna parte un esempio di ciclo mql con un passo. Questo semplifica l'intera questione.
Solo ChatGPT mi ha consigliato di scriverlo in questo modo:
Sperimenterò ulteriormente. Il codice funziona. Grazie.
L'errore "array out of range" si verifica se non si esegue ArrayResize.
Questo errore è dovuto a una disattenzione. La correzione non risolve il problema.
Come posso creare un array di 30 prezzi di apertura delle candele per cercare i massimi e i minimi in esso?
Qual è il problema? Dichiarare un array temp[], copiarvi 30 elementi e cercare l'indice del valore minimo/massimo. E se alla fine è inferiore a 30, copierà quanti ne sono rimasti. In questo caso, preferirei usare un ciclo while().
Qual è il problema? Dichiarare un array temp[], copiarvi 30 elementi e cercare l'indice del valore minimo/massimo. E se alla fine il valore è inferiore a 30, copierà quanti ne sono rimasti. In questo caso, preferirei usare un ciclo while().
Sì, si può fare. Non ho le idee chiare, quindi chiedo un consiglio.
Sì, potresti farlo. Non ho le idee chiare, quindi ti chiedo un consiglio.
In un array statico la dimensione è costante, non può essere modificata, in un array dinamico può essere modificata, ma la dimensione dell'array è impostata! Cioè la dimensione dell'array è nota e gli indici degli elementi da 0 alla fine. <= è fuori limite solo perché gli indici degli elementi da zero e l'indice dell'ultimo elemento sono inferiori di un'unità della dimensione dell'array.
Tutto è nelle vostre mani))))
In un array statico la dimensione è costante e non può essere modificata, in un array dinamico può essere modificata, ma la dimensione dell'array è impostata! Cioè la dimensione dell'array è nota e gli indici degli elementi sono da 0 alla fine. <= è fuori limite solo perché gli indici degli elementi partono da zero e l'indice dell'ultimo elemento è inferiore di un'unità della dimensione dell'array.
Tutto è nelle vostre mani))))
Che cosa intendedire ? Pensate che per copiare un certo numero di elementi da un array a un altro, un certo temp[], si debba impostare la dimensione dell'array prima della copia ArrayResize(temp, new_size); ?????
Sì, potresti farlo. Non ho le idee chiare, quindi ti chiedo un consiglio.
Non serve nemmeno un array temporaneo.
Questo codice
cerca al massimo i 15 elementi rimanenti, nonostante sia impostato per cercare 20 elementi.
Quindi è meglio usare il ciclo while() e non preoccuparsi del numero di elementi rimanenti dell'array.