Discussione sull’articolo "Come Scambiare i Dati: Una DLL per MQL5 in 10 minuti" - pagina 2

 
LEHayes:

...

Va bene che lo solleviate, ma non serve a nulla lamentarsi, se non si è disposti a presentare soluzioni o suggerimenti su come raggiungere l'obiettivo.

...

In realtà è un bene che pfx abbia sollevato il problema e che MetaQuotes lo risolva, perché conosce MetaTrader meglio di tutti noi (BTW, Renat Fatkhullin, l'autore di questo articolo, è anche CEO di MetaQuotes). Il fatto che qualcuno abbia sollevato la questione non significa che abbia una soluzione al problema.

E sono d'accordo sul fatto che non ha senso dire"è meglio fare chiamate poco frequenti", quando la .dll viene effettivamente chiamata a ogni tick. Ed è bello sentirlo dire dal CEO di MetaQuotes, l'onestà è una buona cosa per cambiare di questi tempi.

@ pfx, sembra che abbiano cambiato il paragrafo che hai citato ...

5. Wrapper per chiamate DLL e perdita di velocità nelle chiamate

Come già descritto in precedenza, ogni chiamata di funzioni DLL viene racchiusa in uno speciale wrapper per garantire la sicurezza.

Questo binding maschera il codice di base, sostituisce lo stack, supporta gli accordi stdcall / cdecl e controlla le eccezioni all'interno delle funzioni chiamate.

Questo lavoro porta inevitabilmente a un ritardo della funzione chiamante.

Pertanto, non è consigliabile eseguire chiamate di funzioni DLL molto frequenti (centinaia o migliaia di volte al secondo) per piccole operazioni.

È meglio effettuare chiamate poco frequenti.

..a questo...

5. Wrap delle chiamate DLL e perdita di velocità nelle chiamate

Come già descritto in precedenza, ogni chiamata di funzioni DLL viene racchiusa in uno speciale wrapper per garantire la sicurezza. Questo binding maschera il codice di base, sostituisce lo stack, supporta gli accordi stdcall / cdecl e controlla le eccezioni all'interno delle funzioni chiamate.

Questa mole di lavoro non comporta un ritardo significativo nella chiamata delle funzioni.

Spero che risolvano davvero il problema della velocità di chiamata delle .dll, e che non si limitino a modificare qualche paragrafo dell'articolo per evitare domande.

A proposito di domande, spero che Renat Fatkhullin voglia rispondere alla domanda di pfx " Voglio dire, seriamente, che tipo di affermazione è questa ", perché Renat ha scritto nell'ultima riga dell'articolo: "Grazie per il vostro interesse! Sono pronto a rispondere a qualsiasi domanda", o almeno a cambiare il paragrafo.

Siamo interessati a sentire anche la tua risposta :).

Scriverò di più su questo argomento quando avrò tempo.

 

Non so quando Renat abbia scritto questo articolo, ma Microsoft non offre più Visual Studio 2005. Offrono Visual Studio 2010 e 2011 beta e sembra che stiano per abbandonare il 2008.

Fare clic qui per Microsoft Visual Studio 2010 e fare clic qui per il 2008. Il programma di installazione è un programma di installazione web che è fastidioso se si dispone di una connessione Internet lenta. Offrono un programma di installazione offline come immagine ISO, che però contiene anche Visual Studio C# e Visual Basic. Dopo l'installazione, entrambi gli Studio richiedono alcuni aggiornamenti che hanno dimensioni notevoli in termini di MB.

Per coloro che non amano l'installazione di Visual Studio, ci sono altre alternative che possono essere consultate su https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments. Le mie preferite sono NetBeans e Code::Block. NetBeans è supportato da Oracle ed è la base per Oracle Solaris Studio. Tuttavia NetBeans non viene fornito con un compilatore, per cui è necessario utilizzare il compilatore Cygwin o MinGW, il che è forse fastidioso per un principiante. L 'ultima versione stabile del famoso DevC++ risale a 7 anni fa, ora il suo sito web è pieno di link morti, sembra che nessuno se ne occupi più, per cui non lo consiglio.

