거래 로봇을 무료로 다운로드 하는 법을 시청해보세요
당사를 Telegram에서 찾아주십시오!
당사 팬 페이지에 가입하십시오
스크립트가 흥미로우신가요?
그렇다면 링크 to it -
하셔서 다른 이들이 평가할 수 있도록 해보세요
스크립트가 마음에 드시나요? MetaTrader 5 터미널에서 시도해보십시오
Experts

다중 통화 모드 제어판 "Control panel MCM" - MetaTrader 5용 expert

Konstantin Gruzdev
Konstantin Gruzdev
Research Engineer. Been programming since 1982. Since 2001, I write software for companies operating in the stock and currency markets. With MetaTrader been working since 2006. Since 2010 an active participant MQL5.Community.
My main creative contribution to the MQL5-coding and the community:
| Korean English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
조회수:
314
평가:
(45)
게시됨:
업데이트됨:
MQL5 프리랜스 이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동

서론

MQL5 프로그래밍 언어의 장점 중 하나는 실제 다중 통화 모드에서 지표와 자동 거래 시스템이 작동할 수 있는 도구를 만들 수 있다는 점입니다. 이를 입증하는 예로 , 제가 Code Base에 게시한 “다중 통화 틱 처리기 OnTickMarketWatch” 스크립트를 들 수 있습니다 .

스크립트에 제시된 방식을 그대로 사용하면 몇 가지 불편한 점이 발생합니다. 예를 들어, OnChartEvent() 함수로 들어오는 틱의 양이 많으면 이벤트 큐가 ‘막힐’ 수 있습니다. 다음은 도움말에 나와 있는 경고입니다:

Все возникающие события клиентский терминал складывает в общую очередь. Таким образом события обрабатываются одно за другим в порядке поступления. Исключение составляет событие NewTick. Если в очереди уже есть такое событие либо это событие находится в состоянии обработки, то новое событие NewTick в очередь не ставится.
Очередь событий имеет ограниченный размер. При переполнении очереди старые события удаляются без обработки для того, чтобы освободить место для вновь поступающих событий. Поэтому крайне рекомендуется писать эффективные обработчики событий и не рекомендуется использовать бесконечные циклы.

이 외에도 때로는 새로운 바가 나타날 때만 매매를 하거나 지표를 계산해야 할 때가 있습니다. 또는 멀티커런트 처리기의 작동을 중단하지 않고, 말하자면 ‘실시간으로’ 특정 상품에 대한 거래를 긴급하게 중지해야 할 때도 있습니다. 또는 멀티통화 거래기의 작동을 중단하지 않고 특정 종목의 기간을 변경해야 할 수도 있습니다. 그 외에도 여러 가지가 있습니다… 게다가 이 ‘여러 가지’는 종종 지표나 자동 거래 시스템이 작동하는 외부 환경의 데이터입니다.

바로 이러한 멀티통화 지표나 자동매매 시스템이 작동하는 외부 환경을 설정하기 위해 ‘Control panel MCM’(Control panel the MultiCurrency Mode) 멀티통화 모드 제어 패널이 고안되었습니다.

참고로, 이 패널은 단일 통화 거래에도 손쉽게 사용할 수 있습니다.


이번 공모전에 출품된 “Control panel MCM” 버전의 장점

기능
제출된 버전에는 모든 최소한의 기능 세트가 포함되어 있으며, 이는 지표 및 자동 거래 시스템의 다중 통화 모드 설정에 필수적인 것으로, 구체적으로 다음과 같습니다:

  • 거래 또는 분석을 위해 "시장 개요" 창에서 종목 표시/비표시 설정.
  • 임의의 기간 및 “시장 개요”에서 선택한 종목에 대해 틱 단위 또는 “새로운 바” 이벤트 단위의 거래 모드를 설정할 수 있습니다.
  • 위 모든 설정을, 전문가 자문가나 지표의 속성 창을 닫거나 중지하거나 열지 않고도 ‘실시간’으로 변경할 수 있습니다.
  • 패널을 차트에 독립적인 단위로 설치한 후, 패널과 호환되는 전문가 자문 및 지표를 차트에 “드래그 앤 드롭”할 수 있습니다.
  • 이 패널은 지표나 전문가 자문의 구성 요소로 포함시킬 수 있습니다. 그러면 해당 요소들과 함께 로드됩니다.
  • 이는 다중 통화 지표 및 전문가를 생성할 때 여러분의 창의적인 잠재력을 전혀 제한하지 않습니다. 게다가, “Control panel MCM” 덕분에 이제 이 개발 도구가 제공하는 기능을 직접 코드에 “삽입”할 필요가 없습니다.

