Websocket как сделать? - страница 27

 
Aleksei Beliakov:

1. у тебя нет столько работ я понимаю не беспокойся

2. @Алексей Барбашин сдел очень нужно дело обьяснил для всех и с очень понятными примерами как вязать c# и mql5 логичным завершением было бы выложить результат (всей работы и для mql4 тоже )тут для всех ,это бы повысило уровень форумчан в целом , и может быть сталобы побольше людей с работой и меньше тех кто незнакомым людям указыват что им делать.

начните с себя, и к незнакомым людям обращайтесь на Вы.

 
Aleksei Beliakov:

1. у тебя нет столько работ я понимаю не беспокойся

2. @Алексей Барбашин сдел очень нужно дело обьяснил для всех и с очень понятными примерами как вязать c# и mql5 логичным завершением было бы выложить результат (всей работы и для mql4 тоже )тут для всех ,это бы повысило уровень форумчан в целом , и может быть сталобы побольше людей с работой и меньше тех кто незнакомым людям указыват что им делать.

поддерживаю, следил за темой на одном дыхании. мне как неграмотному самоучке было интересно видеть шаг за шагом каждое действие, тем более с пояснениями. и вот в конце после не состыковки начался срач, в итоге всё было исправлено и сделано но уже без подробных шагов что и как. вот и получается что самоучка начал повторять / понимать и на моменте нестыковок остался в свободном плавании без понимания что делать дальше. согласен что можно перелопатить пол интернета чтобы в результате прийти к завершению своими силами, но раз уж было такое кайфовое начало то почему не закончить в таком же стиле. не сам код нужен, а как раз грамотное объяснение как довести до логического конца.

 

Здравствуйте

А этот проект в свободном доступе или платный? А где то есть мануал как такое реализовать самому?

Меня интересует импорт котировок в реальном времени от другого поставщика через вебсокет.


Если все делать по картинкам, то не понятен сам процесс записи и вывода котировок. Вроде этот вопрос не освещался

 

апну топик, вопрос про С# появился, погуглил, не нашел ифны, может тут кто будет мимо пробегать и поможет ;)


в общем суть: обернул работающую библиотеку под MQL5  на C#  в нативные вызовы, чтобы вызывать из MQL4, все работает,

НО работает один раз - до выгрузки советника, второй запуск ЕА в МТ4 вызывает ошибку 

Unhandled exception 0xE0434352

поиском по форуму только здесь обсуждение https://www.mql5.com/ru/forum/35807 

смущает ситуация, что закрыть чарт и открыть чарт бросить ЕА, не решает проблему, помогает только перезагрузка МТ4 

в .dll вроде закрываю все потоки, при выгрузке в диспетчере задач процесс (который появляется при вызове dll) закрывается


куда копать, что то нее соображу, а в MQL5 все работает как часы

 
Igor Makanu:

апну топик, вопрос про С# появился, погуглил, не нашел ифны, может тут кто будет мимо пробегать и поможет ;)


в общем суть: обернул работающую библиотеку под MQL5  на C#  в нативные вызовы, чтобы вызывать из MQL4, все работает,

НО работает один раз - до выгрузки советника, второй запуск ЕА в МТ4 вызывает ошибку 

поиском по форуму только здесь обсуждение https://www.mql5.com/ru/forum/35807 

смущает ситуация, что закрыть чарт и открыть чарт бросить ЕА, не решает проблему, помогает только перезагрузка МТ4 

в .dll вроде закрываю все потоки, при выгрузке в диспетчере задач процесс (который появляется при вызове dll) закрывается


куда копать, что то нее соображу, а в MQL5 все работает как часы


Видимо возникает исключение, добавьте try-catch в код
 
Fedor Arkhipov:


Видимо возникает исключение, добавьте try-catch в код

дык и проблема то именно в MQL4 , код у меня на 99% одинаковый

где то шаблон от Robert Giesecke который использую, чтобы нативные вызовы получить не справляется, или, возможно, терминал оставляет какие то ресурсы открытыми

в общем с чего начать поиски не знаю ((

 
Igor Makanu:

дык и проблема то именно в MQL4 , код у меня на 99% одинаковый

где то шаблон от Robert Giesecke который использую, чтобы нативные вызовы получить не справляется, или, возможно, терминал оставляет какие то ресурсы открытыми

в общем с чего начать поиски не знаю ((

не все DLL повторно входимы. Термин не совсем верен, но вкратце - после загрузки-выгрузки, следующая загрузка приведёт к неопределёному поведению. 

что-то меняют в памяти процесса или конкретной нити. DLL вообше приспособлены - загрузил и работай, нечего мотать туда-сюда :-)

но конечно есть обходные манёвры, можно предотвратить выгрузку DLL, если она один раз понадобилась то пусть так в памяти и остаётся

со ссылкой на первоисточник, один из рецептов:

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

}

что-то форматирование "убилось"..:-(

 
Maxim Kuznetsov:

загрузил и работай, нечего мотать туда-сюда :-)

вариантов особых то и нет, остановлюсь в поисках совершенства, и так сильно много захотел, и в 5-ке все работает и в 4-ке чтоб без косяков, да и чтоб код не переписывать с нуля )))

спасибо, за информацию, познавательно!

 

Вроде, давно все было... А вроде... 

Выгрузка программ библиотеки динамической загрузки требует особого мастерства. В MQL5 и MQl4 этим мастерством владеют только Метаквоты, поскольку только им доступны секреты языка управления заданиями в созданной ими операционной среде. А на JCL и я бы сварганил на коленке. 

Причина обращения: