기고글 토론 "MetaTrader 5에서 MetaTrader 4로 거래를 복제하는 방법" - 페이지 2

 
Urain:

반전이나 인하 시에도 차이가 없으며, 현재 시점의 호가 수준 차이와 체결 지연에만 차이가 나타납니다.

이상적으로는 MT 간의 호가가 같고 지연이 0이면 거래에서 동일한 수익이 발생합니다.


모든 트레이딩 전략에 적용되는 것은 아닙니다(위에서 설명한 것처럼 MT4 트레이딩 방법을 MT5에 적용하지 않는 경우를 의미합니다).

나는 R2와 MT5의 결과의 차이점에 대해 이야기하는 것이 아닙니다 (그러나 Rumus는 실제로 수명이 다했기 때문에 고려하지 않을 것입니다).

MT4에서 MT5로 거래를 정말로 관리하고 싶은 사람들은 그 반대 프로세스에 대해 생각해야합니다.

동시에 전략에서 더 많은 것을 사용하여 정확히 뒤집고 자르십시오 (다중 통화 조건에서).

또한 모든 거래 프로세스와 잔고 정보를 GMT 또는 단말기 현지 시간 (같은 시간대인 경우)으로 동기화하는 것도 좋습니다.

PS

"금리"가 중요한 것이 아니며 예치금에 대한 부담도 아닙니다. 포기해야 할 것과 전략을 변경하는 방법에 관한 것입니다.

이런 의미에서 유일한 편의는 모든 MT4 거래 프로세스를 100 % 결과로 넷 텡으로 조정할 수 있다는 것입니다.

물론 중요한 점은 대부분의 거래 전략에서 플리핑 및 절단과 같은 현상은 매우 드물다는 것입니다.

우레인:

dll에서 MQ가 모든 타사 코드를 파헤쳐 안전성을 검사할 가능성은 거의 없으며, 모든 사람이 델파이 또는 SRP 컴파일러를 가지고 있는 것도 아닙니다. 한 바이블의 코드를 게시하고 컴파일된 파일을 다른 바이블로 대체할 수 있습니다. 따라서 지금은 ex5만 가능합니다.

불행히도 MQL5는 곧 DLL의 도움으로 얻을 수있는 가능성의 절반 이상을 제공하지 않을 것입니다.

"샌드박스"에서 벗어날 수 있고 부피가 크지 않은 DLL은 많은 개발 도구에서 구현할 수 있습니다.

옵션으로 WinAPI에 연결된 MQL 라이브러리를 적용할 수 있습니다.

 
Interesting:

모든 거래 전략에 해당되는 것은 아닙니다 (위에 쓰여진 것처럼 MT4 거래 방법을 MT5에 적용하지 않는 경우를 의미합니다).

나는 R2와 MT5의 결과의 차이점에 대해 이야기하는 것이 아닙니다 (그러나 Rumus는 실제로 수명이 다했기 때문에 고려하지 않을 것입니다).

저는이 진술을 n 번째로 읽고 있으며, n 번째로 MT5에서 MT4로 (또는 그 반대로) 전송할 때 재무 결과가 변경되는 주문 / 거래 시퀀스를 하나 이상 인용 해달라고 요청하고 싶습니다. 내역의 주문/거래 목록이 변경되는 것이 아니라 현재 오픈 포지션의 표시가 달라지는 것이 아니라 재무 결과가 변경됩니다.

거래 조건이 동일하다면(호가/스프레드/스왑/스톱 레버 등) MT5의 결과가 MT4와 동일하거나 더 좋을 것이라고 주장합니다(MT4에 2개의 카운터 포지션이 있는 경우 스왑으로 인해 더 좋음).


예, 거래를 복사 할 때 모든 뉘앙스를 설명하는 것은 어려운 작업입니다. 그러나 이것은 또 다른 작업이며 네팅 문제의 이론적 부분과는 관련이 없습니다.

 
komposter:

실제로 온트레이드는 포지션 목록 변경을 처리하기에 이상적인 곳입니다. 기존 거래가 다음 거래 이벤트가 아닌 시작 시점에 즉시 복사되도록 하기만 하면 됩니다.

이벤트 필터링은 매우 간단합니다. 포지션 목록을 확인하고 변경된 사항이 있는 경우에만 계속 처리하면 됩니다.

이 필터링에 대해 이야기하는 것이 아니라 OnTrade 이벤트에서 실행 된 거래뿐만 아니라 배치 된 주문에 대해서도 나타나며 차례로 반드시 구현되지는 않습니다.
 
