
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
queste sono le tue parole, non ci sono avvertimenti, ma ci sono davvero
In che mondo vivi, cosa fumi, condividi
Quindi lei afferma così audacemente per me sul mio codice che non vede? Non vi state sbagliando con i funghi?
Ho capito, non è un pazzo, avete un compilatore speciale senza avvertimenti, specialmente personalmente da MQ
PS: ne voglio uno anch'io, dammelo.
Il codice che hai dato non è affatto corretto!
Dovrebbe essere così:
Sbagliato, perché allora c'è un confronto:
No, non lo è.
Questo non c'entra niente.
Il codificatore ha semplicemente esagerato o ha copiato la conversione del tipo da qualche parte.
in effetti
codice
non genera alcun errore o avvertimento.
MQL non richiede una conversione esplicita
PS. Verificate le vostre ipotesi prima di iniziare a discutere.
un pessimo esempio, si scivola su un confronto e poi si incorre nell'errore:
PS. Verificate le vostre ipotesi prima di iniziare a discutere.
No, non lo sei.
Non c'entra niente.
Il codificatore ha semplicemente esagerato o ha copiato da qualche altra parte .
in effetti
codice
non genera alcun errore o avvertimento.
MQL non richiede una conversione esplicita
PS. Verificate le vostre ipotesi prima di iniziare a discutere.
o_o!
Giusto - sbagliato....
Ho l'impressione che lei non legga quello che scrivono gli altri!
Secondo le regole di programmazione:
LA VARIABILE DI FUNZIONE ACCETTANTE DEVE ESSERE DELLO STESSO TIPO DEL VALORE DI RITORNO DI QUESTA FUNZIONE!
QUESTO È QUANTO!
Questa è la fine di questa speculazione.
Perché non l'hai scritto in questo modo?
Perché sapete che la funzione restituisce sempre LONG.
E il riferimento dice chiaramente cheil valore restituito per l'argomento POSITION_TYPE della funzionePositionGetInteger() è
è ENUM_POSITION_TYPE, non LONG
E se vuoi fare pratica con il type casting, scrivi in questo modo:
Il fatto che il compilatore non vi dia un errore non significa che avete scritto correttamente!
Indica il "libero arbitrio" del compilatore e basta! (Permette di confrontare LONG e INTEGER).
Questo è il modo GIUSTO di gestire questa situazione:
Un pessimo esempio, si è perso il confronto, e poi si ottiene un errore:
Non giustificate le vostre tesi facendo riferimento a un altro argomento della discussione.
Si tratta solo di confronto e solo in questo caso lungo è enum.
Sei già entrato nel boschetto dei pensieri, anche se la domanda era diretta, a cui ha risposto l'integerrimo
Nextor257:
Per favore, consigliatemi, non riesco a capire che tipo di confronto è questo?
if(type==(long)POSITION_TYPE_BUY)
Perché (long) è preceduto da POSITION_TYPE_BUY?
Questo è un cambiamento del tipo di variabile al volo.
long e lon invece diENUM_POSITION_TYPE eENUM_POSITION_TYPE
8 caratteri (che puoi digitare a occhi chiusi) invece di 36 caratteri (e in maiuscolo)! Oltre a questo c'è ogni sorta di informazione che non ha senso. Questo non è un buon stile di programmazione: scrittura inutile e informazioni ridondanti.
In questo caso, Mikhail ha assolutamente ragione (con tutto il mio disgusto per lo stile di programmazione di Mikhail).
E non si tratta di potenziali avvertimenti e soprattutto del numero di caratteri, ma di una digitazione rigorosa. L'enumerazione ENUM_POSITION_TYPE è un tipo di dati unico. È ENUM_POSITION_TYPE, non long o int. Dovete usarlo come ENUM_POSITION_TYPE e in nessun altro modo. E se si digita a lungo, la funzione di completamento automatico inizierà al terzo carattere, e non c'è alcun problema. E il problema è nell'usare long, perché può essere quasi tutto, mentre ENUM_POSITION_TYPE non lo è.
MQL non richiede una conversione esplicita
All'inizio ho scritto che lo fa, ma poi ho visto la parola "confronto". In realtà, nessuna conversione esplicita è necessaria in confronto, perché MQL lo fa implicitamente. E sarebbe meglio non farlo affatto, perché il risultato è spesso indefinito. Ma in altri linguaggi normali strettamente tipizzati è sempre richiesta una conversione di tipo esplicita.
P.S. Per una volta Michael ha dato una risposta competente, ma la gente si è abituata a bestemmiare anche qui. E invano, perché in questo caso ha ragione.