"Control panel MCM" 메뉴를 살펴보시면, 가능하지만 콘테스트 버전에는 포함되지 않은 추가 서비스를 확인하실 수 있습니다.

"Control panel MCM"의 기능에 대한 더 자세한 설명은 아래 "다중 통화 모드 제어판 사용" 섹션에서 확인하실 수 있습니다.

기능 제한 사항: 이 버전에서는 제어판을 재시작할 때 설정이 저장되지 않으며, 기본 기능을 확장하는 추가 모듈도 활성화되어 있지 않습니다.


패널의 간편한 설치 및 유지 관리

"Control panel MCM"을 설치하는 것은 쉽습니다. 다음 세 가지 방법으로 설치할 수 있습니다:

  • 패널의 “엔진” 역할을 하는 “iControl panel MCM” 지표(indicator)를 원하는 차트에 불러옵니다.
  • "scControl panel MCM" 스크립트를 실행합니다. 이 스크립트는 예시를 위해 간단히 제작된 것으로, "iControl panel MCM" 인디케이터를 실행합니다.
  • 자신의 인디케이터나 전문가 자문가(Expert Advisor)에서 패널 로딩을 활성화합니다. 전문가 자문가 예제는 "exControl panel MCM" 파일에 있습니다.

마지막 경우, 패널은 사용자 지표나 Expert Advisor와 함께 하나의 창에 로드됩니다. 처음 두 경우에는 패널 자체만 설치됩니다. 이후 이 창에는 "Control panel MCM"과 호환되는 사용자 Expert Advisor나 지표를 설치할 수 있습니다. 사용자 MQL 프로그램에 대한 유일한 호환성 요구 사항은 표준 이벤트 핸들러인 OnChartEvent()가 포함되어 있어야 한다는 점입니다.


인터페이스 디자인

간단합니다. 전통적인 메뉴 형태로 구성되어 있습니다. 색상과 크기 조정은 지표의 속성을 통해 이루어집니다. 패널과 패널 버튼의 외관은 다음과 같습니다:

iControl panel MCM 표시등의 색상 및 크기 설정


일상 업무에서의 사용 편의성

이 부분도 매우 간단합니다. 패널 자체는 작업을 시작할 때 다중 통화 기능을 위해 필요한 이벤트를 설정하는 데만 사용됩니다. 창 크기는 가능한 한 차트 창 크기에 맞춰 조정됩니다. 메뉴가 충분히 길면 메뉴 목록을 스크롤할 수 있는 수직 스크롤바가 나타납니다. 설정이 끝나면 패널을 접을 수 있으며, 다시 호출될 때까지 창 왼쪽 하단 모서리에 '잠든' 상태로 남아 있습니다. 이 패널은 차트를 크게 가리지 않으며 작업에 별다른 방해가 되지 않습니다.

접힌 iControl 패널 MCM 디스플레이

패널 크기는 인디케이터의 “속성”에서 글꼴 크기를 변경하여 조절할 수 있습니다. 기본값은 글꼴 크기 10입니다:

iControl panel MCM 디스플레이 글꼴 설정

예를 들어, 눈이 부시는 글래머 블라안딘크의 경우 패널은 다음과 같이 보일 수 있습니다:

iControl panel MCM 표시판 색상 설정