Urain:
이 필터링에 대해 말하는 것이 아니라 OnTrade에서 이벤트는 실행 된 거래뿐만 아니라 배치 된 주문에 대해서도 나타나며 차례로 반드시 구현되지는 않습니다.
즉, 주문 체결/취소/실행에 반응할 필요가 없습니다. 이렇게 하려면 포지션이 변경되었는지 확인해야 합니다.
 

좋은 생각. 훌륭한 복사기.! 오래 전에 시도했지만 잘 풀리지 않았고 여기에서 내 실수가 무엇인지 살펴 보았습니다.


저자에게 존경합니다. !!!

 
komposter:
주문/취소/실행에 반응할 필요가 없습니다. 이렇게 하려면 포지션이 변경되었는지 확인해야 합니다.

그런 다음 OnTimer의 복사본을 만들고 이름을 다음과 같이 바꿉니다:

void OnTimers()
  {
//--- 위치 가져오기 
   get_positions();
//--- 위치가 같지 않으면 새 데이터를 저장합니다.
   if(compare_positions())saves_positions();
  }
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void OnTrade()
  {
//--- 위치 가져오기 
   get_positions();
//--- 위치가 같지 않으면 새 데이터를 저장합니다.
   if(compare_positions())saves_positions();
  }

//EventKillTimer()로 변경한 다음 OnDeinit에서 타이머 소멸을 주석 처리합니다;

타이머 파괴를 주석 처리하고, EventSetTimer(1) 대신 OnInit; 을 넣습니다.

OnTimers();

ZY는 실제로 전체 재작업이지만 월요일에야 확인할 수 있을 것입니다.

 
Urain:

그런 다음 OnTimer의 복사본을 만들고 이름을 이렇게 바꿉니다:

간단하죠, 간단합니다 ;)


Urain:

그리고 이벤트 설정 타이머(1);; 대신 온인트에서

초기화가 "실패"하면 (예를 들어 터미널을 시작할 때 데이터가 제 시간에로드되지 않음) 복사기는 다음 거래 이벤트가있을 때까지 "절전"됩니다. 이 경우 초기화에 성공할 때까지 작동하는 무한 루프 또는 동일한 온타이머를 제공해야 합니다.

 
Urain:

라이브러리의 경우 ex5 라이브러리에 반대하지는 않지만 최종 사용자를 방해하기 때문에 dll을 사용하고 싶지 않습니다.

그리고 MT4의 추가 복사본을 설치하는 것도 최종 사용자에게는 그리 편리하지 않습니다 ;-). 대부분의 사용자는 MT4를 이미 오래 전에 설치했고 MT5 파일에는 전혀 설치하지 않았을 가능성이 높습니다. 그렇다면 대체를 트릭으로 사용하는 것이 좋을까요?
 
marketeer:
MT4의 추가 복사본을 설치하는 것도 최종 사용자에게는 그리 편리하지 않습니다 ;-). 대부분의 경우 사용자는 MT5 파일이 아닌 MT4를 이미 오래 전에 설치했을 가능성이 높습니다. 트릭으로 대체를 사용하는 것이 좋을까요?
저도 비슷한 생각을 했습니다. 하지만 대체에는 몇 가지 함정이 있습니다(적어도 XP에서는): 물리 디스크(\\.\PHYSICALDRIVEx)에 대한 액세스가 중지됩니다.
 
marketeer:
MT4의 추가 복사본을 설치하는 것도 최종 사용자에게는 그리 편리하지 않습니다 ;-). 대부분의 경우 사용자는 MT5 파일이 아닌 MT4를 이미 오래 전에 설치했을 가능성이 높습니다. 서브 스크립트를 트릭으로 사용하는 것이 좋을까요?

신호 전송 채널에 대한 기사를 작성하려고 한 것이 아니라 가장 간단하고 이해하기 쉬운 솔루션을 찾았습니다.

신호 전송은 별도의 기사의 주제라고 생각합니다.

그리고 여기에 두 번째 MT를 넣는 것이 그리 편리하지 않은 것에 대해 나는 당신이 틀렸다고 생각합니다. 내가 아는 한 많은 사용자가 기계에 최대 12 개의 MT를 유지하고 문제가없는 개인적인 서신. 게다가 MT4는 간단한 복사로 쉽게 전송할 수 있습니다. 또한 내 코드에는 마술 보호 기능이 없으므로 복사 및 수동으로 계정을 동시에 사용할 수 없습니다.