[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 131
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
Continuazione del tema
Precedente qui https://www.mql5.com/ru/forum/111497
Sto cercando di riempire un array unidimensionale ValueArr[].
Non sono sicuro che sia corretto.
Ad ogni tick la funzione GetValue() produce un valore int. Come si riempie ValueArr[]?
Il mio tentativo è corretto?
La dimensione dell'array dovrebbe essere aumentata di uno ad ogni tick? Allora la sua dimensione sarà limitata dalla memoria disponibile del computer.
Aumentare la dimensione dell'array ValueArr[] usando la funzione ArrayResize() e aggiungere i nuovi dati nell'array. Di nuovo - dove volete aggiungerli? All'inizio o alla fine?
Se all'inizio, è necessario spostare i dati scritti in precedenza, altrimenti saranno sovrascritti dai dati appena scritti.
Se alla fine, allora:
Inite impostare la dimensione dell'array = zero, e all'inizio aumentarla di 1 (size++), poi ridimensionare l'array ( ArrayResize(ValueArr, size);) e scrivere i dati, ottenuti da GetValue(); (ValueArr[size-1]=GetValue();) nella cella di array ValueArr[], indicizzata da size-1 (ValueArr[size-1]).
Volete che la dimensione dell'array aumenti di uno ad ogni tick? Allora la sua dimensione sarà limitata dalla memoria disponibile del computer.
Ad ogni tick, aumenta la dimensione dell'array ValueArr[] usando la funzione ArrayResize() e aggiungi nuovi dati nell'array. Di nuovo - dove volete aggiungerli? All'inizio o alla fine?
Se all'inizio, è necessario spostare i dati scritti in precedenza, altrimenti saranno sovrascritti dai dati appena scritti.
Inite impostare la dimensione dell'array = zero, e all'inizio aumentarla di 1 (size++), quindi ridimensionare l'array ArrayResize(ValueArr, size); e aggiungere i dati ottenuti dalla funzione GetValue() nella cella dell'array ValueArr[] indicizzata da size-1 (ValueArr[size-1]);
Sì, i dati da GetValue() saranno scritti ad ogni tick nell'array ValueArr[].
La dimensione dell'array viene aumentata ad ogni tick, ma può essere definita in una volta sola, ad esempio, [10000].
Glielementi della matrice sono disposti nell'ordine di arrivo, cioè, il primo elemento scritto è il primo nella "coda generale",
il secondo elemento è il secondo nella coda.
Se ho capito bene, è così:
Spero di aver capito bene.
Gli elementi della matrice sono disposti in ordine di arrivo, cioè il primo scritto è il primo nella "coda generale",
perché non usare un array di serie temporali?
Sto cercando di riempire un array unidimensionale ValueArr[].
Non sono sicuro che sia corretto.
Ad ogni tick la funzione GetValue() produce un valore int. Come si riempie ValueArr[]?
Il mio tentativo è corretto?
int ValueArr[size];
non si può. Quando dichiarate un array, o specificate una costante come dimensione o niente, e l'array è quindi considerato dinamico.
Il modo corretto è questo
int ValueArr[]; int init() { ArrayResize(ValueArr,size); }
Per favore, consigliatemi! Esiste una funzione in MT4 che tenga conto del risultato di un trade precedente per aprirne uno nuovo? Se sì, come posso specificarlo correttamente?
Per favore, consigliatemi! C'è una funzione in MT4 che consideri il risultato di un trade precedente quando se ne apre uno nuovo? Se sì, come posso specificarlo correttamente?
Non c'è una tale funzione incorporata, dovete scriverla voi stessi, ho mostrato un esempio qui:https://www.mql5.com/ru/forum/131277/page113
Questo è
non puoi. Quando si dichiara un array, o si specifica una costante come dimensione, o niente, e l'array è quindi considerato dinamico.
Il modo corretto è questo
Allora credo che sia tutto:
È giusto?