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

 
Maxim Kuznetsov:

con la statica in mql tutto è in esecuzione e irto di errori. Il codice è sempre costruito/compilato nel suo insieme, senza obj intermedi e la dichiarazione di staticità è solo un omaggio alla tradizione.

Se uno usa la statica in mql - che è quasi al 100% dal mondo C/C++/C#; o uno sbircia e imita ridicolmente :-)

Ma c'è anche __thread__ :-)

Se si scrive statico in un modulo e non in funzioni, sì. Il codificatore molto probabilmente non sa cosa sta facendo. :) E ciò che riguarda le variabili locali delle funzioni e, levariabili locali dei metodi di classe, e anche i campi di classe, è anche una cosa molto utile, credo.

E gli errori possono nascere dal fraintendimento del concettodi variabili statiche e dal loro uso scorretto come conseguenza.
 
MakarFX:

dopo

aggiungere

non ha aiutato) ovunque l'abbia messo)

 
Mihail Matkovskij:

Se si scrive statico in un modulo e non in una funzione, sì. Il codificatore probabilmente non sa cosa sta facendo. :) E ciò che riguarda le variabili locali delle funzioni e, levariabili locali dei metodi di classe, e anche i campi di classe, è anche una cosa molto utile, secondo me.

Il modo per risolvere semplici conflitti di denominazione è aggiungere m_ a_ bullshit alle entità, perché il compilatore non conosce l'ambito e giura.

Due programmatori indipendenti non dovrebbero nominare funzioni, classi e variabili globali allo stesso modo. E i parametri dei metodi e delle funzioni devono essere unici. Anche le variabili locali dovrebbero esserlo.

nessuna statica qui :-)

Scusa, ho sbagliato.

 
законопослушный гражданин:

non ha aiutato) ovunque l'abbia messo)

Se vuoi capire il codice, guarda tutta la logica dell'EA, cosa fa e in quali condizioni.

Ho descritto l'intero consulente molto chiaramente, anche per i principianti, se non capite, chiedete.

Se volete far scrivere un EA per voi, come "cittadino rispettoso della legge", andate qui

 
Maxim Kuznetsov:

Il modo per risolvere i semplici conflitti di denominazione è aggiungere la stronzata m_ a_ alle entità, perché il compilatore non sa come scope e giura.

Due programmatori indipendenti non dovrebbero nominare funzioni, classi e variabili globali allo stesso modo. E i parametri dei metodi e delle funzioni devono essere unici. Anche le variabili locali dovrebbero esserlo.

nessuna statica qui :-)

Scusa, ho sbagliato.

I compiti possono essere diversi e usare le variabili statiche solo per risolvere i conflitti di spazio dei nomi, ovviamente non si dovrebbe (ma questo è impreciso... :)). Ma si può, per esempio, registrare quanti oggetti di qualche classe sono stati creati. Inoltre, le costanti statiche, una cosa molto utile. Metodi statici, ecc. Si può fare a meno della statica, naturalmente. Ma tutto questo dipende da molti fattori. Il compito da svolgere e i modi per risolverlo. Beh, naturalmente, dipende dalla comprensione del concetto di programmazione da partedei programmatori, in primo luogo.

 
Mihail Matkovskij:

I compiti possono essere diversi e usare variabili statiche solo per risolvere i conflitti di spazio dei nomi non è certamente una buona idea (ma è impreciso... :)). Ma, per esempio, si può scrivere quanti oggetti di qualche classe sono stati creati. Inoltre, le costanti statiche, una cosa molto utile. Metodi statici, ecc. Si può fare senza statica, naturalmente. Ma tutto questo dipende da molti fattori. Il compito da svolgere e i modi per risolverlo. Beh, naturalmente, dipende dalla comprensione del concetto di programmazione da partedel programmatore, in primo luogo.

Ora prendete una libreria e #includetela...

Avrai molti conflitti all'improvviso. La ragione è che tu e l'autore vi riferite alla stessa cosa come due persone ragionevoli. In un semplice EA, input doppio SL - e un sacco di avvertimenti.

