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
Ma non si può programmare con OOP in MQL4, quindi è ancora più popolare.
Ho già mostrato il mio codice e lo mostrerò di nuovo:
Questa è l'interfaccia del processore di trading - è esattamente la stessa sia per MT4 che per MT5.
L'utente ottiene solo questa interfaccia - e ha tutte le possibilità di azioni di trading. Non devi nemmeno sapere se è su MT4 o MT5. Avete bisogno di comprare - chiamate la funzione Buy, che riempirà il ticket del componente di trading aperto (per MT4 è un ordine, per MT5 è una posizione), e restituirà il codice di ritorno del trade server.
Non hai nemmeno bisogno di pensare alla differenza tra i protocolli MT4 e MT5 - l'interfaccia fornisce tutto il necessario.
Queste sono tutte capacità OOP.
Ho già mostrato il mio codice e lo mostrerò di nuovo:
Questa è l'interfaccia del processore di trading - è esattamente la stessa sia per MT4 che per MT5.
L'utente riceve semplicemente questa interfaccia - e ha tutte le possibilità di azioni di trading. Non ha nemmeno bisogno di sapere se è su MT4 o MT5.
Ed è tutto grazie all'OOP.
Ci sono esempi di utilizzo per casi tipici?
Se la tua teoria era che MQL4=MQL5, allora MQL4 potrebbe essere eseguito su MT5 e viceversa.
Avete esempi di utilizzo per casi tipici?
Bene, diciamo, ecco la mia funzione che invia la richiesta di cambiare TP-SL al processore commerciale:
In primo luogo, gli oggetti della parte EA - formano richieste di azioni commerciali (qui, una di queste richieste è quella di cambiare TP-SL). Dopo di che, la funzione ProceedRequestInto() è chiamata per tutte le richieste per inviare informazioni su un'azione di compravendita al processore di compravendita.
Il processore commerciale stesso è un oggetto della seguente classe:
Cioè, a seconda della piattaforma - la classe CTradeProcessor è ereditata o dalla classe CMT5TradeProcessor o dalla classe CMT4TradeProceccor.
Naturalmente, tutto questo potrebbe essere fatto senza OOP, con l'aiuto di switch e ifdef. Ma a mio avviso, l'approccio OOP è più conveniente e chiaro, e la cosa principale è che permette di isolare le entità l'una dall'altra e di sbarazzarsi della massa di variabili globali.
A proposito, un altro "eco di OOP" è proprio nelle funzioni aggiuntive di lavoro con gli ordini pendenti. Il processore di trade - lavora con ticket di operazioni, il che è scomodo - il riferimento al ticket in MT4 e MT5 è diverso. Ecco perché esiste la classe comune COrderInfoCore - discendente dell'interfaccia dell'ordine. È molto più conveniente passare al processore solo un puntatore a questo oggetto. Di conseguenza, in questo modo bypassiamo i frammenti dipendenti dalla piattaforma.
Bene, diciamo, ecco la mia funzione che invia la richiesta di cambiare TP-SL al processore commerciale:
In primo luogo, gli oggetti della parte EA - formano richieste di azioni commerciali (qui, una di queste richieste è quella di cambiare TP-SL). Poi la funzione ProceedRequestInto() è chiamata per tutte le richieste di inviare informazioni su un'azione di trading a un processore di trade.
Il mio codice funziona completamente invariato su MT4 e MT5.
Perché correre in terminali diversi?
Penso che sia troppo complicato per capire cosa sta realmente accadendo all'interno... E senza capire come funziona, non credo che qualcuno lo userà... Non è più facile scrivere una versione separata per MT5 e collegarla quando necessario?
George Merts:
Ma, a mio parere, l'approccio OOP è molto più conveniente e chiaro. E soprattutto - permette di isolare le entità l'una dall'altra, e di sbarazzarsi delle masse di variabili globali.
Questo è il punto, avendo isolato tutto da tutto, sarà molto più difficile trattare con tale codice, per non parlare dell'impossibilità di un adeguato debugging del codice quando è necessario conoscere i valori attuali di tutte le variabili richieste...
Perché correre in terminali diversi?
Perché il mio conto principale è aperto su MT4, e il mio tester di strategie è molto meglio su MT5.
È una richiesta comune dei clienti in Freelance - "deve funzionare sia su MT4 che su MT5" - significa che c'è una ragione per questo. Io stesso non vedo la ragione per lavorare in Freelance, ma si può chiedere a chi ci lavora perché i clienti richiedono la multipiattaforma.
Perché abbiamo bisogno di "capire cosa si fa realmente all'interno"? C'è un'interfaccia fissa che esegue un'azione, indipendentemente dalla piattaforma - è quella che usiamo noi. E quello che c'è, a un livello basso, che differenza fa?