Un articolo molto interessante. Manca per ragioni di completezza:
1. Dove prendiamo le citazioni, possono essere prese da file hst?
2. Come rendere questa libreria compatibile con quella del MateLab 2009a o 2009b? Hanno anche C e C++ lì, vero?
Una richiesta molto grande.
- Le citazioni sono prese dal terminale - ora sono sia dettagliate che profonde (10 anni e più).
In nessun caso dovremmo guardare direttamente nei file binari dei magazzini terminali - causerebbe solo gravi conflitti di accesso ai dati. Anche se i test hanno mostrato "ha funzionato, nessun problema", arriverà comunque un momento di accesso simultaneo a questi dati del terminale e del programma esterno, e qualcuno andrà in crash come risultato. La gente ci si è imbattuta molte volte. - Il docking delle librerie in MQL5 è ora molto più facile, grazie al supporto trasparente per le convenzioni stdcall / cdecl sulle chiamate DLL.
Se qualcuno scrive un articolo buono e dettagliato sul collegamento di MetaTrader 4/5 e Matlab via DLL, guadagnerà 200 dollari o più.
La comunità MQL4.community ha già articoli su Matcad - MetaTrader 4 bundle:
- www.mql5.com
Ho bisogno di collegare due terminali in modo che traducano le loro quotazioni in Excel in tempo reale.
In MT4 potrebbe essere fatto con DDE. In MT5 sembra che attraverso la DLL sia l'unica via d'uscita.
Ma se ogni tick in arrivo sarà passato alla DLL... Penso che sarà qualcosa di inimmaginabilmente lento. Naturalmente non ho ancora provato ad implementarlo... ma onestamente non voglio provarlo. Sarà un incubo.
In breve, riportiamo il DDE a MT5. È un anacronismo, ma a volte può servire.
P.S. Grazie per questo articolo, è molto attuale. Mi mancava proprio un materiale del genere.
Renat, e la velocità di chiamata della DLL?
È molto facile controllare la velocità di chiamata. Per esempio, un calcolo approssimativo può essere fatto così:
_DLLAPI int __stdcall fnCalcSpeed(int var1,int var2,int var3) { return(0); } #import "MQL5DLLSamples.dll" int fnCalcSpeed(int var1,int var2,int var3); #import int calls=0; int ticks=GetTickCount(); while(GetTickCount()-ticks<1000) { for(int i=0;i<1000;i++) fnCalcSpeed(1,2,3); calls++; } Print(calls * 1000, "вызовов в секунду");
Ho ottenuto 57.000 chiamate al secondo su un Quad Q9400 @2.66Ghz. Lo stesso codice dà circa 20.000.000 di chiamate al secondo in MetaTrader 4, dato che lì non c'è controllo e piping.
Cercheremo sicuramente di ridurre la perdita sulle chiamate DLL in MetaTrader 5.
Se è possibile esportare le quotazioni solo tramite dll, allora significa che uno script deve essere messo su ogni strumento da esportare? E se ce ne sono molti? Per esempio, 50?
Capisco che è possibile passare le quotazioni per molti strumenti in uno script, ma non sarà un sostituto completo del DDE, dove i tick non vengono persi.
Il punto è che non abbiamo il compito di "fornire un'interfaccia di quotazione".
Il nostro obiettivo è quello di creare un ambiente completo e autosufficiente per lo sviluppo di sistemi analitici. Un tale ambiente in modo che anche i programmi di terzi non hanno bisogno di essere utilizzati.
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Articolo pubblicato Come scrivere una DLL per MQL5 in 10 minuti e scambiare dati?:
Autore: Renat Fatkhullin