Websocket como? - página 27

 
Aleksei Beliakov:

1. você não tem tantos empregos, eu entendo, não se preocupe.

2. A conclusão lógica seria publicar aqui os resultados (de todo o trabalho e mql4 também) para todos , elevaria o nível geral do fórum, e talvez houvesse mais pessoas com trabalho e menos pessoas dizendo aos estranhos o que fazer.

A questão ainda não foi resolvida, mas a verdadeira questão é como fazer isso.

 
Aleksei Beliakov:

1. você não tem tantos empregos, eu entendo, não se preocupe.

2. A conclusão lógica seria publicar aqui os resultados (de todo o trabalho de mql4 também) para todos , elevaria o nível dos usuários do fórum em geral, e talvez houvesse mais pessoas com empregos e menos pessoas dizendo aos estranhos o que fazer.

Eu o apoio, segui o assunto no mesmo fôlego. para mim como autoestudante analfabeto foi interessante ver passo a passo cada ação, especialmente com explicações. e aqui no final depois que as discrepâncias começaram uma confusão, no final tudo foi corrigido e feito, mas sem os passos detalhados que e como. assim acontece que o autoestudante começou a repetir / entender e no momento de inconsistências permaneceu na flutuação livre sem entender o que fazer a seguir. Concordo que você pode pesquisar pela metade da Internet para completá-la por conta própria, mas se você teve um começo tão bom, por que não terminá-lo da mesma maneira. não é o código em si que é necessário, mas apenas uma explicação competente de como levá-lo a um fim lógico.

 

Olá

Este projeto está disponível gratuitamente ou é um projeto pago? Há um manual em algum lugar sobre como implementá-lo você mesmo?

Estou interessado em importar cotações em tempo real de outro fornecedor através de um websocket.


Se fizermos tudo por imagem, não entendo o processo de importação e saída das cotações. Não creio que esta questão tenha sido abordada

 

Eu só queria começar este tópico. Eu fiz uma pergunta sobre C# e não a encontrei. Talvez alguém venha e me ajude ;)


O resultado final: Embrulhei a biblioteca MQL5 em C# nativamente para chamá-la de MQL4, tudo funciona,

Mas funciona apenas uma vez - antes de a EA descarregar, a segunda execução em MT4 causará um erro

Unhandled exception 0xE0434352

procure no fórum apenas aquihttps://www.mql5.com/ru/forum/35807

a situação é confusa, que a queda do gráfico de fechamento e abertura EA não resolve o problema, apenas a recarga do MT4 ajuda

Eu fecho todos os fios em .dll, mas ao descarregar no gerenciador de tarefas o processo (que aparece quando a dll é chamada) é fechado


Não tenho idéia de onde procurá-lo, na MQL5 funciona como um relógio.

 
Igor Makanu:

Eu só queria começar este tópico. Eu fiz uma pergunta sobre C# e não a encontrei. Talvez alguém venha e me ajude ;)


O resultado final: Embrulhei a biblioteca MQL5 em C# nativamente para chamá-la de MQL4, tudo funciona,

Mas funciona apenas uma vez - antes de a EA descarregar, a segunda execução em MT4 causará um erro

procure no fórum apenas aquihttps://www.mql5.com/ru/forum/35807

a situação é confusa, que a queda do gráfico de fechamento e abertura EA não resolve o problema, apenas a recarga do MT4 ajuda

Eu fecho todos os fios em .dll, mas ao descarregar no gerenciador de tarefas o processo (que aparece quando a dll é chamada) é fechado


Não tenho idéia de onde procurá-lo, na MQL5 funciona como um relógio.


Uma exceção parece ser levantada, acrescente try-catch ao código
 
Fedor Arkhipov:


Parece haver uma exceção, acrescente try-catch ao código

O problema está na MQL4 , meu código é 99% o mesmo

talvez o modelo Robert Giesecke que estou usando para fazer chamadas nativas não possa lidar com ele, ou talvez o terminal esteja deixando alguns recursos em aberto

eu não sei por onde começar a procurar (

 
Igor Makanu:

O problema está na MQL4 , meu código é 99% o mesmo

talvez o modelo Robert Giesecke que estou usando para fazer chamadas nativas não possa lidar com ele, ou talvez o terminal esteja deixando alguns recursos em aberto

eu não sei por onde começar a procurá-lo ((

nem todas as DLLs são reentrantes. O termo não é muito correto, mas em poucas palavras - após a carga-descarga, a próxima carga causará um comportamento indefinido.

Mudar algo na memória de processo ou um fio específico. DLL's são geralmente adaptáveis - carregar e ir, sem necessidade de rolar para frente e para trás :-)

mas é claro que há soluções, você pode evitar a descarga de DLL, se ela for necessária uma vez, então deixe-a ficar na memória

com um link para a fonte, uma das receitas:

/* ----------------------------------------------------- */
/* предотвратить выгрузку DLL из памяти !! (без этого глючит)
/* copy-paste из https://blogs.msmvps.com/vandooren/2006/10/09/preventing-a-dll-from-being-unloaded-by-the-app-that-uses-it/
/* ----------------------------------------------------- */
HMODULE g_Self;
int LockLibraryIntoProcessMem(

HMODULE DllHandle,

HMODULE *LocalDllHandle)

{

  if(NULL == LocalDllHandle)

    return ERROR_INVALID_PARAMETER;

 

  *LocalDllHandle = NULL;

  TCHAR moduleName[1024];

  if(0 == GetModuleFileName(

DllHandle,

moduleName,

sizeof(moduleName)/ sizeof(TCHAR)))

    return GetLastError();

  *LocalDllHandle = LoadLibrary(moduleName);

  if(NULL == *LocalDllHandle)

    return GetLastError();

  return NO_ERROR;

}
BOOL APIENTRY DllMain( HMODULE hModule,
                      DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                               )
{

  switch(ul_reason_for_call)

  {

  case DLL_PROCESS_ATTACH:
        //      WriteLog("Attach");
    LockLibraryIntoProcessMem(hModule, &g_Self);

    break;

  case DLL_PROCESS_DETACH:
        //      WriteLog("Detach");

    break;

  }

    return TRUE;

}

algo sobre formatação "morto" :-(

 
Maxim Kuznetsov:

carregue e vá, nada para rolar para frente e para trás :-)

não tenho escolha particular, vou parar em busca da perfeição e tenho um forte desejo de ter tudo funcionando em 5 e em 4 sem bugs, e de não reescrever o código do zero ))))

obrigado pela informação, ela é informativa!

 

Parece que foi há muito tempo... Parece que...

A descarga de programas de biblioteca de carga dinâmica requer habilidades especiais. Na MQL5 e MQl4 somente as Metaquotes têm essa habilidade, pois somente elas têm acesso aos segredos da linguagem de gerenciamento de trabalho em seu ambiente. E em JCL eu teria conseguido de joelhos.