그리고 신비롭고 모든 것을 꿰뚫어 보는 에모족의 경우, 패널은 예를 들어 다음과 같이 보일 수 있습니다:

iControl panel MCM 표시판 색상 설정


사용법을 쉽게 익히고 기억할 수 있음

패널 메뉴는 직관적으로 이해하기 쉽습니다. 메뉴가 단 몇 개의 버튼으로만 구성되어 있어 헷갈릴 일이 거의 없으며, 기억하기도 쉽습니다.

"Control panel MCM" 메뉴 버튼에는 패널의 기능을 확장하는 추가 도구가 포함되어 있습니다(이 버전에서는 활성화되어 있지 않음):

iControl 패널 MCM의 추가 도구

"차트" 메뉴 버튼에는 현재 차트의 종목 및 기간 설정이 포함되어 있습니다. 다른 종목이나 기간을 선택하면 현재 차트의 매개변수를 변경할 수 있습니다:

iControl panel MCM 패널의 현재 그래프 설정 변경

"이벤트" 메뉴 버튼에는 거래나 분석을 위한 종목을 "실시간"으로(전문가 자문이나 지표를 종료하지 않고) 활성화/비활성화하는 기능과, 선택한 종목에 대한 필수 이벤트 설정이 포함되어 있습니다. 이러한 이벤트는 전문가 자문가나 지표 내의 OnChartEvent() 함수를 통해 추적할 수 있습니다.

메뉴에는 "시장 개요" 창에서 선택된 종목만 표시됩니다. 취향에 따라 하나의 이벤트를 선택하거나 여러 이벤트를 조합할 수 있습니다. 이 모든 이벤트는 멀티통화 창으로 전송됩니다. 이제 지표나 전문가 자문가에서 특정 시간대에 새로운 바가 나타나는지 등을 신경 쓸 필요가 없습니다. 이 패널이 이를 처리하고 OnChartEvent() 이벤트 핸들러를 통해 해당 이벤트를 알려줄 것입니다:

iControl panel MCM의 새로운 패널 출시 소식

"도움말" 메뉴 버튼은 순전히 사리사욕에서 만든 것입니다. 제 저작권을 증명하고, 여러분을 이 포럼으로 "이끌어" 보내기 위해서죠:

iControl 패널 MCM 설명서


노하우 솔루션, 혹은 흥미로운 접근 방식

사실, 제 노하우 기반 해결책은 “OnTickMarketWatch 다중 통화 틱 처리기”를 게시했을 때 이미 공개한 바 있습니다 . 하지만 이 패널은 추가적인 해결책을 포함하고 있으며, 이전에 제안된 스크립트의 모든 단점을 배제하고 있습니다:

  • "Control panel MCM"은 터미널에 기본적으로 구현되어 있지 않은 서비스를 제공합니다. 즉, OnChartEvent() 이벤트 핸들러를 통해 진정한 다중 통화 모드를 구현할 수 있게 해주며, 일부 설정을 Expert Advisor 외부로 분리하여 ‘실행 중’에도 신속하게 변경할 수 있게 해줍니다.
  • 표준 이벤트 핸들러인 OnChartEvent()에 대한 이벤트를 생성하기 위해 이 패널은 자체 “에이전트”를 사용하며, 이 에이전트들이 다중 통화 전문가에 필요한 해당 이벤트를 전달합니다. 이를 통해 데이터 처리 스레드를 병렬화함으로써 다중 통화 전문가의 부하를 “분산”시킬 수 있습니다. 여기서 말하는 '에이전트'란, 선택한 종목에서 'Control panel MCM'을 통해 실행되는 지표를 의미합니다.
  • 이 패널은 독립적인 도구로 사용할 수도 있고, 전문가 자문가나 지표에 내장하여 사용할 수도 있습니다. 이를 통해 상당히 유연하게 활용할 수 있습니다.
  • 'Control panel MCM'은 다중 통화 지표 및 전문가 조언자를 개발할 때 프로그래머의 창의력을 조금도 제한하지 않습니다. 게다가 'Control panel MCM' 덕분에 이제 이 개발 도구가 제공하는 기능을 코드에 직접 '삽입'할 필요가 없어졌습니다.
  • 에스퍼트와 지표 아키텍처에 있어 새롭고 더 단순한 표준을 제시합니다(적어도 그렇게 주장합니다). 물론 제 개인적인 의견입니다. 시간이 된다면 몇 가지 예시를 올려보겠습니다.


