Experts: 견적 모니터링(예: 매핑용) - 페이지 2

 
sergeev:

1) 서버만 메모리를 수정할 권한이 있습니다. 클라이언트는 메모리를 읽습니다.

2) -파이프를 보세요. 데이터 도착의 "이벤트"는 자명하게 구현되어 있습니다 - 데이터가 있고, 우리는 그것을 가져오고, 기다립니다.

3)예, 서버를 작성하거나 MSDN에서 복사해야하지만 기성품 클라이언트는 MQL5에서 직접 사용할 수 있습니다.

4) 불행히도 폴링 주기성으로이 문제를 해결할 수 없습니다. Sleep (1)은 메모리 작업시에도 소음을 내지 않아야합니다. 기능의 타이밍을 확인해야하며 어딘가에 추가 패스와로드가있을 수 있습니다.

1-서버 만 (귀하의 개발에서 저에게 작성)

2-흥미롭게도, 나는 데이터 4 (8) 바이트, 즉 전체주기를 전송하는 "가능한 한시기 적절한"작업 만 볼 것입니다 (매우 자주 수행해야 함).

3-나는 기사와 유추하여 나 자신을 만들 것이라고 생각하지만 지금까지는 테스트 예제조차도 문제가 작동하지 않습니다.

4-예, 코드를 최적화 한 몇 가지를 다시 작성했는데 더 나은 것 같습니다.

 

mt4에 dll을 추가하려고 했습니다.

2013.04.01 00:03:49     _tradeBuySell_mt4 GBPCHF,H1: -unknow err(0)  h=0
2013.04.01 00:03:49     _tradeBuySell_mt4 GBPCHF,H1: function 'MemOpen' call from dll 'MemMap32.dll' critical error c0000005 at 666013E6.
다음은 코드입니다.
#include <stdlib.mqh>

#define modeOpen                                                        0 // 열기 플래그
#define modeCreate                                                      1 // 생성 플래그

#import "MemMap32.dll"
int MemOpen(string path,int size,int mode,int &err); // 메모리에서 파일 열기/생성, 핸들 가져오기
void MemClose(int hmem); // 메모리에서 파일을 닫습니다.
int MemGrows(int hmem,string path,int newsize,int &err); // 메모리에서 파일 크기 늘리기
int MemWrite(int hmem,int &v[], int pos, int sz, int &err); // 지정된 위치 pos, 크기 sz에서 int(4) 벡터 v를 메모리에 쓰기
int MemRead(int hmem, int &v[], int pos, int sz, int &err); // 지정된 위치 pos에서 크기 sz로 벡터 v를 읽습니다.

#import


int hmem,err; // 
string file; // 메모리에 있는 파일 이름


int init()
   {
   file="Local\\123"; // 메모리에 있는 파일 이름

   hmem=MemOpen(file,-1,modeOpen,err); // 기존 파일 열기
   if(hmem>0) // 열면
     {
      Print("open OK h="+hmem);
     }
   else
   if(err==-2) // 열지 않은 경우,
     {
      Print("-err("+err+") memfile not found.");

     }
   else
     {
      Print("-unknow err("+err+")  h="+hmem);
      return(0);
     }
   Print("OK ("+err+") h="+hmem);   
 
      return(0);
   }
 

드라이버를 오른쪽으로 돌립니다.

 
sergeev:

드라이버를 올바르게 돌리세요 .

링크의 예제에서는 MemMap.dll을 사용합니다.

멤맵32.dll이 아니라 멤맵32.dll입니다.

mt5에서는 작동하지만 mt4에서는 파일을 찾지 못합니다.

처음에 잘못 선언된 오류는 배열이어야 합니다.

 
이 문제를 우회하는 방법을 알려주실 수 있나요?
OK      1       01:10:31        tradeBuySell    'D:\MT5******\MQL5\Libraries\MemMap32.dll' is not 64-bit version
JF      1       01:10:37        tradeBuySell (GBPUSD,H1)        Cannot load 'D:\******\MQL5\Libraries\MemMap32.dll'

x64 버전의 터미널 mt5가 서버에 자동으로 설치됩니다.

노트북에 Win7x64가 설치되어 있지만 일반 32비트 버전의 터미널이 있는데 x64로 업데이트하려고 시도하지 않습니다.