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
Ora ho riprogettato la mia classe
E ha aggiunto l'eredità ... (sospetto di essermi sbagliato) dalla classe vr_MarketInfoLa classe vr_MarketInfo restituisce informazioni su Point, Digits per il simbolo e controlla il lotto per gli errori, e molte altre cose di cui ho bisogno per il lavoro tra cui tenere un registro in Excel e su un grafico
Quando si usa un metodo come sopra, quando si lavora in Primer.Primer.Primer() viene dato un elenco
Vorrei fare qualcosa di più abbreviato...
Dov'è l'eredità? Qual è lo scopo del puntatore?
Dov'è l'eredità? Qual è lo scopo del puntatore?
Scrivere un libro di testo su MQL4+. Cooperate, intenditori, e scrivetelo. 50 dollari :)
Scrivere un libro di testo su MQL4+. Cooperate, intenditori, e scrivetelo. 50 dollari :)
Tutto è stato scritto molto tempo fa.
MQL4 == C++ con leggere limitazioni.
Di fatto, né il manuale, né la documentazione offrono alcuno specifico su come usare i puntatori, o il nuovo operatore. Possiamo indovinare o aspettare che il tempo passi. O quando qualcuno dice accidentalmente qualcosa da qualche parte. Sono scioccato da come succede. È anche interessante che a parte me e il topicstarter VLadimir nessuno sembra aver bisogno di qualcosa. Anche se continuo a credere che molte persone non capiscono questo argomento. Ed è per questo che non indagano su tali questioni...
Di che tipo di specifiche avete bisogno? Un principio si applica ovunque: mantenere le cose il più semplice possibile. Non entrare nel vivo delle cose solo per essere nel vivo delle cose. Se un problema può essere risolto semplicemente, deve essere risolto semplicemente.
I puntatori dinamici sono necessari se il vostro programma ha bisogno di lavorare dinamicamente con gli oggetti: creare, cancellare durante l'esecuzione del programma. Se sapete in anticipo quali e quanti oggetti sono necessari nel programma, non avete bisogno di puntatori dinamici. Ma a meno che non abbiate molti oggetti, potete semplicemente crearli in un ciclo con new.
Io per esempio trovo difficile imparare la teoria, mostratemi un esempio e descrivete come le funzioni definiscono cerchio, quadrato, trapezio o triangolo.
Uno degli articoli linkati nel primo post ha questo esempio.
Una classe base con un metodo virtuale. Il discendente ha un metodo con lo stesso nome, in cui vengono fatti i calcoli.
Per me è difficile imparare la teoria, mostratemi un esempio e descrivete come le funzioni definiscono un cerchio, un quadrato, un trapezio o un triangolo.
Lascio il trapezio e il triangolo al mio lavoro:
I puntatori dinamici sono necessari se il programma ha bisogno di lavorare dinamicamente con gli oggetti: crearli, cancellarli nel processo di funzionamento del programma. Se sapete in anticipo quali e quanti oggetti saranno necessari nel programma, non avete bisogno di puntatori dinamici. Ma a meno che non abbiate molti oggetti, è più facile crearli in un ciclo con new.
La vostra classe è ridondante al 90%. Solo due funzioni eseguono il lavoro principale, queste sono openorders e tip Perché usate Sel, Buy SelStop, etc., quando in realtà tutte chiamano semplicemente Openorders? Inoltre, il tipo di ordine è passato come int, quindi non è protetto. Invece di int è meglio che usiate la vostra enumerazione o lo standard ENUM_ORDER_TYPE. E in generale, è meglio non usare mai i numeri magici "1", "2" ecc. Questo vi impedirà di inviare il valore dell'ordine sinistro alla funzione. La stessa funzione Openorders è troppo grande. Ovviamente, consiste di due blocchi, il blocco di fare un accordo e il blocco di verificare le condizioni. Ognuno di loro dovrebbe essere come una funzione privata separata.
È un buon inizio, ma c'è ancora molto da imparare. La funzione di punta sarebbe meglio riscritta come segue:
Quali specifiche sono necessarie? Lo stesso principio si applica ovunque: tutto deve essere fatto nel modo più semplice possibile. Non c'è bisogno di andare nel deserto solo per essere nel deserto. Se un problema può essere risolto semplicemente, dovrebbe essere risolto semplicemente.
I puntatori dinamici sono necessari se il programma ha bisogno di lavorare dinamicamente con gli oggetti: creazione, cancellazione durante il funzionamento del programma. Se sapete in anticipo quali e quanti oggetti saranno necessari nel programma, non avete bisogno di puntatori dinamici. Ma a parte quando ci sono tanti oggetti, è più facile crearli in un ciclo tramite new.