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

 
Grazie! Introduzione molto utile sia a wcf che a mql5
 

Anche io ho avuto un crash in strategy tester. in modalità normale, è tutto ok.

Qualcuno ha già trovato una soluzione?

 
Grazie per il vostro grande lavoro!
 

Ottimo lavoro Alexander. Non avevo mai codificato in C# prima d'ora e stavo cercando di far fluire le quotazioni di MT5 in Excel senza usare DDE-Server.

Alla fine sono riuscito a farlo funzionare modificando il tuo codice con MT5 a 32 bit. Il prossimo passo sarà x64.

SM

 
Recentemente ho visto un altro modo gratuito di programmare C# per MetaTrader
TradePlatform.NET
 
Attualmente sto cercando di implementare il mio wrapper c++ per la mia dll c# per l' interop mql5. Ho un problema con l'aggiunta del riferimento alla dll c# alla mia libreria c++. Potreste chiarire la seguente frase "...aggiungere il supporto CLR, System.dll, QExport.dll, Qexport.Service.dll al riferimento di compilazione". Sono riuscito a registrare la mia dll con l'utilità regasm, ad aggiungerla al gac e a ottenere un file di definizione del tipo .tlb. Il mio problema è che non riesco a trovare alcuna dichiarazione #import o #include nel codice sorgente che mi avete fornito. Il progetto sembra fare riferimento alle librerie dll in qualche modo misterioso. Qualcuno potrebbe spiegare il modo corretto per aggiungere un riferimento alla dll .NET a una libreria c++? Anche se non è una domanda puramente mql5, si riferisce direttamente all'articolo. Ho fatto ricerche sull'argomento per un bel po' di tempo e ancora non riesco a capire come una libreria c++ possa avere delle dll .NET nelle sue "dipendenze esterne" senza alcuna dichiarazione #import. Questo è il mio primo incontro con il c++ e finora non è stato piacevole, ho anche pensato di convertire la .dll in .lib e aggiungere un riferimento ad essa, ma prima di fare qualsiasi cosa ho deciso di chiedere consiglio a un esperto di COM. Utilizzo Windows 8 Ultimate x64 e compilo le mie dll in c# con VS2012 Ultimate. Per favore, aiutate i novizi.
How to Exchange Data: A DLL for MQL5 in 10 Minutes
  • 2010.01.27
  • MetaQuotes Software Corp.
  • www.mql5.com
Now not so many developers remember how to write a simple DLL, and what are special features of different system binding. Using several examples, I will try to show the entire process of the simple DLL's creation in 10 minutes, as well as to discuss some technical details of our binding implementation. I will show the step-by-step process of DLL creation in Visual Studio with examples of exchanging different types of variables (numbers, arrays, strings, etc.). Besides I will explain how to protect your client terminal from crashes in custom DLLs.
 
Burton:

Attualmente sto cercando di implementare il mio wrapper c++ per la mia dll c# per l' interop mql5. Ho un problema con l'aggiunta del riferimento alla dll c# alla mia libreria c++. Potreste chiarire la seguente frase "...aggiungere il supporto CLR, System.dll, QExport.dll, Qexport.Service.dll al riferimento di compilazione". Sono riuscito a registrare la mia dll con l'utilità regasm, ad aggiungerla al gac e a ottenere un file di definizione del tipo .tlb. Il mio problema è che non riesco a trovare alcuna dichiarazione #import o #include nel codice sorgente che mi avete fornito. Il progetto sembra fare riferimento alle librerie dll in qualche modo misterioso. Qualcuno potrebbe spiegare il modo corretto per aggiungere un riferimento alla dll .NET a una libreria c++? Anche se non è una domanda puramente mql5, si riferisce direttamente all'articolo. Ho fatto ricerche sull'argomento per un bel po' di tempo e ancora non riesco a capire come una libreria c++ possa avere delle dll .NET nelle sue "dipendenze esterne" senza alcuna dichiarazione #import. Questo è il mio primo incontro con il c++ e finora non è stato piacevole, ho anche pensato di convertire la .dll in .lib e aggiungere un riferimento ad essa, ma prima di fare qualsiasi cosa ho deciso di chiedere consiglio a un esperto di COM. Utilizzo Windows 8 Ultimate x64 e compilo le mie dll in c# con VS2012 Ultimate. Per favore, aiutate i novizi.
Molto stupidamente ho scoperto che posso fare riferimento alle dll c# da un progetto c++ facendo clic con il pulsante destro del mouse e scegliendo Riferimenti... nella finestra di dialogo. C'è così tanta robaccia in giro per il web.
 
È molto interessante, grazie. Ma forse oggi ci sono opzioni più semplici.
 
shelandr1:
Molto interessante... Grazie... Ma forse oggi ci sono modi più semplici*????

L'articolo è utile per parlare di WCF a coloro che non hanno familiarità con la tecnologia. A proposito, ho verificato le prestazioni di WCF via Internet sulla distanza Peter - Odessa, ottenendo una velocità decente di circa 14000 transazioni bilaterali/sec con pacchetti da 1kB. Personalmente mi piace la tecnologia per il suo orientamento agli oggetti, cioè non viene trasmesso un flusso di byte (anche se è possibile farlo), ma istanze di classi, cioè all'estremità ricevente non è necessario decodificare questo flusso.

E a proposito di citazioni, è più facile usare la mappatura della memoria. Iniziamo un'attività separata con un mutex in un'applicazione .NET, MQL4 carica i dati in memoria e ripristina il mutex, dopodiché l'applicazione legge i dati. È più semplice e veloce e non è necessaria una DLL. È necessario aggiungere DLL di sistema in MQL4 solo per supportare la mappatura e i mutex; è stato pubblicato un recente articolo su questo argomento.

 
joeykruger:

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

Ciao Joe,

C'è qualche trucco speciale per farlo funzionare su x64? L'ho appena compilato per x64, ma la dll si blocca con strani errori all'avvio.