English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
새 MetaTrader 와 MQL5를 소개해드립니다

새 MetaTrader 와 MQL5를 소개해드립니다

MetaTrader 5 |
343 4
Yuriy Zaytsev
Yuriy Zaytsev

몇가지 사항에 대해 간략한 설명을 드리겠습니다


1번 그림. 포토샵이 아닙니다 - MQL5입니다.

저와 주변 사람들이 MQL5와 MT5에 기대했던 것들이 거의 다 높은 수준으로 적용되어 있습니다.

MQL5의 근본적인 변화는 객체지향 프로그래밍의 대두입니다. 객체지향 프로그래밍에 대해 깊게 들어가진 않겠습니다 - 숙련된 프로그래머들이 더 많은 가능성을 품게된다는 것일 뿐입니다. MQL4를 좋아했고 객체지향 프로그래밍에 대해서는 알지 못하는 사람들을 위해서 개발자들은 MQL5을 객체지향 없이 MQL4식으로 쓰는 길 또한열어놨죠. 기능성에는 변화가 있기 때문에 다시 들여다 볼 필요가 있습니다.

간단한 예시 하나 들까요: Bid와 Ask 변수는 더 이상 존재하지 않습니다. Bid 값을 받아오려면 아래의 함수가 호출되어야합니다:

SymbolInfoDouble(Symbol(),SYMBOL_BID);

이제 Low[0] or iLow ( Symbol(), PERIOD_D1, 0 ) 는 없습니다만, 쉽게 재생성 할 수 있습니다. 히스토리 데이터를 다루는 신규 함수들은 한 시점에서 다른 시점까지, 특정 바에서 다른 선택 시간까지의 바까지 등 다양한 가능성을 열어줍니다. 예전엔 데이터 시리즈를 읽으면 확인가능한 전체 영역이 메모리에 마운트되었습니다y. 실제로 필요한가의 여부는 중요치 않고, 그냥 마운트되었습니다; 만약 M1을 읽어야했을 경우에도 1999년부터 (만약 확인가능한 히스토리가 있을 경우에) 현재 일자 시간까지 읽혔죠.

이제는 필요한 영역만 읽을 수 있는데, 그러면 상당한 양의 시간과 메모리가 절약되게 됩니다.

MqlRates rates_arrayG[];
Int Bar=30; // read only 30 bars stating from the zero one
iCopBar=CopyRates(Symbol(),PERIOD_M1,0,Bar,rates_arrayG);

이 기능은 시간와 메모리 양쪽을 절약시켜줍니다.

그런 기능성 면에서의 변화는 꽤 괜찮죠. 우리에겐 단지 새 함수-아날로그를 배울 시간이 필요할 뿐입니다.

제가 MQL에 기대했던 기능적 혁신 중 일부:

  • OnTimer() - 타이머 이벤트를 처리하기 위한 함수 (이제는 틱에 상관없이 주기적 처리를 하기 위해서 Expert Advisor를 루프돌리지 않아도 됩니다.);
  • OnTrade() - 거래 이벤트를 처리하기 위한 함수 - 거래 포지션 개방 폐쇄 혹은 볼륨 변화;
  • OnChartEvent() - 마우스나 키보드에 의한 프로세싱 이벤트.

약간 들여다 봅시다.

OnTimer() 함수는 Oninit 프레셋 함수 (EA 초기화 이벤트 프로세서)로 선 초기화 되었을 경우 호출됩니다.

예시:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   EventSetTimer(1); //each second we'll refer to OnTimer()
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit()
  {
   EventKillTimer(); // canceling of timer reference must be called at exit
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
   MqlDateTime str1;
   TimeGMT(str1); // new function to get GMT time
   Comment(str1.hour
           ,str1.min
           ,str1.sec
           ,str1.day
           ,str1.mon
           ,str1.year
           ,str1.day_of_year
           ,OrdersTotal()
           ,PositionsTotal()
           );
  }

그런 이유에서 예전처럼 틱이 들어올 때에멘 컨트롤이 활성화되는 것이 아니라 타이머로도 활성화시킬 수 있게 되어 리얼타임 관리가 가능한 프로그램을 쓸 수 있게 해줍니다. 이를 통해 더욱 세련된 프로그램이 만들어질 수 있습니다.

저는 OnTrade() 함수가 좋았습니다. 이 함수는 다음 거래 이벤트가 트리거 되는 순간 호출됩니다: 주문, StopLoss 혹은 TakeProfit 발동, StopLoss 혹은 TakeProfit 레벨 변동, 대기 주문 혹은 그의 취소.

