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

 
Алексей Барбашин :

Fedor, 당신은 약간 잘못된 방향으로 택시를 잡았습니다. 이것은 작동하지 않습니다! Volodya가 제공한 코드를 최대한 활용했습니다. 당신의 임무는 웹 소켓에서 데이터를 수신하고 mql에 요청 및 입찰을 전달하는 것입니다! 수신된 데이터에서 mql로 입찰가만 반환했지만, 당신의 임무는 전체 구조를 mql로 반환하고 정보를 로그에 출력하는 것입니다.

확인. 이제 나는 변화를 시도할 것이다.
 
Алексей Барбашин :

예, 그는 할 수 없습니다. 그러나 이 문제도 우회할 수 있습니다. 코드가 디버깅되는 마지막 단계에서 Sharpe 라이브러리에 DLLExport를 구현하는 것으로 충분하며 모든 것이 mt4에서 작동합니다.

그렇지 않습니다, 나는 이미 확인했습니다

또는 C++/CLI

또는 Robert Giesecke의 Unmanaged Exports - 내가 쓰고 있는 기사에 대해

ZY: 아마도 DLLExport의 도움으로 간단한 메소드가 작동할 것입니다. return + b; , 그 이상은 아닙니다. .Net 초기화가 필요한 모든 것이 작동하지 않지만 .... 예를 보면 기쁠 것입니다. 항상 새로운 것을 배우게 되어 기쁩니다.

ZYZY: 발견 https://github.com/3F/DllExport , 사용하지 않고 다른 것을 찾았지만 동일한 기능입니다.

UnmanagedExports는 Robert Giesecke 가 만들었습니다. 그의 페이지를 방문해야 합니다.

그러나 이 저장소는 Robert와 관련이 없으며 일반적으로 GitHub/3F 개발자가 개발하고 있습니다.

 

어떤 이유로 0을 반환합니다.


 
Igor Makanu :

그렇지 않습니다, 나는 이미 확인했습니다

또는 C++/CLI

또는 Robert Giesecke의 Unmanaged Exports - 내가 쓰고 있는 기사에 대해

ZY: 아마도 DLLExport의 도움으로 간단한 메소드 return a + b가 작동할 것입니다. , 그 이상은 아닙니다. .Net 초기화가 필요한 모든 것이 작동하지 않지만 .... 예를 보면 기쁠 것입니다. 항상 새로운 것을 배우게 되어 기쁩니다.


일했다.
IL 코드를 올바르게 변경해야 합니다.

VS 컴파일 후 변경한 내 exe를 만들고 있었습니다.
그런 다음 C# 메서드가 C/MQL에서 표시됩니다.

플러스 마샬링
오랫동안 사용하지 않았다

 
Vladimir Suslov :


일했다.
IL 코드를 올바르게 변경해야 합니다.

VS 컴파일 후 변경한 내 exe를 만들고 있었습니다.
그런 다음 C# 메서드가 C/MQL에서 표시됩니다.

오랫동안 사용하지 않았다

방금 위의 게시물을 업데이트했습니다.

이것은 내가 사용하는 것과 동일한 코드입니다 - Robert Giesecke의 코드

그러나 손으로 편집 할 것이 없습니다. 주요 문제는 복잡한 데이터 유형 을 처리하는 것입니다. 최근에야 데이터 교환을 수행하고 방법을 긁었습니다.

  [DllExport( "redismtset" , CallingConvention = CallingConvention.StdCall)]
         public static void redismtset([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1 )] byte [] value , int sz, [MarshalAs(UnmanagedType.LPWStr)] string key)
        {
             byte [] tmp = new byte [sz];
            Array.Copy( value , 0 , tmp, 0 , sz);
             if (dbExcPing()) DB.Set(key, tmp);
        }
//----
 [DllExport( "redismtget" , CallingConvention = CallingConvention.StdCall)]
         public static int redismtget([MarshalAs(UnmanagedType.LPWStr)] string key)
        {
           if (dbExcPing()) db_buffer_byte = DB.Get(key); else db_buffer_byte = null ;
             return db_buffer_byte?.Length?? - 1 ;
        }
StringBuilder를 통해 문자열 배열을 처리하려고 시도했지만 모든 것이 매우 불안정하게 작동합니다. MQL4와 .Net 모두에서 문자열 버퍼에 대한 메모리 할당을 지속적으로 제어해야 하기 때문에 포기했습니다. 작동을 멈춤)))
 
Алексей Барбашин :

해당 메소드를 사용할 때 DllExport를 한 번 구현해야 했고 모든 메소드를 export로 선언 할 수 있었습니다. 이 라이브러리 자체는 코드에 필요한 변경을 수행했습니다. 그러나 MT5가 샤프를 지원하기 시작한 이후로 나는 그것을 가지고 놀기를 중단했습니다.

질문이 MT4에 관한 것이었습니까?

 
Алексей Барбашин :

똑똑하지 않아. Dequeue() 메서드는 대기열에서 항목을 가져옵니다. 두 개의 레코드를 가져오려고 하는데 각각 다른 매개변수가 있습니다. 음, 첫째, 아무도 요청 당시 대기열에 두 개의 항목이 있을 것이라고 보장하지 않습니다.))

이렇게 변경했습니다.

MQL


일반적으로 이제 아무 것도 반환하지 않습니다. tk. 추가 수표

 
Igor Makanu :

방금 위의 게시물을 업데이트했습니다.

이것은 내가 사용하는 것과 동일한 코드입니다 - Robert Giesecke의 코드

그러나 손으로 편집 할 것이 없습니다. 주요 문제는 복잡한 데이터 유형 을 처리하는 것입니다. 최근에야 데이터 교환을 수행하고 방법을 긁었습니다.

이 라이브러리는 (몇 년 전) 저에게는 작동하지 않았고 제가 직접 만들었습니다.
아마도 업데이트되어 지금 작동 중일 것입니다.
하지만 이것이 원칙이다.

 
Vladimir Suslov :

이 라이브러리는 (몇 년 전) 저에게는 작동하지 않았고 제가 직접 만들었습니다.
아마도 지금 업데이트되어 작동 중일 것입니다.
하지만 이것이 원칙이다.

러시아어 Vin에서는 작동하지 않습니다.

그러나 영어로 가상 머신 + Win 7을 설치하면 문제없이 작동합니다. 언어 - Vin을 설치할 때 언어를 선택했는데 설치된 Vin7에서 러시아어로 다른 방법을 시도하여 영어로 전환했습니다. - 레지스트리 어딘가나 일부 폴더가 러시아어로 남아 있기 때문에 Robert Giesecke 템플릿이 경고와 함께 컴파일되고 .dll 내보내기가 작동하지 않습니다.

추신: 10GB 가상 머신 이미지를 하드 드라이브에 저장했습니다. 이제 Robert Giesecke 템플릿을 문제 없이 사용할 수 있습니다.

 
얘들 아, 왜 나에게 0을 반환합니까? 그리고 대기열이 비어 있습니까?