이벤트에 대한 정보 제공 및 트레이더 알림

이를 위해 패널에는 모든 이벤트와 운영자의 동작이 표시되는 상태 표시줄이 있습니다. 사실 이벤트 로그 모듈을 연결할 수 있지만, 순전히 장난삼아 이번 버전에는 포함시키지 않았습니다.


"Control panel MCM" 사용 시 몇 가지 특징.

패널 설치.

패널을 설치하려면 "Control panel MCM.rar" 압축 파일을 mql5 디렉터리에 압축을 풀어주어야 합니다. 압축을 풀면 다음과 같은 파일들이 생성됩니다:

  • /mql5/experts/exControl panel MCM.mq5 - 템플릿을 사용하는 전문가의 예시;
  • /mql5/scripts/scControl panel MCM.mq5 - 제어판을 불러오는 스크립트;
  • /mql5/indicators/iControl panel MCM.mq5 - “Control panel MCM” 엔진 지표;
  • /mql5/indicators/Spy Control panel MCM.mq5 - "Control panel MCM" 에이전트 지표;
  • /mql5/include/Control panel MCM.mqh - “Control panel MCM”의 함수 및 클래스 모음.

전문가, 스크립트 및 두 지표 모두를 컴파일하십시오.

패널 불러오기

패널 로딩 방법은 간단합니다: 어떤 종목이나 시간대에서도 “iControl panel MCM.mq5” 지표를 실행하세요. 이것으로 끝입니다. 이제 패널을 자유롭게 사용해 보세요. "Control panel MCM"과 호환되는 전문가 자문가 및 지표들을 차트에 추가할 수 있습니다.

제게는 전문가 자문가에서 패널을 불러오는 것이 더 실용적입니다. "exControl panel MCM" 전문가 자문가를 실행하면 다음과 같은 화면이 나타납니다:

iControl panel MCM 패널 사용 예시

추가로, 예시를 위해 다중 통화 모드 제어 패널과 함께 사용하도록 특별히 개발된 저만의 다중 통화 지표인 MultiTrend를 연결해 보았습니다. 이 지표는 4개 통화의 움직임 분석을 바탕으로 달러(분홍색 선)의 추이를 보여줍니다.

전문가 코드 내용은 다음과 같습니다:

//+------------------------------------------------------------------+ 
//|                                                   MultiTrend.mq5 | 
//|                                            Copyright 2010, Lizar | 
//|                            https://www.mql5.com/ko/users/Lizar | 
//+------------------------------------------------------------------+ 
#define VERSION       "1.00 Build 2 (09 Dec 2010)" 
#property copyright   "Copyright 2010, Lizar"
#property link        "https://www.mql5.com/ko/users/Lizar"
#property version     VERSION
#property description "전문가가 다중 통화 모드 제어 패널의 작동 방식을 시연하고 있다"
#property description "\Control panel MCM\" (Control panel the MultiCurrency Mode)."
input color bg_color=Gray;        // 메뉴 색상 
input color font_color=Gainsboro; // 글꼴 색상 
input color select_color=Yellow;  // 강조 표시 색상 
input int font_size=10;         // 글자 크기 
#include <Control panel MCM.mqh> //<--- 포함 파일: Control panel MCM 
//+------------------------------------------------------------------+ 
//| 전문가 초기화 함수                                   | 
//+------------------------------------------------------------------+ 
int OnInit()
  {    //--- MCA 제어판 초기화.    
//--- 색상 매개변수를 설정할 필요는 없습니다(메뉴의 기본 색상 조합이 적용됩니다).     
   InitControlPanelMCM(bg_color,font_color,select_color,font_size);
//---   
  return(0);   
  } 