이걸로 거래 처리와 연결된 이벤트를 모니터링하기 훨씬 쉬워졌습니다. 이제는 틱이나 바에서 주문의 상태를 체크하는데에 루프를 쓰지 않아도 됩니다. MQL4에서는 루프를 사용하였지만 이는 프로그램의 퍼포먼스를 현격히 저하시켜 최적화가 몹시 중요했죠.

OnChartEvent() 함수를 들여다봅시다. 이 함수 콜은 여러 이벤트를 위해 사용됩니다. 일일히 체크해본 것은 아니지만, 목록만 봐도 훌륭한 편이라 생각합니다:

  • CHARTEVENT_KEYDOWN — 키 누르는 이벤트;
  • CHARTEVENT_OBJECT_CLICK — 차트 내의 그래픽 오브젝트를 마우스 클릭시 발생하는 이벤트;
  • CHARTEVENT_OBJECT_DRAG — 마우스로 그래픽 오브젝트가 움직여졌을때의 이벤트;
  • CHARTEVENT_OBJECT_ENDEDIT — 텍스트 에딧이 끝나는 이벤트;
  • CHARTEVENT_CUSTOM+n — 커스텀 이벤트 식별자;
  • CHARTEVENT_CUSTOM_LAST — 마지막 아이템.

트레이딩과 그래픽을 새 함수 단계에서 관리할 수 있는 가능성 - 이것이 개발자들이 약속했던 것이었죠.

새 그래픽 오브젝트, 버튼, 엔트리 필드가 나타났습니다. 새 차트 관리는 환상적입니다, 로컬 파일에서 사진도 삽입할 수 있게 되었죠 - 본 옵션을 통해 특별한 디자인을 좋아하는 사람들을 위해 다양한 가능성이 열렸습니다. 이건 포토샵이 아닙니다, MQL5와 MetaTrader5의 가능성의 결과입니다. 새로운 기능 중에는 자신만의 버튼을 만들거나 엔트리 필드를 만드는 것 또한 있포함되어있습니다, 예를 들면, 모든 오픈 주문을 닫는 버튼이라던지, 혹은 빠르게 미리 정해둔 역지정가나 이익실현 패러미터로 매입과 매도를 할 수 있게 해주는 버튼 등 역시 가능합니다..


2번 그림 그래픽 오브젝트로 정보 패널을 만들 수 있습니다.

2번 그림 그래픽 오브젝트로 정보 패널을 만들 수 있습니다

불편한 진실 한가지: 인디케이터로는 오브젝트를 만들 수 없습니다. 이는 인디케이터의 퍼포먼스를 향상시키기 위해서 일부러 이렇게 되었습니다. 좋은 소식은 개발자들도 그걸 인지하고있고, 차트 하나로 여럿 Expert Advisors를 기동시킬 수 있는 기능을 넣어놓았다는 것이죠. 따라서 우리는 거래 없이도 오브젝트로 EA-인디케이터를 만들 수 있게 될 것입니다. EA-인디케이터는 지금도 만들어질 수 있으며 - 인디케이터처럼 운용될 것입니다.. 이제 한 차트에서 거래 EA를 기동시키고 다른 차트에서 오브젝트 생성용 EA를 기동시켜 양쪽 간에 데이터를 주고 받는 것으로 태스크를 완료합니다.

예를 들어, 저는 수시간만에 MQL4에서 MQL5로 넘어가는 브레이크스루 인디케이터를 변형시켰습니다. 그리고 그 대부분의 시간은 함수를 배우고 디버깅하는데에 쓰였죠. MQL5에서 코드는 더 짧아졌습니다.

터미널에선 타임프레임의 수가 인상깊더군요. 제 솔직한 의견으로는 오히려 넘치는거 아닌가싶기도 하더군요. 하지만 어떤 트레이더들에게는 이런 식으로 타임프레임이 충분한 편이 더 편하실지도 모르겠습니다. 이제 자유 설정 타임프레임을 만드는데엔 딱 한가지 방법이 있군요. 이제 모든 데이터는 1분 타임프레임으로만 저장됩니다, 그래서 각 타임프레임 간에 동기화시키는 문제가 사라졌습니다 - 상당히 의미있는 기술적 솔루션이라고 볼 수 있죠.

이제 HISTORY 카탈로그에는 파일이나 다른 타임프레임이 없습니다



3번 그림 The whole history is stored in a single file.

또 하나의 기쁜 소식은 이제 로그를 삭제할 수 있다는 것입니다.


4번 그림 버튼 하나로 EA 저널을 지우고, 불필요한 모든 메세지를 삭제하세요

본 문서는 MetaTrader5의 간략 리뷰입니다. 짧은 시간안에 시스템의 새 기능을 모두 다루기엔 어려움이 있습니다 - 테스트는 2009.09.09에 시작되었습니다. 이는 상징적인 일자로, 전 이것이 행운의 숫자가 될거라 믿어 의심치않습니다. 제가 새 MetaTrader 5 터미널과 MQL5 베타버전을 받은지 며칠이 지났습니다. 아직 모든 기능을 사용해본 것은 아니지만, 벌써부터 감명깊네요.

