Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 910

 

Perché ho copiato erroneamente i prezzi di chiusura da un tempo specificato con una quantità specificata. MQL5

copied = CopyClose(_Symbol,PERIOD_H4,Time[59],5,MPI); Alert(copied);
  for(int i = 0; i < 100; i++)
    {
     Alert(MPI[i]);
    };
 
Alexandr Sokolov:

Perché ho copiato erroneamente i prezzi di chiusura da un tempo specificato con una quantità specificata. MQL5

Dove in mql5 hai trovato Time[] o è un array personalizzato?

 
Alexey Viktorov:

E dove hai trovato in mql5 Time[] o è un array personalizzato?

Sì, è un array personalizzato, in cui ho copiato i tempi di apertura delle barre del timeframe in cui si trova l'indicatore. O come altro specificare la data (soprattutto considerando che in futuro dovrà essere combinata in diversi modi)?

 
Alexandr Sokolov:

Sì, è un array personalizzato, in cui ho copiato i tempi di apertura delle barre del timeframe in cui si trova l'indicatore. O come specificare altrimenti la data (soprattutto perché in futuro dovrà essere combinata in diversi modi)?

Sì, c'è qualcosa di sbagliato nel copiare il TF di "qualcun altro". Ho avviato un indicatore per severalfolds e ho notato che CopyRates() non viene copiato immediatamente. A quanto pare, è a causa di dati non preparati per periodo. Semplicemente ricompilandolo si risolve la situazione. Si scopre che dovremmo prima "tirare" il periodo e poi copiare. Ma non l'ho ancora fatto. Lo controllerò domani. Ma spero di avere ragione.

E un rompicapo per me: perché copiare i tempi di apertura delle barre in quella finestra di timeframe in cui si trova l'indicatore, se invece si può usare time[]. E non dobbiamo dimenticare la direzione di indicizzazione.

 
Alexey Viktorov:

E una domanda veloce: perché copiare il tempo di apertura delle barre nella finestra del timeframe in cui si trova l'indicatore, se invece si può usare time[]. E non dimenticare la direzione di indicizzazione.

Il tempo è usato al di fuori di OnCalculate. Direzione di indicizzazione ArraySetAsSeries(...,true) in tutti i buffer


A cosa serve? - Ho fatto un indicatore di tendenza (postato in CodeBase), è "rumoroso". Ho fatto un rallentamento - non abbastanza. Ora voglio rendere i valori su ogni candela del timeframe inferiore calcolati dalle barre del timeframe superiore

Cosa intendi per "yank"?

 
Alexandr Sokolov:

Il tempo è usato oltre OnCalculate. Direzione di indicizzazione ArraySetAsSeries(...,true) in tutti i buffer


A cosa serve? - Ho fatto un indicatore di tendenza (postato in CodeBase), è "rumoroso". Ho fatto un rallentamento - non abbastanza. Ora voglio rendere i valori su ogni candela del timeframe inferiore calcolati dalle barre del timeframe superiore

Cosa intende per "strattonare"?

"Yank" non è la mia espressione. È così che ho letto su questo forum il riferimento periodico ai dati del periodo desiderato.

Ricordo che persino io ero arrabbiato perché non funzionava, esprimendomi "strattonando il periodo come un gatto per il sedere", ma non funziona. Dopo molte discussioni sul problema, ho avvolto la copia in un ciclo do while. Se ha copiato al primo tentativo, grazie al cielo. Se non l'ha fatto, gli diamo N tentativi tramite un ciclo for vuoto per 200-500 iterazioni, che sembra essere sufficiente. Possiamo andare più lontano...

E questo indicatore, di cui ho parlato un po' prima, è ancora allo stadio iniziale. Ecco perché non è fatto bene. Stavo solo controllando quante barre di tf alte mi servono per le barre disponibili del periodo corrente. Ho finito con 17 barre giornaliere per 5000 barre M5. E se non si tiene conto di questo, allora vengono copiati 5000 periodi attuali M5, 5000 4h e 5000 giornalieri. Troppi extra...

Un'altra nota importante: qualche tempo fa potevamo invertire l 'indicizzazione di un array una volta, ora dobbiamo reindirizzarlo ad ogni starnuto. Ho già scritto da qualche parte su questo argomento. Ecco perché preferisco lavorare con l'opzione predefinita. Non è difficile abituarsi.

 

GlobalVariable di default può essere solo doppio

double close = GlobalVariableGet("close");


Se voglio un valore vicino senza una parte frazionaria, sarebbe corretto scriverlo così:

int close = GlobalVariableGet("close");
 
Alexey Viktorov:

"Yank" non è la mia espressione. È così che ho letto il riferimento periodico ai dati del periodo giusto su questo forum.

Ricordo anche io che mi arrabbio perché non funziona, esprimendomi "strattonando il periodo come un gatto dal suo posto causale", ma non serve a niente. Dopo molte discussioni sul problema ho avvolto la copia in un ciclo do while. Se ha copiato al primo tentativo, grazie al cielo. Se non l'ha fatto, gli diamo N tentativi tramite un ciclo for vuoto per 200-500 iterazioni, che sembra essere sufficiente. Possiamo aumentare...

E quell'indicatore che ho menzionato prima è ancora agli inizi. Ecco perché non è fatto bene. Stavo solo controllando quante barre di tf alte mi servono per le barre disponibili del periodo corrente. Ho finito con 17 barre giornaliere per 5000 barre M5. E se non si tiene conto di questo, allora vengono copiati 5000 periodi M5 attuali, 5000 4h e 5000 giornalieri. Questo è un sacco di extra...

Un'altra nota importante: qualche tempo fa potevamo invertire l 'indicizzazione di un array una volta, ora dobbiamo reindirizzarlo ad ogni starnuto. Ho già scritto da qualche parte su questo argomento. Ecco perché preferisco lavorare con l'opzione predefinita. Non è difficile abituarsi.

Aspetta, ci siamo persi qualcosa o ci siamo fraintesi, perché

Alert(copied);

... ...restituisce 5, che è corretto, ma i valori nel mio buffer sono tutti uguali.

 
Alexandr Sokolov:

Aspetta, ci siamo persi qualcosa o ci siamo fraintesi, perché

... Restituisco 5, che è corretto, ma i valori nel buffer sono tutti uguali

Poi abbiamo bisogno di capire la dimensione dell'array MPI e la sua direzione di indicizzazione, se si copiano 5 elementi, perché ciclare fino a 100?

Preferisco usare il debugger in questi casi. Ottenere un array e controllare tutti i campi dell'array senza riavviare...

 
Alexey Viktorov:

Poi abbiamo bisogno di trattare con la dimensione dell'array MPI e la direzione di indicizzazione, se si copiano 5 elementi, allora perché il ciclo a 100?

Preferisco usare il debugger in questi casi. Ottenere l'array e controllare tutti i campi dell'array senza riavviare...

L'ho impostato a 100 perché pensavo che iniziasse a 59, ma è lo stesso a 6.

Motivazione: