Discussione sull’articolo "Come Esportare Quotazioni da МetaTrader 5 ad Applicazioni .NET Utilizzando i Servizi WCF"

 

Il nuovo articolo Come Esportare Quotazioni da МetaTrader 5 ad Applicazioni .NET Utilizzando i Servizi WCF è stato pubblicato:

Vuoi organizzare l'esportazione delle quotazioni da MetaTrader 5 alla tua applicazione? La giunzione MQL5-DLL permette di creare tali soluzioni! Questo articolo ti mostrerà uno dei modi per esportare le quotazioni da MetaTrader 5 ad applicazioni scritte in .NET. Per me è stato più interessante, razionale e facile implementare l'esportazione dei preventivi utilizzando proprio questa piattaforma. Sfortunatamente, la versione 5 non supporta ancora .NET quindi, come ai vecchi tempi, utilizzeremo win32 dll con supporto .NET come interlayer.

Ho creato un esempio di tabella tick utilizzando il servizio. Il progetto è allegato nell'archivio e denominato WindowsClient. Il risultato del suo lavoro è presentato di seguito:

Autore: Alexander

 

Ben fatto! Non posso dire altro. Purtroppo, la connessione MQL5 - .NET richiede ancora un intermediario, il che rende l'intera costruzione troppo macchinosa.

 
Itso:

Purtroppo la comunicazione MQL5 - .NET richiede ancora un intermediario, il che rende l'intera costruzione troppo macchinosa.

Sono d'accordo. A proposito, per le interazioni semplici c'è una cosa fantastica: Inverse P/Invoke - interazione senza intermediari.

Ho anche provato a usare ILMerge per unire tutti e 3 gli assiemi in QExportWrapper.dll - non ha funzionato, o meglio ha funzionato, ma dopo l'unione da mql5 non vede le funzioni esportate

 

Ciao!

Ho copiato i vostri file sorgente e li ho ricompilati per eseguirli.

Ma ho avuto un crash della MT5.

Come posso eseguire il debug / risolvere il problema?

Grazie!

 

1. Per prima cosa, provare a utilizzare i file compilati, situati nell'archivio bin.rar

Ad esempio, la directory del terminale client MetaTrader5 è "C:\Program Files\MetaTrader 5\".

Creiamo una nuova cartella per l'esperto QExporter.mq5, ad esempio"QE", nella cartella "C:\Program Files\MetaTrader 5\MQL5\Experts\".

C:\Program Files\MetaTrader 5\MQL5\Experts\QE\QExporter.mq5 (1615 bytes)
C:\Program Files\MetaTrader 5\MQL5\Experts\QE\QService.mqh (4380 bytes)

C:\Program Files\MetaTrader 5\MQL5\Libraries\QExport.dll (5632 bytes)
C:\Program Files\MetaTrader 5\MQL5\Libraries\QExport.Service.dll (7168 bytes)
C:\Program Files\MetaTrader 5\MQL5\Libraries\QExportWrapper.dll (27648 bytes)

C:\Program Files\MetaTrader 5\WindowsClient\QExport.Client.dll (6656 bytes)
C:\Program Files\MetaTrader 5\WindowsClient\QExport.dll (5632 bytes)
C:\Program Files\MetaTrader 5\WindowsClient\WindowsClient.exe (12288 bytes)

Dopo la compilazione di QExporter.mq5, il file compilato QExporter.ex5 apparirà nella cartella:

C:\Program Files\MetaTrader 5\MQL5\Experts\QE\QExporter.ex5 (6706 byte)

Dopo averlo collegato al grafico EURUSD,H1 e aver eseguito WindowsClient.exe, ho ottenuto la seguente immagine:

L'ho testato a buld 249 (18 febbraio).

 
sgfxtrader:

Ho copiato i vostri file sorgente e li ho ricompilati per eseguirli.

Ma ho avuto un crash della MT5.

Come posso eseguire il debug/risolvere il problema?

Ciao,

Prima di tutto, cercherei di eseguire il debug dei sorgenti di mql5 per trovare la funzione che causa l'errore - impostare i punti di interruzione prima di tutte le funzioni della dll che chiamano. Purtroppo non ho potuto collegare la dll a terminal.exe per il debug perché il terminale si è bloccato. Forse nelle nuove versioni è possibile

Inoltre vorrei sapere quale sistema operativo utilizzate. Io ho un sistema operativo a 32 bit e quindi non ho avuto la possibilità di verificarlo su sistemi a 64 bit.

Avete provato a eseguire i file compilati?

E un'altra cosa, provate a eseguire ConsoleService e ConsoleClient nella soluzione. Forse il problema non è legato a mql o alla libreria wrapper.

Infine, suppongo che abbiate dimenticato di creare (o copiare) il file terminal.exe.config. Provate a farlo.

 

È una buona notizia per MQL5 che può utilizzare la wrap dll di NET.

Perché Mql4 non può utilizzare questa modalità per comunicare con le DLL avvolte da Net?

 
DxdCn posted # :

È una buona notizia per MQL5 che può utilizzare la wrap dll di NET.

Perché Mql4 non può utilizzare questa modalità per comunicare con le DLL wrappate di Net?

È possibile utilizzare una DLL ibrida in mt4, il problema è che mql4 non ha strutture. Ma non è un grosso problema, si possono passare alcuni parametri al posto delle strutture.
 
sgfxtrader:

Ciao!

Ho copiato i vostri file sorgente e li ho ricompilati per eseguirli.

Ma ho avuto un crash della MT5.

Come posso eseguire il debug / risolvere il problema?

Grazie!


Ho lo stesso problema.

2010.07.27 12:11:09 Esperti L'inizializzazione di QExporter(EURUSD,H1) non è riuscita.

 

Grazie mille per l'esempio postato. Da una settimana (la sera) sto lottando per creare una libreria per lo scambio di dati tra.net e mql5.

Non sono bravo in C++ e questo post mi è stato molto utile.

C'è solo un problema. Dopo la compilazione sotto x64, l'inizializzazione del servizio dà un errore.

ExportService^ service = gcnew ExportService(serverName); // <- ServiceManaged.cpp 

Il processo si "chiude" senza alcuna spiegazione.

Come posso inserire questo errore nel log per ulteriori analisi? O forse avete già riscontrato questo problema e c'è una soluzione ????.

 

Sono riuscito a farlo funzionare con MT5 a 32 bit e, dopo averlo ricompilato per x64, sono riuscito a farlo funzionare con MT5 a 64 bit.... tuttavia, quando provo a eseguire l'EA nel tester della strategia, entrambi si bloccano in modo spettacolare.

Vorrei usarlo per esportare alcuni dati di prezzi e indicatori in una tabella di database per fare alcune analisi con software esterni..... idee su cosa potrebbe causare questo crash? Questa è la soluzione più vicina a quella che ho trovato finora.


Joe