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

 
mql5 писал(а)  :

1) quale versione del terminale è 32 o 64 bit?

2) quale versione di dll è 32 o 64 bit?

1) c'è una scelta? Penso che solo x86 si scarichi da qui...

2) dll 32

 

La reinstallazione di MT5 ha dato il seguente risultato. Quando si lancia lo script, nel log appare la seguente informazioneCannot find function fnCalculateSpeed in 'MQL5DLLSamples.dll'.

Sto allegando uno screenshot della libreria da Dependency Walker, nel caso.

 
denkir:

La reinstallazione di MT5 ha dato il seguente risultato. Quando si lancia lo script, nel log appare la seguente informazioneCannot find function fnCalculateSpeed in 'MQL5DLLSamples.dll'.

Sto allegando uno screenshot della libreria da Dependency Walker solo nel caso.

Qual è il numero di build del terminale reinstallato?
 
stringo:
Qual è il numero di build del terminale reinstallato?
Apparentemente vecchio, non l'ultima build 240.
 
Renat писал(а) :
Apparentemente vecchio, chiaramente non l'ultima build 240.

Sì, sicuramente non l'ultimo...

Dopo l'aggiornamento a 240 bild la prima esecuzione dello script ha funzionato bene. Mi sono eccitato. Ma le corse successive hanno portato solo a un crash. MT 4 funzionava in parallelo.

 

Dopo il riavvio, tutto sembra funzionare! :-))

Ho commentato la funzione fnCrashTest(int arr)

Grazie a tutti coloro che hanno aiutato!

 
In generale, non sono riuscito ad aumentare la velocità di calcolo utilizzando dll per più di 2,5 volte. Questo dimostra l'alta velocità di MQL5, e per la maggior parte dei compiti di trading non ha senso preoccuparsi della dll, tranne quando è necessario proteggere il codice e quando sono necessari calcoli "pesanti".
 
joo:
In generale, non sono riuscito ad aumentare la velocità di calcolo utilizzando dll per più di 2,5 volte. Questo dimostra l'alta velocità di MQL5. Per la maggior parte dei compiti di trading non ha senso preoccuparsi delle dll, tranne quando è necessario proteggere il codice e quando sono richiesti calcoli "pesanti".

L'ottimizzazione del registro finale di MQL5 non è ancora abilitata - la velocità di esecuzione aumenterà ancora seriamente.
 

Renat, grazie per l'articolo. Penso che molte persone ne avranno bisogno più di una volta. Ho una domanda secondaria legata al dll. (Terminale 249, Editore 248).

Esempio

Abbiamo un libra demo.dll con una sola funzione.

_DLLAPI void __stdcall demo(char *stream, char *buf){ buf=stream;}

Abbiamo uno script mql demo.mq5.

#property copyright "2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

#import "demo.dll"
void demo(string s1, string &s2);
#import

void OnStart(){
   string a="TEST"; string b;
   demo(a,b);
   Print(b);    
}

Il compilatore non mostra errori o avvertimenti.

Eseguilo nel terminale e ottieni il seguente

Controllando nel debug visivo, ho anche scoperto che la funzione demo.dll stessa ha il suo primo carattere, non una stringa.

La domanda è

Qual è il problema? Come passare la stringa da MQL a dll in modo umano?

 
Usarewchar_t invece di char