Websocket come? - pagina 27

 
Aleksei Beliakov:

1. Non hai molti lavori, lo capisco, non preoccuparti.

2. La conclusione logica sarebbe quella di postare i risultati (di tutto il lavoro e anche di mql4) qui per tutti , alzerebbe il livello generale del forum, e forse ci sarebbero più persone con il lavoro e meno persone che dicono agli sconosciuti cosa fare.

La questione deve ancora essere risolta, ma il vero problema è come farlo.

 
Aleksei Beliakov:

1. Non hai molti lavori, lo capisco, non preoccuparti.

2. La conclusione logica sarebbe quella di postare i risultati (anche di tutto il lavoro di mql4) qui per tutti , aumenterebbe il livello degli utenti del forum nel complesso, e forse ci sarebbero più persone con un lavoro e meno persone che dicono agli sconosciuti cosa fare.

Sostengo il tema nello stesso respiro. io come un analfabeta autodidatta era interessato a vedere passo dopo passo ogni azione, soprattutto con spiegazioni. e qui alla fine dopo le discrepanze iniziato un casino, alla fine tutto è stato corretto e fatto, ma senza passaggi dettagliati che e come. così si scopre che l'autodidatta ha cominciato a ripetere / capire e al momento delle incongruenze e rimase nel galleggiante libero senza capire cosa fare dopo. Sono d'accordo che si può cercare in mezzo a internet per completarlo da soli, ma visto che è stato un così grande inizio, perché non finirlo allo stesso modo. non è il codice in sé che è necessario, ma solo una spiegazione competente di come portarlo a una fine logica.

 

Ciao

Questo progetto è liberamente disponibile o è un progetto a pagamento? C'è un manuale da qualche parte su come implementarlo da soli?

Sono interessato a importare quotazioni in tempo reale da un altro fornitore attraverso un websocket.


Se facciamo tutto per immagini, non capisco il processo di importazione e uscita delle quotazioni. Non credo che questa domanda sia stata trattata

 

Volevo solo iniziare questo topic. Ho fatto una domanda su C# e non l'ho trovata. Forse qualcuno verrà ad aiutarmi ;)


La linea di fondo: ho avvolto la libreria MQL5 in C# nativamente per chiamarla da MQL4, tutto funziona,

Ma funziona solo una volta - prima di scaricare l'EA, la seconda esecuzione in MT4 causerà un errore

Unhandled exception 0xE0434352

cerca nel forum solo quihttps://www.mql5.com/ru/forum/35807

la situazione è confusa, che chiudere il grafico e aprire il grafico drop EA non risolve il problema, solo ricaricare MT4 aiuta

Chiudo tutti i thread in .dll, ma allo scarico nel task manager il processo (che appare quando viene chiamata la dll) viene chiuso


Non ho idea di dove cercarlo, in MQL5 funziona come un orologio.

 
Igor Makanu:

Volevo solo iniziare questo topic. Ho fatto una domanda su C# e non l'ho trovata. Forse qualcuno verrà ad aiutarmi ;)


La linea di fondo: ho avvolto la libreria MQL5 in C# nativamente per chiamarla da MQL4, tutto funziona,

Ma funziona solo una volta - prima di scaricare l'EA, la seconda esecuzione in MT4 causerà un errore

cerca nel forum solo quihttps://www.mql5.com/ru/forum/35807

la situazione è confusa, che chiudere il grafico e aprire il grafico drop EA non risolve il problema, solo ricaricare MT4 aiuta

Chiudo tutti i thread in .dll, ma allo scarico nel task manager il processo (che appare quando viene chiamata la dll) viene chiuso


Non ho idea di dove cercarlo, in MQL5 funziona come un orologio.


Sembra essere sollevata un'eccezione, aggiungere try-catch al codice
 
Fedor Arkhipov:


Ci deve essere un'eccezione, aggiungere try-catch al codice

Il problema è in MQL4, il mio codice è al 99% lo stesso

forse il modello di Robert Giesecke che sto usando per fare chiamate native non può gestirlo, o forse il terminale sta lasciando alcune risorse aperte

Non so da dove cominciare a cercare (

 
Igor Makanu:

Il problema è in MQL4, il mio codice è al 99% lo stesso

forse il modello di Robert Giesecke che sto usando per fare chiamate native non può gestirlo, o forse il terminale sta lasciando alcune risorse aperte

Non so da dove cominciare a cercarlo ((

non tutte le DLL sono rientranti. Il termine non è del tutto corretto, ma in poche parole - dopo il load-unload, il prossimo load causerà un comportamento indefinito.

Cambia qualcosa nella memoria del processo o in un thread specifico. Le DLL sono molto flessibili - basta caricare e andare, non c'è bisogno di grattare avanti e indietro :-)

ma naturalmente ci sono soluzioni, si può impedire l'offloading della DLL, se è necessario una volta, allora lasciatela rimanere in memoria

con un link alla fonte, una delle ricette:

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

}

qualcosa sulla formattazione "ucciso" :-(

 
Maxim Kuznetsov:

caricalo e vai, niente da scorrere avanti e indietro :-)

Non ho una scelta particolare, mi fermo alla ricerca della perfezione, e vorrei avere tutto funzionante in 5 e senza errori in 4 e non riscrivere il codice da zero ))))

grazie per l'informazione, è informativa!

 

Sembra che sia passato molto tempo... Sembra...

Lo scarico di programmi di libreria a caricamento dinamico richiede abilità speciali. In MQL5 e MQl4 solo i Metaquote hanno questa abilità, poiché solo loro hanno accesso ai segreti del linguaggio di gestione del lavoro nel loro ambiente. E in JCL l'avrei fatto in ginocchio.