MetaQuotes의 마술사들이 또 엄청난 물건을 만들어냈습니다. 저는 25년 경력의 개발자로, 많은 프로젝트의 시작을 보아왔기에 이건 확신을 가지고 말할 수가 있겠습니다!

감사합니다,
유리 자이체프

스카이프: yurazyuraz
yzh@mail.ru

MetaQuotes 소프트웨어 사를 통해 러시아어가 번역됨.
원본 기고글: https://www.mql5.com/ru/articles/1

최근 코멘트 | 토론으로 가기 (4)
Kenneth L. Bixler
Kenneth L. Bixler | 27 8월 2013 에서 23:12
정말 많은 도움이 되었습니다.
Rogerio Figurelli
Rogerio Figurelli | 19 12월 2013 에서 01:03

서퍼를 위한 경고: 제목만 보면 새로운 MT5가 막 출시된 것처럼 보이지만, 영어로 된 원본 기사의 날짜는 2009년 12월 17일입니다.

따라서 이 내용은 MT5가 실제로 출시되기 전인 당시 가장 발전된 내용을 보여주고 있으며, 실제로 오늘날에는 당시보다 훨씬 더 발전했습니다.

포르투갈어로 된 더 최근 자료(2012년 6월 원본)는 https://www.mql5.com/pt/articles/384 (MetaTrader 5 - 생각보다 더 많은 기능!)에서 확인할 수 있습니다.

[삭제] | 23 12월 2013 에서 12:08
이제 HTML 코드에 첨부된 소스 코드 삽입물이 사용자의 편의를 위해 포르투갈어로 완전히 번역됩니다.
Rahul Dhangar
Rahul Dhangar | 12 12월 2020 에서 20:44
멋진 글입니다! 이 글을 작성하는 데 시간과 노력을 기울여 주셔서 감사합니다.
새로운 기능: MQL5의 커스텀 인디케이터 새로운 기능: MQL5의 커스텀 인디케이터
MetaTrader5와 MQL5의 새로운 기능 전체를 나열하지는 않겠습니다. 종류도 많은 데다가, 별도의 설명이 필요한 기능들도 있거든요. 객체 지향 프로그래밍을 이용한 코드 작성법 또한 다음에 알아보도록 하겠습니다. 다른 기능들과 함께 설명하기에는 조금 어려운 이야기일 수 있으니까요. 이 글에서는 인디케이터와 인디케이터의 구조, 드로잉 타입과 프로그래밍 디테일을 MQL4와 비교해 볼게요. 초보자 분들께 많은 도움이 되면 좋겠고 기존에 사용하시던 개발자 분들도 뭔가 새로운 걸 얻어 가실 수 있길 바랍니다.
MQL5에서 더욱 쉬워진 그래픽 패널 제작 MQL5에서 더욱 쉬워진 그래픽 패널 제작
이 글에서는 트레이딩에서 가장 가치 있고 유용한 도구 중 하나인 그래픽 패널을 사용하여 트레이딩 관련 작업을 단순화하고 쉽게 수행하여 시간을 절약하고 트레이딩 프로세스 자체에 더 집중할 수 있도록 도와주는 간단하고 쉬운 가이드를 제공합니다.
MQL5: 나만의 인디케이터를 만들기 MQL5: 나만의 인디케이터를 만들기
인디케이터란 무엇인가? 이는 우리가 간편하게 스크린에 표시하고싶은 계산값들의 집합을 일컫는 것 입니다. 값의 집합은 프로그램에서는 어레이로 표현되어있습니다. 따라서, 인디케이터의 생성이란 몇몇 어레이 (가격 어레이) 와 다른 어레이 (인디케이터 값) 를 다루는 알고리즘을 짜는 것을 말하는 것입니다.. 실제강도지수 인덱스의 생성을 설명하는 것으로, 저자는 MQL5에서 인디케이터를 쓰는 법에 대해서 안내합니다.
측정 지표 정보 측정 지표 정보
머신러닝은 전략 개발을 위한 인기 있는 방법이 되었습니다. 수익성과 예측 정확도를 극대화하는 데는 더 많은 관심이 집중되었지만 예측 모델을 구축하는 데 사용되는 데이터 처리의 중요성은 그다지 주목을 받지 못했습니다. 이 글에서는 티모시 마스터스의 책 '시장 트레이딩 시스템 테스트 및 조정'에 설명된 대로 엔트로피 개념을 사용해 예측 모델 구축에 사용할 지표의 적절성을 평가하는 방법을 살펴봅니다.