Websocket como? - página 14

 
Алексей Барбашин:

Fedor, você está indo na direção errada. Não funciona assim! Você usou limpidamente o código que a Volodja lhe deu. Sua tarefa é obter os dados do websocket e passar o pedido e a licitação para a mql! Enquanto só retornamos a licitação dos dados recebidos para mql, sua tarefa é devolver toda a estrutura para mql e enviar as informações para o registro.

Ok. Vou tentar refazê-lo agora.
 
Алексей Барбашин:

Sim, não. Mas este problema pode ser resolvido. Na última etapa, quando o código for depurado, basta implementar o DLLExport na biblioteca da Sharp e tudo funcionará com o mt4.

não vai, eu já o testei.

ou C++/CLI

ou Unmanaged Exports de Robert Giesecke - sobre o artigo que estou escrevendo

ZS: talvez com DLLExport funcione métodos simples retornem a + b; não mais, tudo o que requer inicialização .Net não funciona, embora.... ficaria feliz em aprender algo novo.

ZZZY: encontrouhttps://github.com/3F/DllExport , não usou, encontrou outra coisa, mas é o mesmo chip

Observe novamente que a UnmanagedExports foi criada por Robert Giesecke. Você precisa visitar a página dele.

Mas este repositório não está relacionado com Robert e geralmente ainda está sendo desenvolvido pelo desenvolvedor GitHub/3F.

 

Por algum motivo, devolve zeros.


 
Igor Makanu:

não vai, eu já verifiquei

ou C++/CLI

ou Unmanaged Exports de Robert Giesecke - sobre o artigo que estou escrevendo

ZS: talvez com DLLExport funcione métodos simples retornem a + b; , nada mais, tudo o que requer inicialização .Net não funciona através de.... ficaria feliz em dar um exemplo, sempre feliz em aprender algo novo


funcionou.
Você precisa fazer as mudanças corretas no código IL.

Fiz meu próprio exe, que faz alterações após a compilação do VS.
E então os métodos C# tornam-se visíveis a partir do C/MQL

mais a marshalling.
Já não uso isso há algum tempo.

 
Vladimir Suslov:


funcionou.
Você precisa fazer as mudanças corretas no código IL.

Fiz meu próprio exe que faz mudanças após a compilação do VS.
E então os métodos C# tornam-se visíveis a partir do C/MQL

Já não uso isso há algum tempo

Acabei de atualizar meu posto acima.

este é o mesmo código que eu uso - código de Robert Giesecke

mas não é preciso consertar nada manualmente, o principal problema é lidar com tipos de dados complexos, fiz recentemente uma troca de dados, risquei um método

  [DllExport("redismtset", CallingConvention = CallingConvention.StdCall)]
        public static void redismtset([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] byte[] value, int sz, [MarshalAs(UnmanagedType.LPWStr)]string key)
        {
            byte[] tmp = new byte[sz];
            Array.Copy(value, 0, tmp,0, sz);
            if (dbExcPing()) DB.Set(key, tmp);
        }
//----
 [DllExport("redismtget", CallingConvention = CallingConvention.StdCall)]
        public static int redismtget([MarshalAs(UnmanagedType.LPWStr)]string key)
        {
           if (dbExcPing()) db_buffer_byte = DB.Get(key); else db_buffer_byte = null;
            return db_buffer_byte?.Length?? - 1;
        }
Eu tentei processar um conjunto de cordas através do StringBuilder, ele funciona muito instável e eu desisti porque ele requer controle constante da alocação de memória para o buffer de cordas tanto no MQL4 quanto no .Net - em geral a busca constante de quando algo deixa de funcionar ))))
 
Алексей Барбашин:

Quando usei esse método, precisei implementar o DllExport uma vez e então todos os métodos puderam ser declarados como exportados. Esta biblioteca fez as alterações necessárias ao código por si só. Mas desde que a MT5 começou a apoiar a Sharp, eu parei de "brincar" com ela.

Eu acho que a pergunta era sobre o MT4?

 
Алексей Барбашин:

Isso não é nada demais. O método Dequeue() retira um registro da fila. Você está tentando tirar dois registros e parâmetros diferentes de cada um deles. Bem, antes de tudo, ninguém garante que haverá dois registros na fila no momento do acesso).

Refizemos desta forma.

MQL


Não devolve nada agora, porque eu acrescentei um cheque

 
Igor Makanu:

Acabei de atualizar meu posto acima.

É o mesmo código que eu uso - código de Robert Giesecke

mas não há nada para corrigir manualmente, o principal problema é lidar com tipos de dados complexos, acabei de fazer um intercâmbio de dados, risquei um método

Eu não tinha este funcionando (alguns anos atrás), então eu fiz o meu próprio.
Talvez tenha sido atualizado agora e funcione.
Mas o princípio é exatamente o mesmo

 
Vladimir Suslov:

Esta liberdade não funcionou para mim (alguns anos atrás) e eu fiz a minha própria.
Posso tê-lo atualizado agora e ele funciona.
Mas o princípio é exatamente o mesmo

não funciona na língua russa Win

Mas definitivamente funcionará sem problemas se você instalar uma máquina virtual + Win 7 em inglês - eu escolhi durante a instalação o idioma Win, tentei diferentes maneiras de instalar o Win7 em russo mudar para o inglês. - Em algum lugar do registro ou de uma pasta permanece russo, por causa disso, o modelo Robert Giesecke compilado com avisos e não funcionará para exportação .dll

SZZY: salvei uma imagem da máquina virtual 10GB no meu disco rígido, agora sem problemas posso usar o modeloRobert Giesecke

 
caras, por que eu recebo zeros de volta? E a fila está vazia?