![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Hai capito tutto. Usare una costante NULL.
Lasciate che vi dica un segreto: è già stato implementato. Devi cliccare sulla rotella del mouse e ci sarà un mirino.
Si può fare molto tempo fa. Dal navigatore si trascina l'indicatore sulla finestra con l'indicatore già collegato.
IMHO, non è la cosa più necessaria.
Hai un navigatore, hai dei preferiti, hai dei modelli, hai dei profili. Tutto può essere impostato. Leggete l'aiuto per il terminale, scoprirete molto!
Le enumerazioni sono utilizzate per rendere il codice più leggibile, per rimuovere le costanti e sostituirle con entità conosciute dall'uomo.
Per esempio, i valori dell'enumerazione ENUM_DAY_OF_WEEK possono essere usati per il confronto con il valore day_of_week della struttura MqlDateTime. Cioè si può scrivere così
Oppure puoi scriverlo in modo diverso:
SUNDAY è una costante denominata di tipo int con valore 0.
Fico! Grazie per il navigatore! Non ci ha prestato molta attenzione. Di solito lo spengo, così non occupa troppo spazio. L'aiuto, anche se solo uno sguardo, l'ho letto. Non mi dice nulla su come trascinare un indiretto nella finestra dei grafici e sopra l'altro. Anche se avrei potuto indovinare e provare....)))
Grazie per aver spiegato la natura delle enumerazioni! Li ho letti molto velocemente, MQL è per lo più derivato da C++, e ci sono un sacco di banchi per esso. Ma un sacco di errori di stampa in Help e articoli incompleti non va bene.
Risultati: un aiuto scritto correttamente può aiutare ad evitare un sacco di domande stupide da parte di manichini sul forum!
Per quanto riguarda il NULL, è zero - è usato molto. Ma i valori massimi delle variabili sono molto raramente, quasi mai. Per esempio, una variabile memorizza tre stati dopo aver analizzato gli indicatori: BUY, SELL o NULL. Se usiamo le costanti già pronte POSITION_TYPE_BUY, POSITION_TYPE_SELL, una di esse è zero. Sono sicuro che EMPTY_VALUE sarà più popolare di NULL se lo si generalizza a tutti i tipi).
C'è un'altra applicazione infinitamente utile. Per esempio:
E l'utente ottiene un elenco a discesa con una scelta di 4 elementi di ciò che hai scritto lì nei commenti - "Compra solo", "Vendi solo", ecc. Molto utile per elencare un insieme di indicatori, timeframes, un insieme di condizioni ecc. nella finestra delle impostazioni utente
La parte NULL è zero, ed è usata spesso. Per esempio, la variabile memorizza tre stati dopo aver analizzato gli indicatori: BUY, SELL o NULL. Se usiamo le costanti pronte POSITION_TYPE_BUY, POSITION_TYPE_SELL, una di esse è NULL.
Nessun problema, si può fare così:
E mettetelo dove volete.
Nessun problema, si può fare così:
E mettilo dove vuoi tu.
Tutto questo è chiaro. Non è quello che voglio dire.
Allora spiega cosa intendi? Una singola costante per tutti i tipi di dati predefiniti? È improbabile che una cosa del genere venga attuata.
Purtroppo, solo i programmatori esperti capiscono l'utilità e l'importanza di un tale avvertimento.
Bene, raccomando a tutti gli altri di essere contenti dell'aiuto di questo livello del compilatore e di correggere i propri errori. Questi sono luoghi reali di potenziali errori ed è proprio per gli sviluppatori principianti che è criticamente importante imparare.
L'argomento dei "metodi puramente virtuali" è già stato sollevato sul forum qualche anno fa.
Cioè nel concetto C++, i metodi virtuali senza corpo che devono essere sovrascritti nei discendenti:
Inoltre, una classe che contiene tali metodi diventa automaticamente astratta. Il compilatore traccia anche questo. (Beh, è solo per attenersi agli standard, anche se si può nascondere il costruttore in uno scope protetto).
Attualmente ci mancano molti comportamenti di "metodi virtuali puri". Senza tale funzionalità, non si può preparare correttamente una libreria o un framework per esternalizzarla: si crea la classe figlia (che non è solo per niente, ma è incorporata come un ingranaggio in altre classi) e si è abbastanza gentili da implementare l'intera interfaccia. Ora, tu erediti, non metti l'implementazione di un metodo, il compilatore lo inghiotte, non funziona niente. Scavare nel codice sorgente della classe madre?
Il concetto di interfaccia è uno dei fondamenti della OOP. Pertanto, mi piacerebbe molto vedere l'implementazione di una cosa del genere in 5, e non in MQL6
A proposito, nella documentazione sulle funzioni virtuali, c'è un errore
Esempio:
La funzione virtualeFunc1 non ha un corpo eseguibile (e non restituisce nemmeno un valore), ma si compila senza errori.
L'argomento dei "metodi puramente virtuali" è già stato sollevato sul forum qualche anno fa.
Cioè nel concetto C++, metodi virtuali senza corpo, che devono essere OBBLIGATORIAMENTE sovrascritti nei discendenti:
Inoltre, una classe che contiene tali metodi diventa automaticamente astratta. Il compilatore traccia anche questo. (Beh, è solo per attenersi agli standard, anche se si può nascondere il costruttore in uno scope protetto).
Attualmente ci mancano molti comportamenti di "metodi virtuali puri". Senza tale funzionalità, non si può preparare correttamente una libreria o un framework per esternalizzarla: si crea la propria classe figlia (che non è solo per niente, ma è incorporata come un ingranaggio in altre classi) e si è abbastanza gentili da implementare l'intera interfaccia. Ora, tu erediti, non metti l'implementazione di un metodo, il compilatore lo inghiotte, non funziona niente. Scavare nel codice sorgente della classe madre?
Il concetto di interfaccia è uno dei fondamenti della OOP. Pertanto, mi piacerebbe molto vedere l'implementazione di una cosa del genere in 5, e non in MQL6
A proposito, nella documentazione sulle funzioni virtuali, c'è un errore
Esempio:
La funzione virtualeFunc1 non ha un corpo eseguibile (e non restituisce nemmeno un valore), ma si compila senza errori.
1. Le funzioni virtuali pure saranno aggiunte presto
2. Dove si trova la chiamata Func1 nel vostro esempio? Nessuna chiamata - nessun controllo del corpo.
1. Le funzioni virtuali pure saranno aggiunte presto
2. Dov'è la chiamata Func1 nel tuo esempio? Nessuna chiamata - neanche il controllo del corpo.
VS 2015 ha detto quanto segue
Severità Codice Descrizione Progetto File Linea Stato di soppressione
Errore LNK2001 simbolo esterno non risolto "public: virtual int __thiscall Base::Func1(void)" (?Func1@Base@UAEHXZ) TestCPPCode C:\MyP\AvForex\trunk\TestCPPCode.obj 1
Errore LNK1120 1 unresolved externals TestCPPCode C:\MyP\AvForex\trunk\MQL4FilesForFormatting2015\Debug\TestCPPCode.exe 1
VS 2015 ha detto quanto segue
Severità Codice Descrizione Progetto File Linea Stato di soppressione
Errore LNK2001 simbolo esterno non risolto "public: virtual int __thiscall Base::Func1(void)" (?Func1@Base@UAEHXZ) TestCPPCode C:\MyP\AvForex\trunk\TestCPPCode.obj 1
Errore LNK1120 1 unresolved externals TestCPPCode C:\MyP\AvForex\trunk\MQL4FilesForFormatting2015\Debug\TestCPPCode.exe 1