//+------------------------------------------------------------------+ 
//| Expert 초기화 해제 함수                                 | 
//+------------------------------------------------------------------+ 
void OnDeinit(const int reason)
  {
   DeinitControlPanelMCM();   //<--- MCA 제어판 초기화 해제: 
  }
//+------------------------------------------------------------------+ 
//| 표준 이벤트 처리 함수입니다. 이 함수는 다음과 같이 사용할 수 있습니다 | 
//| 문서에 설명된 대로 본래의 용도에 따라.        | 
//|                                                                  | 
//| 제어판과 함께 MCM은 편리한 도구입니다.        | 
//| 다중 통화 거래.                                         | 
//+------------------------------------------------------------------+ 
void OnChartEvent(const int id, // 이벤트 식별자:                                     
                  // id-CHARTEVENT_CUSTOM==0인 경우 - 초기화, prev_calculated==0인 시점과 일치함
                  // id-CHARTEVENT_CUSTOM!=0인 경우 - “시장 개요” 창에서 해당 기호의 위치                
                  const long&   lparam, // 그래프 기간                
                  const double& dparam, // 가격                
                  const string& sparam  // 도구                
                  )
  {
   if(id>=CHARTEVENT_CUSTOM)
     {
      Print(TimeToString(TimeCurrent(),TIME_SECONDS)," -> id=", id-CHARTEVENT_CUSTOM,
                         ":  ",sparam," ",EventDescription(lparam)," price=",dparam);
     }
  }
//+------------------------------------------------------------------+ 


OnChartEvent()의 입력 매개변수 설명

제어판은 사용자 이벤트를 생성하여 설치된 차트에 전송하며, 이는 OnChartEvent() 함수를 통해 전문가 또는 지표에서 해당 이벤트를 추가로 처리하기 위함입니다. 이 함수의 입력 매개변수(본 예시의 경우)는 다음과 같이 해석해야 합니다:

  • id - 이벤트 식별자:
    id-CHARTEVENT_CUSTOM != 0인 경우 - "시장 개요" 창에서 심볼의 위치;
  • lparam; - 패널 에이전트로부터 수신된 이벤트 플래그. 플래그는 ENUM_CHART_EVENT_SYMBOL 열거형에 해당하며, 이는 포함되는 파일 Control panel MCM.mqh의 시작 부분에서 찾을 수 있고, 설명은 본문 하단에 있습니다.
  • dparam - 틱 가격 또는 특정 타임프레임에서 새로운 바의 시가.
  • sparam - 이벤트가 발생한 거래 상품의 이름


Control panel MCM에서 제공하는 이벤트 목록

lparam을 통해 제어판은 설정에 따라 심볼당 최대 64개의 다양한 사용자 정의 이벤트를 전송할 수 있습니다. 현재 버전의 Control panel MCM은 다음과 같은 이벤트를 전송할 수 있습니다:

  • "초기화" (Initialization) 이벤트;
  • "새로운 틱" 이벤트 (tick);
  • 1분 차트(M1)의 “새로운 바” 이벤트;
  • 2분 차트(M2)의 "새로운 바" 이벤트;
  • 3분 차트(M3)의 “새로운 바” 이벤트;
  • 4분 차트(M4)의 “새로운 바” 이벤트;
  • 5분 차트(M5)의 "새로운 바" 이벤트;
  • 6분 차트(M6)의 “새로운 바” 이벤트;
  • 10분 차트(M10)의 “새로운 바” 이벤트;
  • 12분 차트(M12)의 "새로운 바" 이벤트;
  • 15분 차트(M15)의 “새로운 바” 이벤트;
  • 20분 차트(M20)의 "새로운 바" 이벤트;
  • 30분 차트(M30)의 "새로운 바" 이벤트;
  • 1시간 차트(H1)의 "새로운 바" 이벤트;
  • 2시간 차트(H2)의 “새로운 바” 이벤트;
  • 3시간 차트(H3)의 “새로운 바” 이벤트;
  • 4시간 차트(H4)에서 "새로운 바" 이벤트;
  • 6시간 차트(H6)의 “새로운 바” 이벤트;
  • 8시간 차트(H8)에서 "새로운 바" 발생;
  • 12시간 차트(H12)에서 "새로운 바" 발생;
  • 일봉 차트(D1)에서 “새로운 봉” 발생;
  • 주간 차트(W1)에서 "새로운 바" 발생;
  • 월간 차트(MN1)에서 "새로운 바" 발생;

