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
Per favore, ditemi come lavorare correttamente con un array i cui elementi sono strutture Mqlrates.
Questo è esattamente quello che voglio sapere:
MqlRates AdaptedRates[];
ArraySetAsSeries(AdaptedRates,true);
AdaptedRates[300].open=1;
Il debugger dà un errore - Invalid array access.
Capisco che usando questa forma di registrazione, possiamo solo leggere elementi di una struttura che è un elemento di un array.
La questione è come scrivere correttamente gli elementi della struttura. Non mi interessano tutti, l'importante è il prezzo di .open .high .low .close.
Mi scuso in anticipo per questa domanda probabilmente molto banale (non sono il programmatore), ma in aiuto non ho trovato la risposta. Sarò grato per qualsiasi aiuto.
Imposta la dimensione dell'array. ArrayResize
Per quanto ho capito, se definisco la dimensione, per esempio
:) Non si imposta l'array statico, ma si imposta la dimensione dell'array dinamico con ArrayResize().
Beh, tipo: ArrayResize(AdaptedRates,302); ecc.
State usando un array dinamico AdaptedRates[]. Per quanto mi ricordo, quando si lavora con gli array dinamici si dovrebbe impostare la loro dimensione usando la funzione ArrayResize(). E finora il compilatore va in crash sull'indice 300 specificato nella terza linea.
Questa è una citazione della guida.
Swan, Yedelkin grazie per una risposta così rapida.
Per quanto ho capito, se definisco una dimensione, per esempio
Sì.
MqlRates AdaptedRates[];//perciò lascia l'array dinamico
ArrayResize(AdaptedRates,302);//e imposta la giusta dimensione
:) Non si imposta un array statico, ma se ne imposta uno dinamico usando ArrayResize().
Beh, come ArrayResize(AdaptedRates,302); ecc.
Un'anomalia nel tester di strategia.
Si ferma improvvisamente e tutti gli agenti locali e remoti hanno finito e così si blocca.
Puoi dirmi come ricominciare, è un peccato ricominciare tutto da capo?Grazie per la spiegazione popolare, per quanto ho capito è auspicabile ArrayResize ai limiti richiesti prima di qualsiasi riferimento a una cella dell'array dinamico , lo proverò.
Nota. Solo per i buffer indicatori questo non sarà necessario. Il sottosistema esecutivo del terminale gestisce questo da solo.
Nota 2:ArrayResize() dovrebbe essere preferibilmente applicato solo quando è necessario cambiare la dimensione di un array dinamico, e non prima di qualsiasi accesso ai suoi elementi. Può darsi che ad un array dinamico venga data una dimensione una volta, e poi il programma acceda semplicemente ai suoi elementi.
Nota. Solo per i buffer indicatori questo non sarà necessario. Il sottosistema esecutivo del terminale gestisce questo da solo.
Nota 2:ArrayResize() dovrebbe preferibilmente essere applicato solo quando è necessario cambiare la dimensione di un array dinamico, e non prima di qualsiasi accesso ai suoi elementi. È possibile che un array dinamico venga dimensionato una volta e poi il programma acceda semplicemente ai suoi elementi.