Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 61
![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
Ora ho riscontrato un problema quando la storia contiene più di 1000 affari e quando chiamo la funzione di elaborazione della storia, per esempio, per calcolare il profitto della storia. + Le informazioni sul grafico cominciano a rallentare e il terminale si blocca. Cioè le citazioni vengono con un ritardo.
Senza il codice si può solo indovinare.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Peculiarità di mql5, consigli e trucchi
Alexey Navoykov, 2017.07.21 17:04
È deludente che non ci sia un'eredità multipla in MQL. Tuttavia, possiamo farlo funzionare in ogni modo possibile - con modelli e macro - come possiamo evitarli?)
Ecco quello che ho fatto.Tutte le classi sorgente dovrebbero essere dichiarate come modelli che definiscono la classe madre.
Naturalmente, ci sono alcune sottigliezze, legate al fatto che le classi sono ereditate sequenzialmente (nell'ordine che abbiamo impostato), piuttosto che simultaneamente (come nella vera eredità multipla). In particolare, avranno priorità diverse quando si verifica un sovraccarico. Inoltre, se una stessa classe template partecipa più volte alla catena di ereditarietà, saranno classi completamente diverse, che non sono collegate tra loro in alcun modo. Quindi dobbiamo stare attenti. Ma non ci sono problemi con le interfacce, si può ereditare senza restrizioni.
Ma cosa succede senza dichiarazione sotto forma di modelli?
Per esempio, abbiamo due biblioteche autosufficienti pronte all'uso:
classe CLib1 : public CClass1 { };e
classe CLib2 : public CClass2 { };
Dobbiamo fare in modo che ci sia questa ereditarietà nella classe del programma:
CLib1--> CLib2 --> CProgram in modo che entrambe le librerie siano disponibili nella classe CProgram. E la libreria CLib1 sarà disponibile in CLib2.
Il codice di entrambe le librerie non può essere modificato in alcun modo.
È possibile?
Con l'eredità multipla sarebbe probabilmente come questo
classe CProgram : public CLib1,CLib2 { };
E senza una dichiarazione di modello?
Per esempio, abbiamo due biblioteche autosufficienti già pronte:
classe CLib1 : public CClass1 { };e
classe CLib2 : public CClass2 { };
Abbiamo bisogno di fare tale eredità nella classe del programma:
CLib1--> CLib2 --> CProgram in modo che entrambe le librerie siano disponibili nella classe CProgram. E la libreria CLib1 sarà disponibile in CLib2.
Questo impedisce che entrambe le librerie siano modificate in qualsiasi modo.
È possibile?
Con l'eredità multipla sarebbe probabilmente come questo
classe CProgram : public CLib1,CLib2 { };
Non perderai nulla se fai questo:
class CProgram { CLib1 lib1; CLib2 lib2; };
Non perderai nulla facendo così:
Probabilmente il modo migliore per ottenere dati dalle funzioni Copy asincrone (CopyRates, CopyTicks, ecc.) è tramite EventChartCustom.
Particolarmente rilevante per gli indicatori.
È possibile sapere che il server di trading è cambiato, non solo il conto -AccountInfoString (ACCOUNT_SERVER) in OnDeinit (EA, non indicatore) restituirà il nuovo server di trading.
Memo
Forum sul trading, sistemi di trading automatico e test di strategia
La mia insoddisfazione per i tester di strategia. per gli sviluppatori MQL
fxsaber, 2017.12.04 09:11
Risultato
C'è un'intera classe di indicatori che sovrappongono i grafici dei prezzi di altri simboli sul grafico dei prezzi. Sono fatti nello stesso modo - attraverso i buffer degli indicatori.
Tuttavia, in MT5 c'è un meraviglioso OBJ_CHART, che permette di realizzare questo compito in modo molto più bello e senza buffer di indicatori.
Per esempio, puoi mettere qualsiasi indicatore e vedere immediatamente come appare su un altro simbolo.
Schema slave - diversi grafici vengono visualizzati come sfondo del grafico principale.
Per esempio, puoi lanciare qualsiasi indicatore e vedere immediatamente come appare su un altro simbolo.
Schema slave - diversi grafici vengono visualizzati come sfondo del grafico principale.