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

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

조회수:
38
평가:
(43)
게시됨:
MQL5 프리랜스 이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동

소개

MQL5 프로그래밍 언어의 장점 중 하나는 지표와 전문가 어드바이저가 실제 다중 통화 모드에서 작동할 수 있는 도구를 만들 수 있다는 것입니다. 제가 코드 베이스에 올린 "다중 통화 틱 핸들러 OnTickMarketWatch" 스크립트에서 이를 확인할 수 있습니다.

스크립트에서 제안한 변형을 직접 사용하면 여러 가지 불편한 점이 있습니다. 예를 들어 OnChartEvent() 함수에 많은 수의 틱이 들어오면 이벤트 대기열이 "복잡해질" 수 있습니다. 다음은 도움말의 경고입니다:

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

이 외에도 새 막대가 나타날 때만 지표를 거래하거나 계산해야 하는 경우가 있습니다. 또는 작업을 중단하지 않고 일부 상품에서 다중 통화 거래를 긴급하게 끄려면 "즉시"라고 말할 수 있습니다. 또는 예를 들어 다중 통화 거래를 중단하지 않고 심볼의 기간을 변경할 수 있습니다. 또는 다른 많은 것들... 그리고 이 "다른 많은 것들"은 종종 지표 또는 전문가 조언자가 작동하는 외부 환경의 데이터입니다.

다중 통화 모드의 제어판 "제어판 MCM"(다중 통화 모드의 제어판)은 다중 통화 지표 또는 전문가 조언자가 작동하는 외부 환경을 설정하기 위해 고안된 것입니다.

그런데 이 패널은 단일 통화 거래에도 쉽게 사용할 수 있습니다.


콘테스트에 제출된 "제어판 MCM" 버전의 장점은 다음과 같습니다.

기능
제시된 버전은 모두 최소 지표 및 전문가 고문의 다중 통화 모드를 설정하는 데 필요한 기능 세트:

  • 트레이딩 또는 분석을 위해 "종합시세" 창에서 심볼 연결/연결 해제.
  • "종합시세"에서 선택한 기간 및 심볼에 대해 틱 또는 "새 막대" 이벤트별로 거래 모드를 설정합니다.
  • 전문가 고문 또는 보조지표의 속성 창을 언로드, 중지 또는 액세스하지 않고도 위의 모든 설정을 "즉시" 변경할 수 있습니다.
  • 패널을 차트에 독립된 장치로 설치한 다음 패널과 호환되는 전문가 조언자 및 보조지표를 차트에 "던질" 수 있습니다.
  • 패널은 인디케이터 또는 전문가 조언자의 복합 단위로 포함될 수 있습니다. 이들과 함께 로드됩니다.
  • 이 모든 것이 다중 통화 지표 및 전문가 조언을 만드는 데 창의력을 제한하지 않습니다. 또한 "제어판 MCM" 덕분에 이 개발이 제공하는 것을 코드에 "스티치"할 필요가 없습니다.

"제어판 MCM" 메뉴를 살펴보면 경쟁사 버전에는 포함되어 있지 않지만 가능한 추가 서비스를 볼 수 있습니다.

"제어판 MCM" 기능에 대한 자세한 설명은 아래 "다중 통화 모드 제어판으로 작업하기" 섹션에 나와 있습니다.

기능 제한: 이 버전은 패널을 다시 로드할 때 설정을 저장하지 않으며 기본 기능을 확장하는 추가 모듈을 포함하지 않았습니다.


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

"제어판 MCM"은 설치가 쉽습니다. 세 가지 방법으로 할 수 있습니다:

  • 원하는 차트에 패널의 "엔진"인 "iControl panel MCM" 표시기를 로드합니다.
  • "scControl panel MCM" 스크립트를 실행합니다. 이 스크립트는 예를 들어 "iControl panel MCM" 인디케이터를 실행하기 위해 만들어졌습니다.
  • 인디케이터 또는 EA에서 패널 로드를 활성화합니다. Expert Advisor의 예는 "exControl panel MCM" 파일에 있습니다.