È meglio usare Visual Studio, perché ci sono molte opzioni con cui si può giocare - se si sa come farlo.

Download Overview
  • www.microsoft.com
Download free 90-day trials of Visual Studio products, free Visual Studio Express products, and additional Visual Studio software.
 
onewithzachy:

A proposito di domande, spero che Renat Fatkhullin voglia rispondere alla domanda di pfx " Voglio dire, seriamente, che tipo di dichiarazione è questa ", perché Renat ha scritto nella riga finale dell'articolo "Grazie per il vostro interesse! Sono pronto a rispondere a qualsiasi domanda", o almeno alla modifica del paragrafo.
Non c'è decelerazione sulle chiamate DLL.
 
Qualcuno sa come creare una DLL a 64 bit o consentire a MQL5 di caricare una DLL a 32 bit? MQ5 non carica il mio script di prova perché la mia DLL non è "a 64 bit". Grazie.
 
È buono thnx
 

Ottimo tutorial!

Devo creare dei file di riferimento?

 

Devo modificare Fann2MQl.dll (documentato in http://fann2mql.wordpress.com) perché non funziona in MT5. Il motivo è che in MT5 non è possibile aprire i file dove si vuole. Devono essere aperti in due posti predefiniti (per la modalità forward e per la modalità testing).

Quindi la domanda è: quale funzione invocare al posto di fopen e quale file header includere? Perché sembra che i file debbano essere aperti dall'interno di MT5. Ogni tentativo di aprire un file aggirando terminal.exe (come avviene utilizzando fopen da una dll) viene automaticamente inoltrato o alla directory di installazione o al desktop, a seconda della modalità di lancio di terminal.exe utilizzata (cliccando sull'icona o dalla riga di comando con il parametro /portable).

Questo inoltro è inoltre bizzarro, perché il nome risultante del file si trova solo nel primo lemma del percorso.

About
  • fann2mql.wordpress.com
Fann2MQL is a Neural Network processing package for MetaTrader4. It enables you to write your own Expert Adviser or Indicator taking advantage of Fast Artificial Neural Network Library. It’s very simple and efficient. You can use up to 1024 network simultaneously without recompiling it and in case you need more power it lets you perform...
 
RyanLeland:

Qualcuno sa come creare una DLL a 64 bit o consentire a MQL5 di caricare una DLL a 32 bit? MQ5 non carica il mio script di prova perché la mia DLL non è "a 64 bit". Grazie.

Questo problema può essere risolto, istruzioni qui: Solution Explorer -> Fare clic con il pulsante destro del mouse sulla soluzione -> Configuration Manager -> Menu a discesa della piattaforma della soluzione attiva -> selezionare x64 -> fare clic su Chiudi -> Ricostruisci soluzione

Spero che questo aiuti.

Buona fortuna.

 

Ciao,

Questo non funziona con la DLL prodotta da Microsoft Visual Studio 2013 Express edition, vedi allegato.

Non sembra trovare la libreria MSVCR120D_APP.DLL e c'è un problema anche con KERNEL_32.

Qualcuno ha riscontrato un problema simile? Come posso risolvere questo problema, per favore?

Grazie a tutti

 

mql5 supporta l'importazione di dll che includono funzioni di callback?

Per esempio:

C'è una dll chiamata tclient.dll, che include la funzione sottostante:

typedef TCLIENT_API void(*call_back)(Tick* p);

TCLIENT_API int sub_tick(CTX ctx, const char* insId, call_back f);

Allora come dovrei dichiarare e chiamare sub_tick in mql5?

#import "tclient.dll"

//Come dichiarare la funzione "sub_tick"?

#import

void ontick(Tick &ticks[])

{}

int OnInit()

{

/come chiamare la funzione "sub_tick"?

}