[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

 
Vinin:

Continuazione del tema

Precedente qui https://www.mql5.com/ru/forum/111497

Nel tester MT4 nei risultati di ottimizzazione e nei grafici di ottimizzazione non viene visualizzato nulla, solo vuoto. Aiuto!
 
Sergey_Rogozin:

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]).

 
artmedia70:

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ì:


 int size=0;
 int ValueArr[size];
 
//-----------------

int start()
 {
   size++;
   ArrayResize(ValueArr, size);
   ValueArr[size-1] = GetValue();
   
 return();
 }

//-----------------

int GetValue()
 {
 .......
 return(Val);
 }

Spero di aver capito bene.

 
Sergey_Rogozin:

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
 
eddy:
perché non usare un array di serie temporali?
Una serie temporale? C'è un modo per aiutare a registrare qualcosa come la storia del tek?
 
Sergey_Rogozin:

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?

Così
 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);
}
 
teak - no
 

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?

 
sto_mat:

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
 
alsu:
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:

 int size, ValueArr[]; 
//-----------------
 int init()
 {
   ArrayResize(ValueArr,size);
 }
//-----------------

int start()
 {
   ValueArr[size-1] = GetValue();
 return();
 }

//-----------------

int GetValue()
 {
 .......
 return(Val);
 }

È giusto?

Motivazione: