Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Vou traduzir o que já lhe foi dito por um representante da empresa de desenvolvimento MT:
Não é possível criar roscas a partir da MQL. Nem mesmo com o WinAPI.
Você só pode fazer isso escrevendo sua própria DLL.
WinAPI e usa dll padrão !
kernel32.dll
user32.dll
etc.
Pretende-se um trabalho multithreading com funções WinAPI, não com funções mql.
Mas é lamentável que você não possa trabalhar com funções mql.
WinAPI e utiliza dlls padrão !
kernel32.dll
user32.dll
Hmm, exatamente o contrário, WinAPI é implementado como bibliotecas dinâmicas kernel32.dll , user32.dll...
Você nunca tentou escrever em C++ puro uma janela normal do Windows com o texto "Olá Palavra"! - Há exemplos na rede, escreva seu primeiro "Hello Word! - ele vai se limpar por si só ;)
hmm, exatamente o contrário: WinAPI é implementado como bibliotecas dinâmicas kernel32.dll , user32.dll...
Você nunca tentou escrever em C++ puro uma janela normal do Windows com o texto "Olá Palavra"! - Há exemplos na rede, escreva seu primeiro "Hello Word! - muita coisa vai se esclarecer por si só ;)
Padrão significa dlls padrão do Windows, padrão não significa que são .lib estáticas
Igor, você está indo na direção errada...
O que o "Hello Word!" tem a ver com a inicialização da dll, e chamar funções a partir dela em sua thread!
Por exemplo:
Existe a função WinAPI MessageBoxW();
Ela deve ser chamada em seu próprio fio.
Para isso você precisa inicializar a própria dll e a função exportada, você pode dar um exemplo de como fazer isso corretamente?
Depois da inicialização, ligue para MessageBoxW(); com CreateThread();
Após a execução da função, solte o recurso e feche a rosca.
Dê-me um exemplo de como fazê-lo corretamente em mql ?
Padrão significa que a dll padrão do Windows, padrão não significa que eles são .lib estática
Igor, você está indo na direção errada...
O que o "Hello Word!" tem a ver com a inicialização da dll, e chamar funções a partir dela em sua thread!
Por exemplo:
Existe a função WinAPI MessageBoxW();
Ela deve ser chamada em seu próprio fio.
Para isso você precisa inicializar a própria dll e a função exportada, você pode dar um exemplo de como fazer isso corretamente?
Depois da inicialização, ligue para MessageBoxW(); com CreateThread();
Após a execução da função, solte o recurso e feche a rosca.
Dê-me um exemplo de como fazê-lo corretamente em mql ?
Você está no caminho errado, você foi avisado - escreva uma dll (na qual você deve alocar memória e registrar uma nova thread! - então destrua cuidadosamente tudo na saída!) e chame-o da MQL
onde alocação de memória e registro de processo estão em seu exemplo? A chamada MessageBox - significa que o programa MQL alocou seus recursos, mas não criou uma linha separada. Eu nem quero verificar, mas quando você chama MessageBox o terminal deve congelar
Você está indo na direção errada, eu lhe disse - escreva uma dll e ligue da MQL
onde em seu exemplo está a alocação de memória e o registro do processo? o fato de você ter chamado a MessageBox - isso significa apenas que o programa MQL forneceu seus recursos, mas não criou uma linha separada. Eu nem quero verificar, mas quando você chama a MessageBox, seu terminal deve congelar
Igor, citei as funções da dll de inicialização como um exemplo para entender do que estou falando. Mas não sei como fazê-lo corretamente em mql, C++ puro pode ser enganoso.
A peculiaridade do próprio mql pode causar confusão. Foi por isso que pedi ajuda no fórum, não no Google.
Por que eu preciso escrever uma dll, quando o WinAPI é construído em dll, e as funções chamaveis já estão emuser32.dll, por exemplo
? Eu criei o tópico para entender a questão, como fazê-lo corretamente em mql, e você me diz onde está a alocação de memória e o registro do processo))).
Mostre-me um exemplo adequado de como fazer isso em mql?
Ou me direcione a um bom guia.
Igor, eu dei as funções de inicialização dll como exemplo para entender o que quero dizer, mas não sei como fazê-lo corretamente em mql, C++ puro pode ser enganoso.
A peculiaridade do próprio mql pode causar confusão. Foi por isso que pedi ajuda no fórum, não no Google.
Por que eu preciso escrever uma dll, quando o WinAPI é construído em dll, e as funções chamaveis já estão em user32.dll, por exemplo
? Eu criei o tópico para entender a questão de como fazê-lo corretamente em mql, e você me diz onde está a alocação de memória e o registro do processo))).
Mostre-me um exemplo adequado de como fazer isso em mql?
Ou me direcione a um bom guia.
Você não pode criar um fio do programa mql, mesmo usando WinAPI.
Igor, eu dei um exemplo de funções de inicialização dll para entender o que quero dizer, mas como fazê-lo corretamente em mql, não estou ciente, C++ puro pode ser enganoso.
A peculiaridade do próprio mql pode causar confusão. Foi por isso que pedi ajuda no fórum, não no Google.
Por que eu preciso escrever uma dll, quando o WinAPI é construído em dll, e as funções chamaveis já estão em user32.dll, por exemplo
? Eu criei o tópico para entender a questão, como fazê-lo corretamente em mql, e você me diz onde está a alocação de memória e o registro do processo))).
Mostre-me um exemplo adequado de como fazer isso em mql?
Ou me direcione a um bom guia.
Mais uma vez, isso não é feito por meio do MQL, você resolve o problema do outro lado - do lado da cauda, não da cabeça!
Você escreve uma dll - chame-a de MQL e passe os dados para a dll, e se você precisar continuar o programa MQL (cálculos complexos), você cria uma nova thread na dll e processa os dados nesta thread
Você pode ler como escrever uma dll - procure no fórum por "dll" e você encontrará cerca de 20 artigos
Não há tutoriais, mas o recurso que você utilizará para escrever uma dll, portanto procure por soluções sobre como criar threads e assim por diante.
Você não pode criar um fluxo a partir de um programa mql, mesmo usando WinAPI.
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Programação assíncrona e multi-tarefa em MQL
MetaQuotes Software Corp., 2019.07.24 16:31
Você não pode chamar funções MQL a partir de uma DLL.
Mas é possível executar várias linhas através de chamadas DLL para que funcionem independentemente da MQL5 em seu ambiente.
Por exemplo, você prepara os dados da MQL, os coloca em algum lugar ou os passa para a DLL, que por sua vez executará a tarefa em várias roscas e retornará o resultado através de uma função adicional.
Chamar as funções API do Windows é uma chamada da dll, isso significa que os threads podem ser criados para funções API do Windows usandoCreateThread();
Não é por nadaque CreateThread(); foi portado para a biblioteca mql padrão.
Achamada das funções API do Windows é uma chamada da dll, portanto para as funções API do Windows é possível criar threads usandoCreateThread();
CreateThread(); foi portada para a biblioteca mql padrãopor uma razão.
ninguém portou nada, o que você vê no pacote são apenas assinaturas de funções.
para criar um fluxo, você precisa de um corpo funcional - este é o corpo que irá funcionar no fluxo!
Para registrar um tópico no Windows, é necessário preencher a estrutura:
verlpStartAddress - este é o endereço do ponto de entrada da função que será executada na thread, não se preocupe com aalocação de memória
para resolver este problema, você precisa encontrar uma oportunidade de obter o endereço do MyFunc() - em memória, e ele está ausente - bem, em nenhum lugar ... nenhuma!
Não sei como explicar o problema de outra forma ... que realmente não existe ))))