Come diavolo faccio a nominare uno stop loss, in modo che sia garantito che non coincida con nessuno (sic!, con i nomi dei parametri dei metodi), se si chiama stop loss e significa esattamente questo?

Ooh ! la soluzione è inp_SL...e m_SL e a_SL dalla visibilità... lasciare che gli sviluppatori trascinino i meta dati e le aree di definizione nei nomi.

nessun posto per essere arrabbiati...

 
Maxim Kuznetsov:

Ora prendete un po' di libreria e #includetela a voi stessi...

si avranno molti conflitti per nulla. Solo perché due persone ragionevoli, tu e l'autore, si sono riferiti a una stessa cosa come a una sola e stessa cosa. In un semplice EA, doppio SL - e molti avvertimenti.

Come diavolo faccio a nominare uno stop loss, in modo che sia garantito che non coincida con nessuno (sic!, con i nomi dei parametri dei metodi), se si chiama stop loss e significa esattamente questo?

Ooh ! la soluzione è inp_SL...e m_SL e a_SL dalla visibilità... lasciare che gli sviluppatori trascinino i meta dati e le aree di definizione nei nomi.

nessun posto per la rabbia...

Uso raramente le librerie di stringhe perché raramente ne sono soddisfatto. Preferisco prepararmi da solo. Ma posso usare una libreria di terzi, solo se ho bisogno di creare qualcosa che è giàstato pensato molte volte prima di me. E poi tali librerie di terze parti spesso devono essere modificate (ad esempio, un errore appare improvvisamente, o mi mancano alcune funzioni o metodi necessari). E se ci sono troppi conflitti come quelli che hai descritto, è meglio cercare un'altra biblioteca. O cambiare i nomi usando la sostituzione automatica, nel caso più estremo. Ma io non lo farei.

 
MakarFX:

Se vuoi capire il codice, esamina tutta la logica dell'EA, cosa fa e in quali condizioni.

Ho reso l'intero EA molto chiaro per voi, anche per i principianti, se non lo capite, chiedete.

Se volete farvi scrivere un EA, potete andare qui, come un "cittadino rispettoso della legge".

No, non voglio. Voglio capirlo da solo.

Il manuale MQLQL è scritto in una lingua diversa dalla mia, quindi non capisco alcune cose, ma l'Expert Advisor è spiegato, grazie.

 
Maxim Kuznetsov:

Ora prendete qualche libreria e #includetela a voi stessi...

avrete un sacco di conflitti all'improvviso. Solo perché due persone ragionevoli, tu e l'autore, si sono riferiti a una stessa cosa come a una sola e stessa cosa. In un semplice EA, input doppio SL - e un sacco di avvertimenti.

Come diavolo faccio a nominare uno stop loss, in modo che sia garantito che non coincida con nessuno (sic!, con i nomi dei parametri dei metodi), se si chiama stop loss e significa esattamente questo?

Ooh ! la soluzione è inp_SL...e m_SL e a_SL dalla visibilità... lasciare che gli sviluppatori trascinino i meta dati e le aree di definizione nei nomi.

nessun posto per la rabbia...

A quanto pare è un po' una seccatura...)) Non vedo mai il senso di inserire i grandi codici binari di qualcun altro nel corpo del programma. O richiedono istruzioni reali o devono essere prima scomposti e compresi)))

Il generatore di prefissi unici nel progetto è il nostro tutto))))

 

Non capisco perché tutti parlano di conflitti di nome...? Deve trattarsi di programmazione procedurale... Per quanto ne so, se ci sono diversi conflitti di questo tipo, possono essere facilmente risolti con i prefissi. Non c'è altro da dire... Perché devi scrivere così tanto...? :)

Inoltre, molto tempo fa, gli sviluppatori hanno aggiunto una cosa come il namespace. Non conosco la quarta versione, ma la quinta ce l'ha da molto tempo. Quindi, non vedo un problema così grande.

Motivazione: