기고글 토론 "MetaTrader 5를MetaTrader4 시그널 프로바이더로 활용하기"

 

새로운 기고글 MetaTrader 5를MetaTrader4 시그널 프로바이더로 활용하기 가 게재되었습니다:

MetaTrader 5의 거래 분석을MetaTrader4에서 실행하는 방법, 그 예제 및 분석MetaTrader5로 시그널 프로바이더를 만들어 클라이언트에 연결하고,MetaTrader4에서 실행하는 방법을 알아보겠습니다.MetaTrader4의 실제 거래 계좌로 자동 매매 챔피언십 참가자들을 따르는 방법도 배우실 겁니다.

최근 MQL5.community에서 제 수준에 맞는 몇 개의 글을 보고 저도 EA를 만들 수 있겠구나 싶더군요. 제 실제 계좌로 챔피언십 참가자들의 거래를 따라가는 중이기도 합니다. 다행히 수익을 내고 있죠. 문제는 데이터가 5분 간격으로 업데이트되기 때문에 포지션 오픈 및 청산 기회를 놓칠 수도 있다는 거죠.

챔피언십 포럼을 보니 저랑 비슷한 분들이 계시더라고요. 이는 그다지 효과적인 방법이 아닌데다가 트래픽량까지 증가시키니 주최 측에서는 별로 안 좋아할 겁니다. 어떻게 하면 문제를 해결할 수 있을까요? 열심히 생각해 봤는데MetaTrader5의 '투자자' 모드(거래 불가)로 참가자의 계좌에 액세스하는 방법이 제일 마음에 들더라고요.

이렇게 하면 거래 활동에 대한 모든 정보를 실시간으로 주고 받을 수 있을까요? 해답을 찾기 위해 엑스퍼트 어드바이저를 생성하고 투자자 모드의 계정으로 실행해 보았습니다. 놀랍게도 실행이 될뿐만 아니라 포지션, 주문, 그리고 거래에 대한 정보를 얻을 수 있더군요. 문제 해결의 시작이 되는 정보들이죠!

작성자: Karlis Balcers

 

딜클라이언트에 대한 작은 업데이트:

- 여러 주문이 열려 있고 청산 요청이 들어오면 클라이언트가 먼저 수익이 있는 주문을 청산합니다;

- 연결 불량으로 주문이 열리지 않을 때 문제를 해결하기 위해 더 나은 오류 처리가 추가되었습니다. 재전송이 필요한지 확인하는 새로운 기능이 추가되었습니다:

//+------------------------------------------------------------------+
//| 다른 시도로 문제가 해결되는지 확인합니다.
//+------------------------------------------------------------------+
bool bCanRetryFixTheProblem(int error)
{
   switch(error)
   {
      case ERR_NO_ERROR:
      case ERR_NO_RESULT:
      case ERR_COMMON_ERROR:
      case ERR_SERVER_BUSY:
      case ERR_NO_CONNECTION:
      case ERR_TRADE_TIMEOUT:
      case ERR_INVALID_PRICE:
      case ERR_PRICE_CHANGED:
      case ERR_OFF_QUOTES:
      case ERR_BROKER_BUSY:
      case ERR_REQUOTE:
      case ERR_TOO_MANY_REQUESTS:
      case ERR_TRADE_CONTEXT_BUSY:
         return(true);
      default:
         return(false);
   }
}

/tsaktuo

파일:
 

업데이트된 딜클라이언트 코드: tsaktuodealclient.mq4( 댓글 참조)

 

socketserver.dll이 64비트 버전이 아니라는 오류가 발생했습니다. 제공 가능한가요?

 
939211:

잘했어요!! socketserver.dll이 64비트 버전이 아니라는 오류가 발생했습니다. 제공할 수 있나요?

이 버전이 맞습니다.
파일:
 
제공된 코드와 dll에 대해 대단히 감사합니다. mql4용 서버 파트를 작성하려고 합니다. 따옴표 변환이 일어나는 코드 조각이 저를 중단 시켰지만 쉽게 포기하지 않을 것입니다 :)
 

나는 신호를 전송하지 않으려 고 노력하지만 적어도 가격은. 클라이언트 터미널은 프로토콜에 물음표가 있는 문자열이 수신되었음을 표시합니다:

2011.12.28 16:34:54 Client EURUSD,M15: Received(20): ????????????????8???

이 오류를 어떻게 수정할 수 있나요? 문자열을 보냅니다: <EURUSD;1.30675;1.30667>

 

안녕하세요,

서버 EA와 클라이언트 스크립트를 실행 중이며 MT4 로그에 다음과 같은 유형의 오류가 발생하는 것을 제외하고는 서로 통신하고 있으며이를 수정하는 데 도움이 필요합니다.

MT5 (빌드 597) 로그:
2012.03.08 01:17:55 챠크투오딜서버(EURUSD,H1) DEAL:<955492;EURUSD;SELL;IN;0.01;1.31080>


MT4 (빌드 409) 로그:
2012.03.08 01:17:55 TsaktuoDealClient EURUSD,H1: 유효하지 않은 주문 수신:"4444EEEESSSSEEIIII....11110000"

어떻게 생각하세요?

 

MT4를 변경 없이 빌드 416으로 업데이트했습니다.

또한 MT4에서 스크립트를 컴파일할 때 다음과 같은 결과가 나타납니다.

'TsaktuoDealClient.mq4' 컴파일 중...
함수 "struct2int"가 참조되지 않으며 exp-file에서 제거됩니다
함수 "str2struct"가 참조되지 않으며 exp-file에서 제거됩니다
함수 "htonl"이 참조되지 않으며 exp-file에서 제거됩니다.
함수 "ntohl"이 참조되지 않았으며 exp-file에서 제거됩니다
함수 "ntohs"가 참조되지 않았으며 exp-file에서 제거됩니다
오류 0개, 경고 5개

무슨 일인지 아시는 분?

 
누군가 마이크로 접미사를 실행하도록 스크립트를 수정할 수 있습니까? 예를 들어 mt5는 EURUSD이고 mt4는 EURUSDm입니다.
 

1주일 동안 사용했는데 오류가 2번 발생해서 포기했습니다.