Discussão sobre "Como escrever uma DLL para MQL5 e trocar dados em 10 minutos". - página 5

 
mql5 писал(а)  :

1) que versão do terminal é 32 ou 64 bit?

2) que versão da dll é 32 ou 64 bit?

1) existe uma escolha? Acho que apenas downloads x86 a partir daqui...

2) dll 32

 

Reinstalar o MT5 deu o seguinte resultado. Ao lançar o script, a seguinte informação aparece no registo Não é possível encontrar a função fnCalculateSpeed em 'MQL5DLLSamples.dll'.

Estou a anexar uma imagem da biblioteca da Dependency Walker só por precaução.

 
denkir:

Reinstalar o MT5 deu o seguinte resultado. Ao lançar o script, a seguinte informação aparece no registo Não é possível encontrar a função fnCalculateSpeed em 'MQL5DLLSamples.dll'.

Estou a anexar uma imagem da biblioteca da Dependency Walker só por precaução.

Qual é o número de construção do terminal reinstalado?
 
stringo:
Qual é o número de construção do terminal reinstalado?
Aparentemente velho, não os últimos 240 construídos.
 
Renat писал(а) :
Aparentemente velho, claramente não o último 240 construído.

Sim, definitivamente não é o último...

Depois de ter melhorado para 240 bild, a primeira versão do guião funcionou bem. Fiquei entusiasmado. Mas as corridas subsequentes apenas resultaram num acidente. O MT 4 estava a decorrer em paralelo.

 

Depois de reiniciar, tudo parece estar a funcionar! :-))

Eu comentei a função fnCrashTest(int arr)

Obrigado a todos, que ajudaram!

 
Em geral, não consegui aumentar a velocidade de cálculo usando dll em mais de 2,5 vezes. Isto mostra a alta velocidade da MQL5, e para a maioria das tarefas comerciais não faz sentido preocupar-se com o dll, excepto quando é necessário proteger o código e quando são necessários cálculos "pesados".
 
joo:
Em geral, não consegui aumentar a velocidade de cálculo usando dll em mais de 2,5 vezes. Isto demonstra a alta velocidade da MQL5. Para a maioria das tarefas comerciais não vale a pena preocupar-se com o dll, excepto quando é necessário proteger o código e quando são necessários cálculos "pesados".

A optimização do registo final da MQL5 ainda não está activada - a velocidade de execução ainda aumentará seriamente.
 

Renat, obrigado pelo artigo. Penso que muitas pessoas vão precisar dela mais do que uma vez. Tenho uma pergunta lateral relacionada com o dll. (Terminal 249, Editor 248).

Exemplo

Temos uma libra demo.dll com apenas uma função.

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

Temos um mql script 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);    
}

O compilador não mostra erros ou avisos.

Execute-o no terminal e obtenha o seguinte

Ao verificar no depuração visual, descobri também que a função demo.dll em si tem o seu primeiro carácter, não uma string.

A questão é

Qual é o problema? Como passar a cadeia da MQL para dll de uma forma humana?

 
Usarwchar_t em vez de char