Websocket comment ? - page 27

 
Aleksei Beliakov:

1. Vous n'avez pas beaucoup d'emplois. Je comprends. Ne vous inquiétez pas.

2. La conclusion logique serait de poster les résultats (de tout le travail et de mql4 aussi) ici pour tout le monde , cela élèverait le niveau général du forum, et peut-être qu'il y aurait plus de gens avec du travail et moins de gens disant à des étrangers ce qu'ils doivent faire.

Le problème n'est pas encore résolu, mais la vraie question est de savoir comment le faire.

 
Aleksei Beliakov:

1. Vous n'avez pas beaucoup d'emplois. Je comprends. Ne vous inquiétez pas.

2. La conclusion logique serait de poster les résultats (de tout le travail de mql4 aussi) ici pour tout le monde , cela élèverait le niveau des utilisateurs du forum dans l'ensemble, et peut-être qu'il y aurait plus de gens avec un travail et moins de gens disant à des étrangers ce qu'ils doivent faire.

Je soutiens le thème dans le même souffle. moi en tant qu'auto-étudiant analphabète a été intéressé de voir étape par étape chaque action, surtout avec des explications. et ici, à la fin après les divergences a commencé un désordre, à la fin tout a été corrigé et fait, mais sans étapes détaillées que et comment. il s'avère donc que l'auto-étudiant a commencé à répéter / comprendre et au moment des incohérences et est resté dans le flottement libre sans comprendre ce qu'il faut faire ensuite. Je suis d'accord pour dire que vous pouvez chercher dans la moitié de l'internet pour le compléter par vous-même, mais puisque c'était un si bon début, pourquoi ne pas le terminer de la même manière. Ce n'est pas le code lui-même qui est nécessaire, mais juste une explication compétente de la façon de l'amener à une fin logique.

 

Bonjour

Ce projet est-il disponible gratuitement ou est-il payant ? Existe-t-il un manuel expliquant comment le mettre en œuvre soi-même ?

Je suis intéressé par l'importation de devis en temps réel d'un autre fournisseur par le biais d'une websocket.


Si nous faisons tout par image, je ne comprends pas le processus d'importation et de sortie des devis. Je ne pense pas que cette question ait été traitée.

 

Je voulais juste lancer ce sujet. J'ai posé une question sur le C# et je ne l'ai pas trouvée. Peut-être que quelqu'un viendra m'aider ;)


L'essentiel : j'ai enveloppé la bibliothèque MQL5 en C# de manière native pour l'appeler depuis MQL4, tout fonctionne,

Mais cela ne fonctionne qu'une fois - avant le déchargement de l'EA, la deuxième exécution dans MT4 provoquera une erreur

Unhandled exception 0xE0434352

chercher dans le forum seulement icihttps://www.mql5.com/ru/forum/35807

la situation est confuse, que la fermeture du graphique et l'ouverture de l'EA ne résolve pas le problème, seul le rechargement de MT4 aide

Je ferme tous les threads dans le .dll, mais lors du déchargement dans le gestionnaire de tâches, le processus (qui apparaît lorsque le .dll est appelé) est fermé.


Je n'ai aucune idée de l'endroit où le chercher, dans MQL5 cela fonctionne comme sur des roulettes.

 
Igor Makanu:

Je voulais juste lancer ce sujet. J'ai posé une question sur le C# et je ne l'ai pas trouvée. Peut-être que quelqu'un viendra m'aider ;)


L'essentiel : j'ai enveloppé la bibliothèque MQL5 en C# de manière native pour l'appeler depuis MQL4, tout fonctionne,

Mais cela ne fonctionne qu'une fois - avant le déchargement de l'EA, la deuxième exécution dans MT4 provoquera une erreur

chercher dans le forum seulement icihttps://www.mql5.com/ru/forum/35807

la situation est confuse, que la fermeture du graphique et l'ouverture de l'EA ne résolve pas le problème, seul le rechargement de MT4 aide

Je ferme tous les threads dans le .dll, mais lors du déchargement dans le gestionnaire de tâches, le processus (qui apparaît lorsque le .dll est appelé) est fermé.


Je n'ai aucune idée de l'endroit où le chercher, dans MQL5 cela fonctionne comme sur des roulettes.


Une exception semble être levée, ajoutez try-catch au code
 
Fedor Arkhipov:


Il doit y avoir une exception, ajoutez try-catch au code

Le problème est dans MQL4, mon code est à 99% le même.

peut-être que le modèle Robert Giesecke que j'utilise pour faire des appels natifs ne peut pas le gérer, ou peut-être que le terminal laisse certaines ressources ouvertes

Je ne sais pas où commencer à chercher (

 
Igor Makanu:

Le problème est dans MQL4, mon code est identique à 99%.

peut-être que le modèle Robert Giesecke que j'utilise pour faire des appels natifs ne peut pas le gérer, ou peut-être que le terminal laisse certaines ressources ouvertes

je ne sais pas où commencer à le chercher ((

toutes les DLL ne sont pas réentrantes. Le terme n'est pas tout à fait exact, mais pour résumer, après un chargement-déchargement, le prochain chargement provoquera un comportement indéfini.

Modifier quelque chose dans la mémoire du processus ou dans un thread spécifique. Les DLL sont très flexibles - il suffit de les charger et de les utiliser, pas besoin de faire des allers-retours :-)

mais bien sûr, il y a des solutions de contournement, vous pouvez empêcher le déchargement des DLL, si elles ne sont nécessaires qu'une fois, alors laissez-les en mémoire.

avec un lien vers la source, une des recettes :

/* ----------------------------------------------------- */
/* предотвратить выгрузку 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;

}

quelque chose à propos du formatage "tué" :-(

 
Maxim Kuznetsov:

téléchargez-le et partez, rien à faire défiler en avant et en arrière :-)

je n'ai pas de choix particulier, j'arrête de chercher la perfection, et j'aimerais que tout fonctionne en 5 et sans erreur en 4 et ne pas réécrire le code de zéro ))))

Merci pour ces informations, elles sont instructives !

 

Il me semble que c'était il y a longtemps... Il semble...

Le déchargement des programmes de la bibliothèque de chargement dynamique requiert des compétences particulières. Dans MQL5 et MQl4, seuls les Metaquotes possèdent cette compétence, car eux seuls ont accès aux secrets du langage de gestion des emplois dans leur environnement. Et au JCL, je l'aurais fait à genoux.