Websocket은 어떻게 하나요? - 페이지 27

 
Aleksei Beliakov :

1. 일자리가 많지 않으니 이해합니다. 걱정하지 마세요.

2. @Aleksey Barbashin모든 사람에게 설명하는 데 매우 필요한 작업을 수행했으며 C# 및 mql5를 짜는 방법에 대한 매우 명확한 예를 통해 논리적 결론은 모든 사람을 위해 여기에 결과(mql4에 대한 모든 작업의 결과)를 게시하는 것입니다. 일반적으로 포럼 회원의 수준을 높이고, 직업을 가진 사람은 더 많아야 하고 낯선 사람 에게 무엇을 해야 하는지 알려주는 사람은 더 적어야 합니다.

자신부터 시작하여 낯선 사람에게 말하십시오.

 
Aleksei Beliakov :

1. 일자리가 많지 않으니 이해합니다. 걱정하지 마세요.

2. @Aleksey Barbashin모든 사람에게 설명하는 데 매우 필요한 작업을 수행했으며 C# 및 mql5를 짜는 방법에 대한 매우 명확한 예를 통해 논리적 결론은 모든 사람을 위해 여기에 결과(mql4에 대한 모든 작업의 결과)를 게시하는 것입니다. 일반적으로 포럼 회원의 수준을 높이고, 직업을 가진 사람은 더 많아야 하고 낯선 사람에게 무엇을 해야 하는지 알려주는 사람은 더 적어야 합니다.

나는 지원, 한 숨에 주제를 따랐다. 독학으로 문맹인 저에게는 특히 설명과 함께 차근차근 행동하는 모습을 보는 것이 흥미로웠습니다. 그리고 마지막에 도킹하지 않은 후 srach가 시작되었습니다. 결국 모든 것이 수정되고 완료되었지만 이미 무엇을, 어떻게 하는지에 대한 자세한 단계가 없습니다. 그래서 독학한 사람은 반복 / 이해하기 시작했고 불일치의 순간에 그는 다음에 무엇을해야할지 이해하지 않고 자유 수영에 머물렀습니다. 인터넷의 바닥을 삽질하여 결국 스스로 끝을 맺을 수 있다는 데 동의하지만, 그렇게 높은 시작이 있었기 때문에 같은 스타일로 끝내지 않겠습니까. 코드 자체는 필요하지 않지만 코드를 논리적인 목적으로 가져오는 방법에 대한 유능한 설명만 있으면 됩니다.

 

여보세요

이 프로젝트는 무료입니까, 유료입니까? 이 작업을 수행하는 방법에 대한 가이드가 어딘가에 있습니까?

websocket을 통해 다른 공급자로부터 실시간 견적을 가져오는 데 관심이 있습니다.


모든 것이 그림에 따라 완료되면 인용문을 기록하고 표시하는 과정이 명확하지 않습니다. 이 문제가 해결되지 않은 것 같습니다.

 

apnu 주제, C #에 대한 질문이 나타났고, googled하고, ifna를 찾지 못했습니다. 아마도 누군가가 지나쳐 도움을 줄 것입니다.)


일반적으로 요점은 다음과 같습니다. C#의 MQL5용 작업 라이브러리를 MQL4에서 호출하는 기본 호출로 래핑했습니다. 모든 것이 작동합니다.

하지만 한 번만 작동합니다. 어드바이저를 언로드하기 전에 MT4에서 EA를 두 번째 실행하면 오류가 발생합니다.

Unhandled exception 0xE0434352

여기에서 포럼 검색 토론 https://www.mql5.com/ru/forum/35807

차트를 닫고 차트를 열어 EA를 종료하는 상황이 당황스럽습니다. 문제가 해결되지 않고 MT4를 다시 시작하는 것만 도움이 됩니다.

.dll에서 모든 스레드를 닫는 것 같습니다. 작업 관리자에서 언로드할 때 프로세스(dll이 호출될 때 표시됨)가 닫힙니다.


파헤칠 곳, 뭔가 생각할 것이지만 MQL5에서는 모든 것이 시계처럼 작동합니다.

 
Igor Makanu :

apnu 주제, C #에 대한 질문이 나타났고, googled하고, ifna를 찾지 못했습니다. 아마도 누군가가 지나쳐 도움을 줄 것입니다.)


일반적으로 요점은 다음과 같습니다. C#의 MQL5용 작업 라이브러리를 MQL4에서 호출하는 기본 호출로 래핑했습니다. 모든 것이 작동합니다.

하지만 한 번만 작동합니다. 어드바이저를 언로드하기 전에 MT4에서 EA를 두 번째 실행하면 오류가 발생합니다.

여기에서 포럼 검색 토론 https://www.mql5.com/ru/forum/35807

차트를 닫고 차트를 열어 EA를 종료하는 상황이 당황스럽습니다. 문제가 해결되지 않고 MT4를 다시 시작하는 것만 도움이 됩니다.

.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-ke에서 모든 것이 작동하고 4-ke에서는 잼이없고 코드가 처음부터 다시 작성되지 않도록)) )

정보 감사합니다, 유익합니다!

 

모든 것이 오래전 일인 것 같습니다 ... 그러나 그것은 ...

동적 하중 라이브러리 프로그램을 언로드하려면 특별한 기술이 필요합니다. MQL5 및 MQl4에서는 Metaquotes만이 자신이 만든 운영 환경에서 작업 제어 언어의 비밀에 액세스할 수 있기 때문에 이 기술이 있습니다. 그리고 JCL과 나는 무릎을 꿇고 엉뚱한 짓을 했을 것입니다.