괄호 안에는 EventDescription() 함수가 반환하는 이벤트에 대한 설명이 나와 있습니다. 이 함수 자체는 Control panel MCM.mqh 파일의 시작 부분, ENUM_CHART_EVENT_SYMBOL 열거형 목록 바로 뒤에서 찾을 수 있습니다.

"초기화" 이벤트는 이벤트가 발생한 심볼의 지표 입력 매개변수 prev_calculated가 0으로 초기화되는 시점에 해당한다는 점에 유의하십시오. 따라서, 우리의 다중 통화 지표나 전문가 자문가에서는 이에 상응하는 조치를 취해야 합니다. 예를 들어, 해당 심볼에 대한 지표를 재계산해야 합니다.


이벤트 설정

제어판 에이전트로부터 수신될 이벤트를 설정하려면 “이벤트” 메뉴 버튼을 클릭하십시오. 버튼을 클릭하면 현재 “시장 개요” 창에서 선택된 모든 종목 목록이 표시됩니다. 특정 종목에 대한 이벤트를 활성화하려면 해당 종목을 마우스로 두 번 클릭해야 합니다. 그 짜릿한 느낌을 온전히 즐기려면 천천히 클릭하는 것이 좋습니다.

이전에 해당 종목에 대한 이벤트를 이미 활성화한 적이 있다면(이 종목은 밝은 색으로 강조 표시됨), 한 번만 클릭하면 됩니다. 이벤트 목록이 나타납니다. 하나 또는 여러 개의 이벤트를 선택할 수 있으며, 선택한 모든 이벤트는 여러분의 멀티통화 창으로 전송됩니다. 변경 사항을 적용하려면 "이벤트 켜기/끄기" 버튼을 클릭해야 합니다. 필요한 모든 종목에 대해 이 과정을 반복하세요.

iControl panel MCM의 이벤트 선택

다음은 데모 전문가와 패널을 함께 사용한 결과입니다:

iControl panel MCM 표시기의 작동 예시

MetaQuotes Ltd에서 러시아어로 번역함.
원본 코드: https://www.mql5.com/ru/code/215

YURAZ_MT5에서 MT4용 CSV 내역 파일 생성 YURAZ_MT5에서 MT4용 CSV 내역 파일 생성

이 스크립트를 사용하면 MetaTrader 5 데이터베이스에서 MetaTrader 4용 누락된 부분 없이 완전한 거래 내역을 가져올 수 있습니다.

ChartReinit ChartReinit

모든 지표를 재계산하며 차트를 재초기화하는 버튼 기능과, 하나의 익스퍼트에서 모든 차트를 처리하는 간단하고 투명한 객체 지향 예제입니다.

추세 평형 지표 TrendEQ 추세 평형 지표 TrendEQ

추세 균형 지표 TrendEQ는 모멘텀과 변동성을 결합하여 시장 추세를 동적으로 분석합니다. 시장 추세에 대한 모멘텀을 측정함으로써 TrendEQ는 추세 강도와 방향에 대한 신뢰할 수 있는 척도를 제공합니다.

Calendar-Based Backtesting: an Event-Driven Trading EA Calendar-Based Backtesting: an Event-Driven Trading EA

이 스크립트 및 EA를 통해 코더는 MQL5 캘린더를 사용하는 뉴스 기반 전략을 백테스트할 수 있습니다.