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
È una classe puramente di prova o la userete davvero?
Ilsecondo, sto scrivendo comunque sotto MT4, anche per me stesso - non funziona nel tester per alcuni simboli, se vedo qualcosa di utile in MT4, passerò a MT5 usando MT4Orders - ho controllato il mio "lavoro creativo" senza problemi con questa libreria
In primo luogo, voglio vedere l'idea di una vera e propria OOP - è per questo che la sto testando, per vedere cosa verrà fuori, finora sta andando abbastanza male.... Vedremo, ho tempo, ecco il caricatore che ho deciso di farmi ))))
so che non è il modo migliore per inizializzare prima dell'inizio del codice principale, o meglio pensavo così, ma non l'ho mai controllato, non importa quante nuove build ho avuto - in MQL tutto è sempre disponibile, anche a livello di visibilità globale, ho visto le persone fonti andare direttamente in cima e scrivere in quel modo:
e queste inizializzazioni non valide hanno funzionato per anni di build in build. Quindi, gli sviluppatori hanno viziato le persone fino all'osso ))))
SZZY: qui in generale, come sempre quando si usa OOP - la cosa principale è dividere correttamente il problema in elementi complessi e non ereditare da tutto a portata di mano. Non so dove "mettere" l'output testuale degli errori - ha bisogno ovunque, in qualsiasi classe e in qualsiasi luogo del programma, molto probabilmente si dovrà creare una classe base come@Vladimir Simakov ha mostrato sopra il suo codice
pp 1-3 tutti risolvibili, MA... OK, qui con statica aiutato, lasciate che sia così perché c'è un aiuto, almeno qualcosa per giustificare la sua decisione, ora il codice è il seguente:
ha creato 3 istanze di Cdeal e le ha messe nel registro:
...
finora tutto funziona come previsto!
Ma comunque, la tua versione originale era migliore. Non sacrificare l'affidabilità per salvare una riga di codice )
quale? - Ho metà dell'argomento nelle mie variazioni ))))
ma sì, hai ragione al cento per cento!
SZY:
il modo più semplice e affidabile - creare un'istanza della classe tramite new in OnInit() - e copiare immediatamente tutte le variabili d'ambiente del terminale, ma non è il modo migliore - se ho intenzione di aprire un ordine immediatamente all'avvio del costruttore in questo esempio, allora questa istanza della classe sarà probabilmente cancellata e poi eventualmente ricreata - questo porta già alcuni problemi a causa delle chiamate ripetute - inizio a caricare di nuovo il terminale, sprecando ancora memoria.... in generale, non è risolvibile in questo modo
ZZZY: forse un altro giorno di esperimenti, e alla fine prendere esempio da@Vladimir Simakov- tutto è molto chiaro lì
Ho abbozzato la mia classe, che dovrebbe inizializzare i campi una volta con valori costanti, e sembra funzionare come previsto:
Non mi piacciono 2 cose:
1. Ripeto chiamando SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP) - perché l'ordine di inizializzazione non è definito, cioè non è sicuro che VolumeSTEP sarà inizializzato prima e solo allora GetDigitsInVolumeStep() sarà chiamato
2. Voglio sbarazzarmi del metodo statico static int GetDigitsInVolumeStep() - ho visto un video su youtube che dice che in OOP puro non si dovrebbero usare metodi statici, e ora sto combattendo contro i mulini a vento
il link al video, è essenzialmente lo stessohttps://youtu.be/lfdAwl3-X_c ehttps://youtu.be/zME4SOCHT0I
come posso riscrivere questi 2 punti che non mi piacciono?
1. Non c'è niente di male nel chiamare questa funzione due volte.
2. Non vi confonde il fatto che coloro che sono contro l'uso delle funzioni statiche non danno il minimo argomento?
È meglio non guardare video di chiunque, ma leggere libri.
2. non siete confusi dal fatto che coloro che sono contro l'uso delle funzioni statiche non danno il minimo argomento?
E tu sei il primo a sostenermi che il video non corrisponde a nulla della pratica, ho scritto in un altro thread la mia opinione sul video - l'oratore non poteva nemmeno rispondere alle domande degli studenti
e tu sei il primo a sostenermi che il video non corrisponde a niente della pratica, ho scritto in un altro thread la mia opinione sul video - il giornalista non poteva nemmeno rispondere alle domande degli studenti
Non credo che OOP significhi tagliare le proprie capacità per seguire ciecamente i postulati infondati di alcuni portavoce di Internet, dove ognuno spazza a modo suo.
Non credo che l'OOP sia la riduzione delle proprie capacità per seguire ciecamente i postulati infondati di alcuni portavoce di Internet, dove ognuno spazza a modo suo.
se avete visto il video, dovreste capire che l'obiettivo è .... beh, in generale, anche tu non capisci niente e non sei ancora abbastanza maturo - almeno così mi ha spiegato A100
SZZ: sperimenterò un po' più tardi con le interfacce, forse qualche "entità-bellezza" apparirà ))))
Ho guardato il suo video sulla statica, tutto per scrivere così:
Beh, scrivere un wrapper su una statica è un problema, no?
class Stateless_with_state { Stateless q; Data d; call() {q::call(d);} };
E attraverso i modelli sono chiaramente più efficienti. Mi è piaciuta la domanda del pubblico https://www.youtube.com/watch?v=75U9eefFYoU#t=33m25s
ZS: sperimenterò le interfacce un po' più tardi, forse qualche "entità-bellezza" apparirà ))))
Controllato se "OOP pattern - Behavioural patterns - Strategy" funzionerà
2019.08.31 21:04:40.441 tst (EURUSD,H1) Strategy_1::Strategy_1
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_1::Algorithm
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_2::Strategy_2
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_2::Algorithm
Funziona senza problemi secondo me
controllato se "OOP Pattern - Behavioural Patterns - Strategy (Strategy)" funzionerà
2019.08.31 21:04:40.441 tst (EURUSD,H1) Strategy_1::Strategy_1
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_1::Algorithm
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_2::Strategy_2
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_2::Algorithm
funziona senza problemi per me
L'operatore new restituisce un puntatore. Naturalmente, gli sviluppatori hanno fatto un casino con la dereferenziazione implicita ed è per questo che la tua versione funziona, ma preferisco non fissarmi su cose non documentate.
2. Non è certamente C++, ma è molto simile, quindi le liste di inizializzazione (non so per l'efficienza) sono kosher.