마지막 변형에서는 패널이 하나의 창에 보조지표 또는 전문가용 보조지표와 함께 로드됩니다. 처음 두 개에서는 패널 자체가 설치됩니다. 그런 다음 이 창에 Expert Advisor 또는 인디케이터를 설치할 수 있으며, 이 인디케이터는 "제어판 MCM"과 호환되어야 합니다. MQL 프로그램에 대한 유일한 호환성 요구 사항은 표준 OnChartEvent() 이벤트 핸들러가 있어야 한다는 것입니다.


인터페이스 디자인

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

iControl 패널 MCM 디스플레이의 색상 및 크기 설정하기


일상 활동에서의 인체공학적 작업

여기에서도 모든 것이 매우 간단합니다. 패널 자체는 작업 초기에 다중 통화 시스템에 필요한 이벤트를 설정하는 데만 필요합니다. 창 크기는 가능한 경우 차트 창의 크기에 맞게 조정됩니다. 메뉴가 충분히 길면 메뉴 목록의 세로 스크롤 선이 나타납니다. 조정 후에는 패널을 최소화할 수 있으며 깨어날 때까지 창의 왼쪽 하단 모서리에 '절전 모드'로 표시됩니다. 차트를 어지럽히지 않고 크게 방해하지 않습니다.

접힌 아이컨트롤 패널 MCM 니디케이터 패널

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

i컨트롤 패널 MCM 표시기 글꼴 설정

예를 들어 블라인드 글래머 블라아아앤드잉크의 경우 패널은 다음과 같이 보일 수 있습니다:

iControl 패널 MCM 디스플레이 패널의 색상 설정하기

그리고 신비한 모든 것을 볼 수 있는 EMO의 경우 패널은 다음과 같이 보일 수 있습니다:

iControl 패널 MCM 디스플레이 패널의 색상 설정하기


쉽게 배우고 외울 수 있는 동작

패널 메뉴는 직관적입니다. 메뉴가 몇 개의 버튼으로만 구성되어 있기 때문에 혼동하기 어렵고 외우기 쉽습니다.

메뉴 버튼 "제어판 MCM"에는 패널 기능을 확장하는 추가 도구가 포함되어 있습니다(이 버전에서는 연결되지 않음):

iControl 패널 MCM 표시기 패널의 추가 도구

메뉴 버튼 "차트"에는 현재 차트의 심볼과 주기에 대한 설정이 포함되어 있습니다. 다른 기호 또는 기간을 선택하면 현재 그래프의 매개변수를 변경할 수 있습니다:

현재 iControl 패널 MCM 그래프의 매개변수 변경하기

메뉴 버튼 "이벤트"에는 트레이딩 또는 분석용 심볼을 즉시 활성화/비활성화할 수 있는 기능(전문가 조언 또는 보조지표 비활성화 없이)과 선택한 심볼별로 필요한 이벤트를 설정할 수 있는 기능이 포함되어 있습니다. 이러한 이벤트는 보조지표 또는 보조지표의 OnChartEvent() 함수로 모니터링할 수 있습니다.

메뉴에는 "종합시세" 창에서 선택한 종목만 표시됩니다. 단일 이벤트를 선택하거나 여러 이벤트를 함께 결합할 수 있습니다. 모든 이벤트가 다중 통화 모니터에 입력됩니다. 이제 인디케이터 또는 전문가 조언에서 예를 들어 어떤 차트주기에 새 막대가 나타나는지 신경 쓸 필요가 없으며, 이 패널이 이를 처리하고 OnChartEvent() 이벤트 핸들러를 통해 이 이벤트에 대해 알려줍니다:

이벤트 새로운 iControl 패널 MCM 패널 바

'도움말' 메뉴 버튼은 순전히 저의 저자임을 증명하고 이 포럼으로 '안내'하는 의미에서 순전히 사심에서 만든 것입니다:

iControl 패널 MCM 도움말


노하우 솔루션 또는 흥미로운 접근 방식

사실, 저는 "OnTickMarketWatch 다중 통화 틱 핸들러" 를 게시 할 때 노하우 솔루션을 공개했습니다. 그러나 이 패널에는 추가 솔루션이 포함되어 있으며 이전에 제안한 스크립트의 모든 단점을 제외합니다:

  • "제어판 MCM"은 터미널에서 표준으로 구현되지 않은 서비스를 제공합니다. 즉, OnChartEvent() 이벤트 핸들러를 통해 실제 다중 통화 모드의 가능성을 제공하고 일부 설정을 "즉시" 변경할 수 있는 기능을 통해 전문가 어드바이저 외부로 이동할 수 있습니다.
  • 표준 OnChartEvent() 이벤트 핸들러에 대한 이벤트를 생성하기 위해 패널은 자체 "에이전트"를 사용하여 다중 통화 전문가 어드바이저에 해당 이벤트를 제공합니다. 이를 통해 데이터 처리 작업을 병렬화하여 다중 통화 전문가 조언자를 "언로드"할 수 있습니다. 여기서 보조지표란 선택한 심볼의 "제어판 MCM"에서 실행되는 지표를 의미합니다.
  • 이 패널은 독립적인 도구로 사용하거나 전문가 자문 또는 보조지표에 내장할 수 있습니다. 이를 통해 매우 유연하게 사용할 수 있습니다.
  • "제어판 MCM"은 다중 통화 지표 및 전문가 조언을 만들 때 프로그래머의 창의적 잠재력을 제한하지 않습니다. 또한 "제어판 MCM" 덕분에 이제이 개발이 제공하는 것을 코드에 "스티치"할 필요가 없습니다.
  • 이는 새롭고 단순한 전문가 자문 및 인디케이터 아키텍처 표준을 만들거나 적어도 만들었다고 주장합니다. 물론 IMHO입니다. 시간이 된다면 몇 가지 예시를 올리겠습니다.


이벤트 및 트레이더 알림 정보 지원

이를 위해 패널에는 운영자의 모든 이벤트와 작업이 표시되는 상태 표시 줄이 있습니다. 사실 이벤트 로그를 위한 플러그인 모듈이 있지만 이번 버전에는 포함시키지 않았습니다.


"제어판 MCM"작업의 몇 가지 특징.

패널 설치.

패널을 설치하려면 아카이브 파일 "제어판 MCM.rar"의 압축을 mql5 디렉토리에 풀어야 합니다. 포장을 풀 때 여러 파일을 얻을 수 있습니다 :

  • /mql5/experts/exControl panel MCM.mq5 - 템플릿을 사용하는 전문가 어드바이저의 예입니다;
  • /mql5/scripts/scControl panel MCM.mq5 - 제어판을 로드하는 스크립트;
  • /mql5/indicators/iControl panel MCM.mq5 - 표시기 - "제어판 MCM" 엔진;
  • /mql5/indicators/Spy 제어판 MCM.mq5 - 표시기 - "제어판 MCM" 에이전트;
  • /mql5/include/Control panel MCM.mqh - "제어판 MCM"의 기능 및 클래스 모음.

전문가 어드바이저, 스크립트 및 두 지표를 컴파일합니다.

패널 로드하기

패널을 로드하는 방법은 간단합니다. 원하는 심볼과 차트주기에 "iControl 패널 MCM.mq5" 인디케이터를 실행하면 됩니다. 그게 다입니다. 그런 다음 패널을 가지고 놀 수 있습니다. "제어판 MCM"과 호환되는 전문가 자문 및 보조지표를 차트에 첨부할 수 있습니다.

저에게는 전문가 조언자에서 패널을 로드하는 것이 더 실용적입니다. "exControl panel MCM" Expert Advisor를 실행하고

iControl 패널 MCM 사용 예시

예를 들어, 저는 다중 통화 모드 제어판과 함께 사용하도록 특별히 설계된 멀티트렌드 다중 통화 표시기를 첨부했습니다. 이 표시기는 4개 통화의 움직임 분석을 기반으로 달러의 움직임(분홍색 선)을 보여줍니다.

전문가 어드바이저의 코드는 아래와 같습니다:

//+------------------------------------------------------------------+ 
//|멀티트렌드.mq5 | 
//|저작권 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> //<--- 제어판 MCM 플러그인 파일 
//+------------------------------------------------------------------+ 
//| 전문가 초기화 기능| 
//+------------------------------------------------------------------+ 
int OnInit()
  {    //--- 제어판 MCA 초기화 중입니다. 
//--- 색상 매개변수를 지정할 필요는 없습니다(기본 메뉴 색상이 설정됨). 
   InitControlPanelMCM(bg_color,font_color,select_color,font_size);
//--- 
  return(0);   
  } 
//+------------------------------------------------------------------+ 
//| 전문가 초기화 기능| 
//+------------------------------------------------------------------+ 
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; - 패널 에이전트로부터 수신한 이벤트의 플래그. 플래그는 제어판 MCM.mqh 파일의 시작 부분에서 찾을 수 있는 열거형 ENUM_CHART_EVENT_SYMBOL에 해당하며, 설명은 텍스트 아래에 조금 더 자세히 나와 있습니다.
  • dparam - 틱 가격 또는 특정 기간에 새 바를 여는 가격입니다.
  • sparam - 이벤트가 발생한 트레이딩 상품의 이름


제공된 이벤트 목록 제어판 MCM

제어판은 설정에 따라 심볼당 최대 64개의 다양한 사용자 지정 이벤트를 제공할 수 있습니다. 이 버전의 제어판 MCM에서 전송할 수 있는 이벤트는 다음과 같습니다:

  • 초기화 이벤트(초기화);
  • "새 틱" 이벤트;
  • 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() 함수에서 반환되는 이벤트에 대한 설명은 괄호 안에 제공됩니다. 함수 자체는 제어판 MCM.mqh 파일 시작 부분의 ENUM_CHART_EVENT_SYMBOL 열거 다음에 있는 열거형에서도 찾을 수 있습니다.

"초기화" 이벤트는 이벤트가 발생한 심볼에서 인디케이터의 입력 매개변수 prev_calculated가 0이 되는 순간에 해당합니다. 따라서 다중 통화 지표 또는 전문가 조언자에서 적절한 조치를 취해야 합니다. 예를 들어 이 심볼로 지표를 다시 계산합니다.


이벤트 설정

제어판 에이전트로부터 수신할 이벤트 설정은 "이벤트" 메뉴 버튼을 통해 할 수 있습니다. 버튼을 누르면 현재 "종합시세" 창에서 선택된 모든 심볼 목록이 나타납니다. 기호별로 이벤트를 켜려면 마우스로 두 번 클릭해야 합니다. 행동의 완전한 즐거움을 느끼려면 천천히하는 것이 좋습니다.

이미 기호로 이벤트를 활성화한 경우(이 기호는 밝은 색상으로 강조 표시됨) 한 번 클릭하는 것으로 충분합니다. 이벤트 목록이 나타납니다. 하나 이상의 이벤트를 선택할 수 있으며, 모든 이벤트가 다중 통화로 수신됩니다. 변경 사항을 적용하려면 "이벤트 활성화/비활성화" 버튼을 눌러야 합니다. 필요한 모든 기호에 대해서도 마찬가지입니다.

iControl 패널 MCM 패널 이벤트 선택하기

다음은 데모 전문가 어드바이저가 패널과 함께 작업한 결과입니다:

iControl 패널 MCM 표시기 작동 예시

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

YURAZ_CreateCSV_HistoryFile_From_MT5_For_MT4 YURAZ_CreateCSV_HistoryFile_From_MT5_For_MT4

이 스크립트는 메타트레이더 4에서 메타트레이더 5 데이터베이스에 구멍이 없는 전체 이력을 가져오는 데 도움이 됩니다.

차트 리니트 차트 리니트

모든 지표를 다시 계산하여 차트를 버튼으로 초기화할 수 있으며, 하나의 전문가 어드바이저에서 모든 차트를 처리하는 간단하고 투명한 객체 지향 예시도 제공합니다.

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

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

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

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