Discussione su "Come scrivere una DLL per MQL5 e scambiare dati in 10 minuti". - pagina 9

 
Renat:

Dovresti migliorare il tuo livello tecnico.

Per i programmi a 64 bit avete bisogno di librerie a 64 bit e non c'è modo di collegare ragionevolmente le librerie a 32 bit. Per installare la versione a 32 bit, il programma di installazione deve essere eseguito con lo switch /32

Riscriverò l'articolo e aggiungerò caratteristiche interessanti che sono state implementate da tempo in MetaEditor e nelle piattaforme MT4 e MT5. Molti sviluppatori non sono a conoscenza delle nuove caratteristiche.

Grazie Renat per la tua risposta. Al giorno d'oggi i mercati sono piuttosto complicati, e il trading ti porta quasi fuori dalla tua portata e non c'è quasi più tempo per migliorare nell'area tecnica. Non capisco davvero la differenza tra programmi a 32 bit e a 64 bit. Posso solo vedere che crea alcuni problemi inutili per gli utenti. Tutti stanno guidando da qualche parte e Microsoft compreso, vogliono ottenere più velocemente e più bruscamente, ma gli utenti devono affrontare un sacco di problemi. Non vedo alcuna differenza di velocità tra 64-bit e 32-bit. Tuttavia, il mio processore è i7-4 - l'ultimo Intel, forse per questo. Vedo anche che Microsoft sta comprimendo il C++. Hanno persino rimosso l'opzione di lavorare con i moduli C++ nell'ultimo compilatore. E quando ho chiesto perché? La risposta è perché non provi il nuovo e più perfetto C++. Quindi, se state guardando al futuro, dovreste tenerne conto anche voi.
 
ANG3110:


E vedo che Microsoft ha iniziato a comprimere il C++. Nell'ultimo compilatore hanno persino rimosso la possibilità di lavorare con i moduli in C++. E quando ho chiesto perché? La risposta è perché non provi il nuovo e migliorato C++. Quindi, se si guarda al futuro, si dovrebbe tenere conto anche di questo.

Beh, Microsoft è un noto assassino della tecnologia, e ultimamente si sta scavando una tomba dopo l'altra.

Perché interferire con esso - lasciarlo cadere nel suo stesso buco. È così in senso figurato, per non perdere tempo in dettagli tecnici. Chi vuole i dettagli - ce ne sono migliaia su Internet. Dopo "meglio C#" non ho altre parole.

 
:)
 
Colleghi, come faccio a collegare le librerie MT in VS? in modo che il mio studio non sottolinei stringhe, datetime...
 
Renat Fatkhullin:

Dovresti migliorare il tuo livello tecnico.

Per i programmi a 64 bit avete bisogno di librerie a 64 bit e non c'è modo di collegare ragionevolmente le librerie a 32 bit. Per installare la versione a 32 bit dovete eseguire il programma di installazione con lo switch /32.

Riscriverò l'articolo e aggiungerò caratteristiche interessanti che sono state implementate da tempo in MetaEditor e nelle piattaforme MT4 e MT5. Molti sviluppatori non sono a conoscenza delle nuove caratteristiche.

C'è un esempio per creare una dll a 64 bit per la versione a 64 bit del terminale? E per quanto riguarda le "cose fighe" è interessante sapere)
 

Si è rivelato facile!

Installato il libero Visual Studio Community 2015 (esattamente Community, in quanto ha il supporto x64, a differenza di Express) Le versioni a pagamento hanno anche x64 naturalmente, ma stavo guardando le opzioni gratuite. Web Installer mi ha dato un errore, quindi ho installato dall'immagine ISO. Durante l'installazione, selezionate l'installazione "Custom" e spuntate C++ (non è installato di default).

Poi ho fatto tutto come descritto nell'articolo, cioè ho creato un progetto Win32. Ho fatto un assemblaggio, che il terminale x64 ha rifiutato di accettare (come previsto).

Poi nella scheda "Build" -> "Configuration Manager" ho cambiato la piattaforma in x64, (puoi anche cambiare "Active Solution Platform" in x64)


Costruito di nuovo. La nuova dll è risultata essere nella cartella \x64\Debug (la build finale sarà in x64\Release\), che il terminale x64 ha processato senza problemi e ha restituito il seguente output:

19:29:01.883 dll_test (EURUSD.e,H1) Tempo 16 msec, int: -752584127 double: 17247836076609.0
19:29:01.883 dll_test (EURUSD.e,H1) Array: 0 1 2 3 4 5 6 7 8 9
19:29:01.883 dll_test (EURUSD.e,H1) Sostituire: Un veloce gatto marrone salta il cane pigro
19:29:01.886 dll_test (EURUSD.e,H1) Violazione di accesso a 0x000007FEFB0F176F scrivere a 0x000000000000 in '...\MQL5\Libraries\ConsoleApplication1.dll'
e ulteriore descrizione dell'errore intercettato
Cioè, tutto funziona!!!

Downloads | Visual Studio
Downloads | Visual Studio
  • www.visualstudio.com
Visual Studio Community 2015 with Update 1 - Free Visual Studio Community 2015 with Update 1 is a free, fully featured, and extensible IDE for individual developers, open source projects, academic research, education, and small professional teams. Create applications for Windows, Android, and iOS as well as web applications and cloud services...
 

Nota:

Quando si trasferisce la DLL su un altro computer, si rifiuta di funzionare perché sta usando componenti di VS stesso. Il problema è risolto in Project -> Properties -> Use MFC, impostato su "Use MFC in static library". Dopo aver ricostruito e ricompilato la DLL

L'ho trovato sul forum:

È possibile ottimizzare gli EA con le DLL non solo sul computer locale, ma anche su una rete locale. Per fare questo sui computer di rete, aggiungete la chiave /dlls al registro di sistema per gli agenti di prova. Chiamare l'editor di registro: regedit

Renat Fatkhullin:

Per gli agenti installati esistenti, i comandi di avvio possono essere cambiati solo attraverso il registro di sistema nei rami HKEY_LOCAL_MACHINE\SYSTEM\urrentControlSet\Services\MetaTester-XXXX

Cliccate semplicemente su ogni parametro ImagePath e aggiungete /dlls alla fine della linea


 

Sono in procinto di legare ZeroMQ a MT4 tramite DLL.

In qualche modo è molto brutto. Il terminale si blocca sempre quando si avvia l'indicatore o quando si scarica. E non appare in modalità debug, quindi non so cosa stia succedendo.

 

Buon pomeriggio.

Per qualche ragione, quando eseguo l'esempio di test, lo script va in crash alla prima chiamata alla funzione importata

2016.07.30 23:30:14.088 Script script mql5dll_test (EURUSD,H1) rimosso

Cosa sto facendo di sbagliato?

 
EsEr:

Buon pomeriggio.

Per qualche ragione, quando eseguo l'esempio di test, lo script va in crash alla prima chiamata alla funzione importata

2016.07.30 23:30:14.088 Script script mql5dll_test (EURUSD,H1) rimosso

Cosa sto facendo di sbagliato?

questo articolo è vecchio di 6 anni, qualcosa deve essere cambiato.

Qual è il codice di errore?

Motivazione: