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

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

MetaTrader 5 | 1 7월 2021, 10:31
201 0
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

새로운 기능: MQL5의 커스텀 인디케이터 새로운 기능: MQL5의 커스텀 인디케이터
MetaTrader5와 MQL5의 새로운 기능 전체를 나열하지는 않겠습니다. 종류도 많은 데다가, 별도의 설명이 필요한 기능들도 있거든요. 객체 지향 프로그래밍을 이용한 코드 작성법 또한 다음에 알아보도록 하겠습니다. 다른 기능들과 함께 설명하기에는 조금 어려운 이야기일 수 있으니까요. 이 글에서는 인디케이터와 인디케이터의 구조, 드로잉 타입과 프로그래밍 디테일을 MQL4와 비교해 볼게요. 초보자 분들께 많은 도움이 되면 좋겠고 기존에 사용하시던 개발자 분들도 뭔가 새로운 걸 얻어 가실 수 있길 바랍니다.
시장과 시장이 보여 주는 글로벌 패턴의 물리학 시장과 시장이 보여 주는 글로벌 패턴의 물리학
이 글에서는 시장에 대한 이해가 조금이라도 있는 시스템이라면 글로벌 규모로 운영 가능하다는 가정을 테스트해 보려고 합니다. 저는 어떤 이론이나 패턴을 발명하지 않을 것이고 알려진 사실만을 사용하며 이러한 사실을 점차 수학적인 분석 언어로 번역할 것입니다.
MQL5: 나만의 인디케이터를 만들기 MQL5: 나만의 인디케이터를 만들기
인디케이터란 무엇인가? 이는 우리가 간편하게 스크린에 표시하고싶은 계산값들의 집합을 일컫는 것 입니다. 값의 집합은 프로그램에서는 어레이로 표현되어있습니다. 따라서, 인디케이터의 생성이란 몇몇 어레이 (가격 어레이) 와 다른 어레이 (인디케이터 값) 를 다루는 알고리즘을 짜는 것을 말하는 것입니다.. 실제강도지수 인덱스의 생성을 설명하는 것으로, 저자는 MQL5에서 인디케이터를 쓰는 법에 대해서 안내합니다.
조합론과 트레이딩 확률(4부): 베르누이 논리 조합론과 트레이딩 확률(4부): 베르누이 논리
이 글에서는 잘 알려진 베르누이 기법을 알아보고 이를 트레이딩과 관련한 데이터 배열을 설명하는 데 어떻게 사용할 수 있는지 보여드리겠습니다. 그런 다음 이 모든 것이 스스로 적응하는 트레이딩 시스템을 만드는 데에 사용될 것입니다. 우리는 또한 베르누이 공식의 특별한 경우인 보다 일반적인 알고리즘을 찾아보고 관련된 응용 프로그램을 찾아볼 것입니다.