"10분 안에 MQL5용 DLL 라이브러리를 작성하고 데이터를 교환하는 방법" 기사에 대한 토론

 

10분 안에 MQL5용 DLL 라이브러리를 작성하고 데이터를 교환하는 방법에 대한 기사가 게시되었습니다. :

이제 간단한 DLL 라이브러리를 작성하는 방법과 이기종 시스템을 연결하는 기능을 기억하는 개발자가 거의 없습니다. 10분 안에 예제를 통해 간단한 DLL 라이브러리를 생성하는 전체 프로세스를 보여주고 연결 구현의 기술적인 세부 사항 중 일부를 공개하려고 합니다. 다양한 유형의 변수(숫자, 배열, 문자열 등)를 전달하고 사용자 지정 DLL의 충돌로부터 클라이언트 터미널을 보호하는 예제와 함께 Visual Studio에서 DLL 라이브러리를 생성하는 단계별 프로세스를 보여드리겠습니다.

저자: Renat Fatkhullin

 

매우 흥미로운 기사. 완전성을 위해서는 행복만으로는 충분하지 않습니다.

1. 견적은 어디서 받나요?hst 파일에서 가져올 수 있나요?

2. 이 라이브러리를 MATLab 2009a 또는 2009c에서 얻은 라이브러리와 도킹하는 방법은 무엇입니까? 결국 With 및 With ++도 사용할 수 있습니까?

엄청난 요청입니다.

 
  1. 우리는 터미널 자체에서 인용문을 사용합니다. 이제 상세하고 심오합니다(10년 이상).

    어떠한 경우에도 터미널 리포지토리의 바이너리 파일로 직접 올라가서는 안 됩니다. 이는 심각한 데이터 액세스 충돌로만 이어질 것입니다. 테스트 결과 "성공했다, 문제는 없다"고 해도 이 단말 데이터와 외부 프로그램에 동시 접근하는 순간이 올 것이고, 결과적으로 누군가는 반드시 끊길 것이다. 사람들은 이 문제를 계속해서 겪었습니다.

  2. stdcall / cdecl DLL 호출 규칙의 투명한 지원으로 인해 MQL5에서 라이브러리를 연결하는 것이 훨씬 쉬워졌습니다.

    누군가 DLL을 통해 MetaTrader 4/5와 Matlab을 연결하는 것에 대한 훌륭하고 자세한 기사를 작성하면 200달러 이상을 벌게 됩니다.

    MQL4.community 웹사이트에는 이미 Matcad - MetaTrader 4 링크에 대한 기사가 있습니다.

Взаимодействие между MеtaTrader 4 и MATLAB Engine (виртуальная машина MATLAB) - Статьи по MQL4
  • www.mql5.com
Взаимодействие между MеtaTrader 4 и MATLAB Engine (виртуальная машина MATLAB) - Статьи по MQL4: особенности автоматических торговых стратегий
 
Renat, dll 호출 속도는 어떻습니까?
두 터미널을 연결하여 실시간으로 견적을 Excel로 브로드캐스트해야 합니다.
MT4에서는 DDE를 통해 구현할 수 있습니다. MT5에서 유일한 탈출구는 DLL을 통하는 것 같습니다.
그러나 들어오는 모든 틱이 DLL로 전달되면... 제 생각에는 상상할 수 없을 정도로 느릴 것입니다. 물론 아직 실천해보지는 않았지만... 솔직히 말해서 해보고 싶지는 않습니다. 무슨 일이 일어날지 미쳤어.
간단히 말해서 DDE를 MT5로 반환하십시오. 시대착오적이긴 하지만 때로는 필요합니다.

추신 그리고 매우 시기적절한 기사에 감사드립니다. 지금은 그런 자료가 부족했습니다.
 
감사해요!!!
 
benik :
Renat, dll 호출 속도는 어떻습니까?

통화 속도를 확인하는 것은 매우 간단합니다. 예를 들어 대략 다음과 같이 계산할 수 있습니다.

_DLLAPI int __stdcall fnCalcSpeed( int var1, int var2, int var3)
  {
   return ( 0 );
  }


#import "MQL5DLLSamples.dll"
int   fnCalcSpeed( int var1, int var2, int var3);
#import

   int calls= 0 ;
   int ticks= GetTickCount ();
   
   while ( GetTickCount ()-ticks< 1000 )
     {
       for ( int i= 0 ;i< 1000 ;i++)
         fnCalcSpeed( 1 , 2 , 3 );
      calls++;
     }
   Print (calls * 1000 , "вызовов в секунду" );

Quad Q9400 @ 2.66Ghz에서 초당 57,000건의 전화를 받았습니다. 동일한 코드는 제어 및 바인딩이 없기 때문에 MetaTrader 4에서 초당 약 20,000,000번의 호출을 제공합니다.

MetaTrader 5에서 DLL 호출 손실을 줄이기 위해 확실히 노력할 것입니다.

 
Renat писал(а) :

초당 57,000건의 전화를 받았습니다.

그리고 1초에 50,000번 정도의 호출이 있다면 DLL을 통해 따옴표를 브로드캐스트할 수 있다고 생각합니다. 손실은 없을 것입니다.

코드를 제공해 주셔서 감사합니다.

 
다음 빌드에서는 DLL 호출 속도를 높일 것입니다. MQL4에서와 같이 초당 20,000,000개의 "빈" 호출이 발생합니다.
 

따옴표 내보내기가 dll을 통해서만 가능하다면 내보낸 각 악기에 대한 스크립트를 걸어야 한다는 것이 밝혀졌습니다. 많다면? 예를 들어 50?

하나의 스크립트에서 여러 악기에 대한 견적을 전송할 수 있다는 것을 이해하지만 이것은 틱이 손실되지 않는 DDE에 대한 본격적인 대체가 아닙니다.

 

사실 우리는 "견적 발행을 위한 인터페이스 제공" 작업이 없습니다.

우리의 임무는 분석 시스템 개발을 위한 완전하고 자급자족할 수 있는 환경을 만드는 것입니다. 타사 프로그램도 사용할 필요가 없는 환경.

 
어쨌든 Mql5는 만족합니다. 감사해요