Un bug nella funzione OrderSend() ? - pagina 6

 
tara:

Cos'è Static allora? È più simile a Fatalic...
Perché la statica non funziona? Funziona ovunque. Fatalico, naftalico, non esiste! Sono sempre alla ricerca di difetti in me stesso e mi offendo!
 
borilunad:
Perché la statica non funziona? Funziona ovunque io vada. Fatalico, naftalico, non può essere! Sono sempre alla ricerca di errori in me stesso e mi offendo!
Poiché non prevede l'inizializzazione delle variabili al riavvio del programma, DEVE.
 
A proposito, tutti i dati statici in MQL4 hanno la stessa malattia. Promemoria: tutti gli array sono statici:)
 
tara:
Poiché non prevede l'inizializzazione delle variabili al riavvio del programma, DEVE.
Giusto, come in qualsiasi funzione, anche locale, la statica viene prima presentata con un qualche valore, poi viene confrontata. Anche se all'inizio l'ho usato senza alcuna idea, verificandolo in azione, e poi arriva la comprensione. È impossibile capire tutto in una volta, e non tutto può essere organizzato così facilmente in una volta. :) Non tocco gli array, sono troppo lavoro per me!
 
granit77:
Ci sono altri programmatori che possono confermare questo? Un voto non sarebbe sufficiente.
Victor, non sono un programmatore, purtroppo. Sono un dilettante...
 
tara:

Si può semplicemente cambiare qualche parametro. La reazione avverrà solo dopo il primo tick di una nuova barra sul TF impostato.

Ma tu stesso ti sei chiesto perché il funzionamento dell'EA è inspiegabile su TF superiori:)



Mi chiedo se c'è una connessione tra il primo tick di una nuova barra e il tester... Non lo vedo. Un tester è un tester. E un grafico... è un grafico... (Non intendo un tester, ma la stessa demo o reale).

Inoltre, il libro di testo dice... "Se non c'è un'inizializzazione esplicita, allora una variabile statica è inizializzata da zero".

Quindi non c'è bisogno, come hai detto tu, Alexey, in INIT di assegnare il valore 0 alla variabile lastBarTime. Sarà zero all'avvio del programma.

 
hoz:


Mi chiedo se c'è una connessione tra il primo tick di una nuova barra nel TF funzionante e il tester... ...beh, io non lo noto... Un tester è un tester. E un grafico... è un grafico... (Non intendo il tester, ma la stessa demo o reale).

Inoltre, il libro di testo dice. "Se non c'è un'inizializzazione esplicita, una variabile statica è inizializzata da zero".

Quindi non c'è bisogno, come hai detto tu, Alexey, di assegnare il valore 0 alla variabile lastBarTime in INIT. Sarà zero all'avvio del programma.


No, non lo farà. È un bug :)
 

Anche se questo punto(del libro di testo) non mi è del tutto chiaro:

"Le variabili statiche sono inizializzate una volta prima di chiamare la funzione specializzata init(), cioè, il valore di questa variabile non è perso all'uscita dalla funzione, all'interno della quale è dichiarata una variabile statica.

Che cosa ha a che fare questo con " prima di chiamare la funzione speciale init() " e dopo " cioè quando si esce da una funzione utente (a giudicare dal contenuto) in cui è dichiarata una variabile statica? "

Una funzione in cui viene dichiarata una variabile statica può essere alla fine di un programma... cioè alla fine del codice o da qualche altra parte. La funzioneinit() viene eseguita una volta appena prima dell'inizio del programma. Risulta essere incoerente. Come si può inizializzare una variabile prima della funzioneinit() ?

 
hoz:

Anche se questo punto(del libro di testo) non mi è del tutto chiaro:

"Le variabili statiche sono inizializzate una volta prima di chiamare la funzione specializzata init(), cioè, il valore di questa variabile non è perso quando si lascia la funzione, all'interno della quale è dichiarata una variabile statica.

Che cosa ha a che fare questo con " prima di chiamare la funzione speciale init() " e dopo " cioè quando si esce da una funzione utente (a giudicare dal contenuto) in cui è dichiarata una variabile statica? "

Una funzione in cui viene dichiarata una variabile statica può essere alla fine di un programma... cioè alla fine del codice o da qualche altra parte. La funzioneinit() viene eseguita una volta appena prima dell'inizio del programma. Risulta essere incoerente. Come si può inizializzare una variabile prima della funzioneinit() ?

Beh, se vi interessa, tutti i modi di gestione della memoria attualmente utilizzati sono stati implementati per la prima volta in PL/1. Ce ne sono quattro: automatico, dinamico, statico e basato. C è venuto dopo e ha adottato completamente questi standard.

 
Ora vado a letto:)