Ho seguito attentamente le vostre indicazioni ma non riesco a farlo funzionare con Matlab 2007b. Ricevo continuamente questi errori quando cerco di utilizzare gli esempi precostituiti con il terminale MT5.
2010.08.29 10:33:30 TestMLEngine (EURUSD,H1) Impossibile aprire 'C:\Users\QuantFX\AppData\Roaming\MetaQuotes\Terminal\216E2BD2BB8CE60176A41ADF6AC1C76D\MQL5\Libraries\LibMlEngine.dll' (126)
2010.08.29 10:33:47 TestDllMatlab (EURUSD,H1) Impossibile aprire 'C:\Users\QuantFX\AppData\Roaming\MetaQuotes\Terminal\216E2BD2BB8CE60176A41ADF6AC1C76D\MQL5\Libraries\nnSMA.dll' (126)
Non so cosa pensare, perché sono in grado di ottenere il progetto menzionato nell'articolo"Come scambiare i dati: A DLL for MQL5 in 10 Minutes " che si trova qui https://www.mql5.com/en/articles/18 funziona senza problemi.
2010.08.29 10:44:16 MQL5DLL_Test (EURUSD,H1) Violazione dell'accesso in scrittura a 0x00000000 in 'C:\Users\QuantFX\AppData\Roaming\MetaQuotes\Terminal\216E2BD2BB8CE60176A41ADF6AC1C76D\MQL5\Libraries\MQL5DLLSamples.dll'
2010.08.29 10:44:16 MQL5DLL_Test (EURUSD,H1) Sostituire: Un gatto marrone veloce salta sopra il cane pigro
2010.08.29 10:44:16 MQL5DLL_Test (EURUSD,H1) Array: 0 1 2 3 4 5 6 7 8 9
2010.08.29 10:44:16 MQL5DLL_Test (EURUSD,H1) Tempo 297 msec, int: -752584127 double: 17247836076609
Quindi il terminale ovviamente non ha problemi con le violazioni di accesso alla cartella \Libraries, e sono certo che le "Opzioni" dell'Expert Advisor consentano l'importazione di dll e l'autotrading... Qualsiasi aiuto sarebbe molto apprezzato perché sono rimasto perplesso da quando ho letto questo articolo. Grazie in anticipo
- 2010.01.27
- MetaQuotes Software Corp.
- www.mql5.com
Finalmente è riuscito a funzionare... Devo dire che l'articolo è eccellente. Non ho molta esperienza con Visual Studio e sono un principiante nella programmazione di metatrader. Quindi, questa sembrava una sfida con tutti gli errori che ricevevo. Anche se alla lunga è molto facile per tutte le versioni di matlab e visual studio.A tutti coloro che si cimentano per la prima volta nel collegamento tra Metatrader e Matlab, suggerisco di procedere come segue per acquisire una maggiore consapevolezza, se non si è mai lavorato con il motore di matlab o con le librerie esterne di metatrader. 1. Creare il progetto fornito con matlab che si trova in matlabroot\externs\examples\eng_mat\engwindemo.c seguendo questo articolo. http://www.mathworks.com/support/solutions/en/data/1-78077S/index.html?product=ML&solution=1-78077S Compilatelo e, in caso di problemi, come la mancanza di file dll, usate dependency walker, che si trova qui http://www.dependencywalker.per determinare quali file mancanti devono essere inseriti nella cartella C:\Windows\System 32 per far funzionare la versione di matlab engine che si sta utilizzando. È bene notare che potrebbe essere necessario inserire molti file nella cartella System 32 o conoscere i punti giusti in cui collegarli nel progetto. Anche se la maggior parte delle dll si trova nella cartella matlabroot\bin\win(32 o 64). Dopo aver inserito i primi file dll necessari, tornare indietro e provare a costruire di nuovo il progetto. Si potrebbe scoprire che non è necessario fare tutto quello che suggerisce dependency walker. Se riuscite a compilare ed eseguire il progetto, allora avete quasi finito... 2. Costruite il progetto suggerito nell'articolo Come scambiare i dati: A DLL for MQL5 in 10 Minutes https://www.mql5.com/en/articles/18 . Se il progetto funziona, ricordate che quando create il progetto di cui sopra state combinando le due cose. Ricordate tutti i passaggi seguiti e quando siete pronti a compilare il progetto assicuratevi che "stdafx.h" sia il primo header #include in DLLUnit.cpp e che abbiate disattivato gli header precompilati, subito prima della compilazione. L'utilizzo dei file di cui sopra così com'è può dare alcuni avvertimenti facilmente risolvibili, ma il progetto dovrebbe funzionare senza problemi. I miei due centesimi aggiunti qui possono sembrare la guida per gli imbranati a questo progetto, ma fare queste cose potrebbe farvi risparmiare un paio d'ore del vostro tempo libero se doveste costruire questo progetto con un'altra versione di matlab o usare visual studio.
Salute
Se non sbaglio, il tipo di matrici Matlab nella Tabella 1 non è corretto. Manca la lettera u. Cioè, ad esempio, il tipo uint16 è responsabile dell'intervallo da 0 a 65535, non il tipo int16. E così via...
Classe | Intervallo di valori | Funzione di conversione |
|---|---|---|
Numero intero a 8 bit con segno | da -27 a27-1 | int8 |
Numero intero a 16 bit con segno | da -215 a215-1 | int16 |
Numero intero firmato a 32 bit | da -231 a231-1 | int32 |
Numero intero firmato a 64 bit | da -263 a263-1 | int64 |
Numero intero a 8 bit senza segno | da 0 a28-1 | uint8 |
Numero intero a 16 bit senza segno | da 0 a216-1 | uint16 |
Numero intero a 32 bit senza segno | da 0 a232-1 | uint32 |
Numero intero a 64 bit senza segno | da 0 a264-1 | uint64 |
Buon pomeriggio, grazie per l'ottimo articolo, molto utile!
Tuttavia, è sorto un problema. Forse qualcuno l'ha riscontrato.
Quando chiudo un Expert Advisor, MT5 si blocca completamente. Utilizzo MS Visual Studio2010 + Matlab r2011a.
Quale pensate possa essere il motivo? Grazie in anticipo!
Buon pomeriggio. Ho fatto tutto come nell'articolo, ma quando ho eseguito lo script TestMlEngine è comparso un errore:
2011.12.17 15:55:23 TestMLEngine(EURUSD,H1) Impossibile aprire 'C:\Users\H_F_M\AppData\Roaming\MetaQuotes\Terminal\DEA4AAFB99C996D79821EC8BDBADDC3C\MQL5\Libraries\LibMlEngine.dll' (126)
e poi immediatamente:
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxGetSizeOfName' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxGetLogical' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxGetInt' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxGetDouble' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxInputLogical' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxInputInt' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxInputDouble' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxInputChar' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxOpen' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxClose' in 'LibMlEngine.dll'
Da qualche parte sul forum ho trovato che questo è dovuto a dll mancanti, con l'aiuto di depends.exe ho trovato quello che mancava, l'ho buttato nella stessa cartella, è servito, ma non del tutto. Ora si vede:
2011.12.17 15:57:59 TestMLEngine (EURUSD,H1) Impossibile aprire 'C:\Users\H_F_M\AppData\Roaming\MetaQuotes\Terminal\DEA4AAFB99C996D79821EC8BDBADDC3C\MQL5\Libraries\LibMlEngine.dll' (127).
e l'elenco continua con "Impossibile trovare...". Potete dirmi qual è il problema? Sto lottando già da una settimana...
Sì, ho Win7 + Matlab R2011a + VS201.
.
Buon pomeriggio. Ho fatto tutto come nell'articolo, ma quando ho eseguito lo script TestMlEngine è comparso un errore:
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile aprire 'C:\Users\H_F_M\AppData\Roaming\MetaQuotes\Terminal\DEA4AAFB99C996D79821EC8BDBADDC3C\MQL5\Libraries\LibMlEngine.dll' (126)
e poi immediatamente:
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxGetSizeOfName' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxGetLogical' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxGetInt' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxGetDouble' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxInputLogical' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxInputInt' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxInputDouble' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxInputChar' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxOpen' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Impossibile trovare 'mlxClose' in 'LibMlEngine.dll'
Da qualche parte sul forum ho trovato che questo è dovuto a dll mancanti, con l'aiuto di depends.exe ho trovato quello che mancava, l'ho buttato nella stessa cartella, ha aiutato, ma non del tutto.Ora si vede:
2011.12.17 15:57:59 TestMLEngine (EURUSD,H1) Impossibile aprire 'C:\Users\H_F_M\AppData\Roaming\MetaQuotes\Terminal\DEA4AAFB99C996D79821EC8BDBADDC3C\MQL5\Libraries\LibMlEngine.dll' (127).
e l'elenco continua con "Impossibile trovare...". Potete dirmi qual è il problema? Sto lottando già da una settimana...
Sì, ho Win7 + Matlab R2011a + VS201.
Quando ho installato Matlab, il percorso di sistema era solo "C:\Program Files\MATLAB\R2011b\bin". Ho aggiunto "C:\Program Files\MATLAB\R2011b\bin\win32". Le Dll della directory Matlab sono diventate visibili e Matlab Engine si è avviato. Prima ho scritto che non riuscivo a vedere le dll.
Buongiorno) Ho un altro problema: per qualche motivo il catalogo "Borland" non viene trovato nella cartella <MATLAB>extern\lib\win32\, sebbene Borland C++ Builder 6 sia installato. Di conseguenza, nemmeno i file libeng.lib e libmx.lib possono essere collegati al progetto. Far dà il seguente risultato con il comando "implib libeng libeng.lib libeng.dll":
)
E la cartella Borland non c'era e non c'è ancora... Qualcuno può dirmi come affrontare questo problema? O almeno mi lancia questi due file?:-)
In generale, vi prego di aiutarmi, perché non capisco qualcosa....
Per la purezza dell'esperimento ho installato VMware, dove ho installato 2 sistemi - XP e 7.
Poi ho installato Matlab R2011b, installato MCR, installato l'ultima build di MT5. Dall'archivio allegato all'articolo, tutti i file sono stati sparsi in cartelle, come scritto nelle istruzioni dell'archivio. Ho compilato i file mq5 in ex5 (cioè ho cancellato i file ex5 esistenti nell'archivio e ho messo al loro posto quelli appena compilati). Avvio MT5, avvio Matlab (ho provato a non avviarlo - il risultato è lo stesso), nel terminale clicco su TestMlEngine e mi dà:
TestMLEngine (EURUSD,H1) 13:44:58 Impossibile aprire 'C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\DEA4AAFB99C996D79821EC8BDBADDC3C\MQL5\Libraries\LibMlEngine.dll' (126)
TestMLEngine (EURUSD,H1) 13:44:58 Impossibile trovare 'mlxClose' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Impossibile trovare 'mlxOpen' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Impossibile trovare 'mlxInputChar' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Impossibile trovare 'mlxInputDouble' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Impossibile trovare 'mlxInputInt' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Impossibile trovare 'mlxInputLogical' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Impossibile trovare 'mlxGetDouble' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Impossibile trovare 'mlxGetInt' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Impossibile trovare 'mlxGetLogical' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Impossibile trovare 'mlxGetSizeOfName' in 'LibMlEngine.dll'.
Non so cosa fare. Ho provato tutto quello che potevo. Ho provato la DLL dell'articolo "Come scrivere una libreria DLL per MQL5 e scambiare dati in 10 minuti?" ().(https://www.mql5.com/ru/articles/18)- funziona senza problemi.
Qualcuno sa dirmi in quale altro modo è possibile raggiungerla? Cosa sto facendo di sbagliato?
Grazie in anticipo.
- 2010.01.27
- MetaQuotes Software Corp.
- www.mql5.com
Quando ho installato Matlab, il percorso di sistema era solo "C:C:\Program Files\MATLAB\R2011b\bin". Ho aggiunto "C:\Program Files\MATLAB\R2011b\bin\win32". Le Dll della directory Matlab sono diventate visibili e Matlab Engine si è avviato. Prima ho scritto che non riuscivo a vedere le dll.
Se ti riferisci alla variabile d'ambiente Path, ho aggiunto "C:\Program Files\MATLAB\R2011b\bin\win32", ma la situazione non è cambiata :-(
- 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
Il nuovo articolo Interazione MetaTrader 5 e MATLAB è stato pubblicato:
In questo articolo si parlerà dei dettagli dell'interazione tra MetaTrader 5 e il pacchetto matematico MatLab. Mostra il meccanismo di conversione dei dati, il processo di sviluppo di una libreria universale per interagire con il desktop MatLab. Copre anche l'uso di DLL generate dall'ambiente MatLab. Questo articolo è destinato a lettori esperti che conoscono C++ e MQL5.
Questo metodo di interazione non può essere definito elegante e veloce, ma è il più affidabile e copre l'intero pacchetto MATLAB. Naturalmente, dovremmo menzionare la velocità di sviluppo del modello finale. L'essenza dello sviluppo è scrivere un wrapper di libreria universale per l'interazione con MetaTrader 4/5 e MATLAB Engine. Dopo questo script/indicatore/esperto MetaTrader 4/5 può gestire il desktop virtuale MATLAB. E l'intero algoritmo matematico può essere memorizzato nel programma MQL come stringhe, quindi puoi usarlo per proteggere la tua proprietà intellettuale (per maggiori dettagli vedi l'articolo "Proteggetevi, sviluppatori!"). Può anche essere memorizzato in file separati di funzioni m o funzioni P nella cartella <MetaTrader 5>\MQL5\Libraries.
Possibili ambiti di applicazione di tale interazione:
Procediamo. Spero che tu abbia letto i 1.1 tipi di dati in MATLAB e MQL5, 1.2 Confronto tra Tipi di Dati MQL5 e MATLAB, 2.1 MATLAB Engine API e Funzioni MCR2.3 C++ Libreria Standard Input/Output , poiché non li metteremo in pausa e li analizzeremo più . Leggere attentamente il seguente schema a blocchi, che illustra l'algoritmo della futura libreria:
Autore: Andrey Emelyanov