Momentum 기반의 트레이딩 시스템을 설계하는 방법 알아보기

Mohamed Abdelmaaboud | 30 6월, 2022

소개

저는 이전 글에서 추세를 파악하는 것의 중요성에 대해 언급했습니다. 추세란 곧 가격의 방향이라는 점에서 말입니다. 이러한 움직임의 방향이나 추세에 따라 적절한 결정을 내리는 것은 중요한 일입니다. 따라서 시장의 방향을 식별하면 매매의 타이밍을 결정하고 결과를 향상시키는 데 도움이 될 것이라고 말할 수 있는 것입니다. 그렇기 때문에 추세를 파악하고 분석하는 것이 매우 중요합니다. 

우리의 결정을 향상시킬 수 있는 또 다른 요소는 추세가 강한지 약한지 즉 현재 추세가 계속될지 여부를 결정할 수 있는 능력입니다. 이를 수행할 수 있는 다양한 도구가 있습니다. 이 기사에서 우리는 추세에 대해 더 많이 이해하는 데 도움이 되는 가장 중요한 도구 중 하나인 모멘텀에 초점을 맞출 것입니다. 왜냐하면 모멘텀은 가격 또는 추세의 속도를 측정하기 때문입니다.

이 기사에서 우리는 모멘텀을 유리하게 사용하는 방법을 심층적으로 알아보고 이 지표를 쉽고 효과적으로 거래할 수 있게끔 만들어 주는 프로그래밍의 이점을 얻기 위해 MQL5에서 간단한 트레이딩 시스템을 설계할 것입니다. 이 기사에서는 다음과 같은 주제에 대해 논의할 것입니다.

첫 번째 주제인 "모멘텀의 정의"에서는 모멘텀 지표에 대해 자세히 알아볼 것입니다. 모멘텀 지표가 무엇이고 어떻게 계산되는지 알아보겠습니다. 그런 다음 모멘텀 지표에 대한 이해와 그것이 우리에게 어떻게 유용할 수 있는지에 대한 이해를 높일 수 있는 간단한 전략을 배우게 됩니다. 그런 다음 MQL5에서 코딩하는 데 도움이 되도록 모멘텀 거래 전략과 관련한 트레이딩 시스템의 초기 버전을 설계합니다. 이후 이 전략의 신호를 얻기 위해 코드를 작성하고 실행하는 방법을 배웁니다. 

이 기사에서는 MetaTrader 5를 사용하여 트레이딩 시스템 프로그램을 실행하고 MetaTrader 5에 내장된 MetaQuotes 언어 편집기를 사용하여 코드를 작성합니다. 다음 링크에서 MetaTrader 5를 다운로드할 수 있습니다.https://www.metatrader5.com/en/download

MetaTrader 5를 다운로드하고 설치한 후 열게 되면 다음과 같은 창이 나옵니다.

MT5 플랫폼

이제 MetaQuotes 언어 편집기를 열어서 코드를 작성합니다. 이것은 여러 가지 방법으로 수행할 수 있습니다.

가장 쉬운 방법은 MetaTrader 5를 연 다음 키보드에서 F4 버튼을 누르는 것입니다. 그러면 MetaQuotes 언어 편집기가 열립니다.

MetaQuotes 언어 편집기를 여는 두 번째 방법은 도구 메뉴를 사용하는 것입니다.

메타에디터 오프닝 1

세 번째 방법은 MetaTrader 5에서 IDE 버튼을 클릭하는 것입니다.

메타에디터 오프닝 2

다음과 같은 창이 열립니다.

메타에디터 창

이에 대해 더 알고 싶다면 제가 쓴 이전 기사에서 찾아 볼 수 있습니다.  알고리즘 거래 시스템을 설계하는 이유와 방법 알아보기

또한 읽고 배운 내용을 적용해 보는 것이 좋습니다. 그러면 이해가 깊어지고 관련된 주제에 대해 더 많은 통찰력과 새로운 아이디어를 얻을 수 있기 때문입니다. 이 기사의 주요 목적은 이 훌륭한 도구인 MQL5가 트레이딩에 어떻게 도움이 되는지에 대해 제가 배운 것들을 공유하는 것입니다.

여기서 다루는 내용은 저에게는 적합할 수 있지만 귀하의 거래 스타일에 따라 그렇지 않을 수도 있으므로 사용하기 전에 먼저 배운 모든 것을 테스트해야 합니다. 따라서 데모 계정을 사용하여 모든 것을 테스트하여 유용한지 여부를 조사하는 것이 매우 중요합니다. 

면책: 이 기사의 내용은 다른 어떤 목적도 아닌 교육의 목적으로만 만들어졌습니다. 따라서 이 글의 내용이 어떠한 결과도 보장하지 않으므로 이 글의 내용에 근거하여 취하는 모든 행동에 대한 책임은 귀하에게 있습니다.

이제 우리의 지식에 새로운 블록을 더하기 위해 이 주제에 대해 알아보기 시작합시다.


모멘텀 정의

이 부분에서 우리는 모멘텀이 무엇인지 그것이 의미하는 바와 우리의 거래에 어떻게 유용할 수 있는지와 이 지표를 어떻게 계산할 수 있는지에 대해 알아볼 것입니다. 이를 통해 이 지표가 얼마나 유용할 수 있고 어떻게 사용될 수 있는지에 대해 이해하는 데 도움이 될 것입니다. 우리가 무언가의 핵심을 이해했을 때 그것을 효과적으로 다룰 수 있는 법입니다.

모멘텀의 기본 개념은 무언가의 속도를 측정하는 것입니다. 여기에서는 가격의 변화 속도를 측정합니다. 따라서 현재 가격을 이전 값과 비교하여 이 두 값 사이의 변화의 속도를 측정합니다. 이것이 모멘텀 지표가 하는 일입니다. 모멘텀 지표는 가격 변화의 속도 또는 추세의 가속을 측정합니다.

우리는 트렌드의 유형이나 시장의 방향을 결정하는 것이 매우 중요하다는 것을 이미 알고 있습니다. 따라서 우리는 추세를 판단할 필요가 있습니다. 상승 추세인지 하락 추세인지 아니면 횡보인지를 판단해야 합니다.

자세한 내용은 이전의 기사 RSI에서 거래 시스템을 설계하는 방법 알아보기를 참조하십시오.  

모멘텀의 개념은 트렌드가 움직임이는 힘을 보여주는 또 다른 도구이기 때문에 매우 중요합니다. 따라서 이제 우리는 추세의 방향을 결정하거나 모멘텀을 분석하여 추세의 강도를 측정할 수 있습니다.

모멘텀 지표는 가격에 앞서기 때문에 선행 지표입니다. 즉 가격의 변화가 나타나기 전에 변화됩니다.

모멘텀 지표는 계산상 극값이 없는 지표이며 이것이 단점 중 하나로 간주됩니다. 또 다른 단점은 계산할 날짜 사이에 데이터를 놓친다는 것입니다.

모멘텀을 계산하는 두 가지 방법이 있습니다.

이 두 가지 방법은 선호하는 기간에 따라 현재 가격과 이전 가격을 사용하며 기본값은 14입니다. 따라서 몇 가지 예와 함께 이 두가지 계산에 사용되는 수식을 살펴보겠습니다.

계산은 매우 간단합니다 -- 이전 기간과 비교한 현재 기간의 종가 간의 차이를 찾습니다.

모멘텀 = 현재 종가 - (n)의 종가

n = 14, 이는 기간이며 14가 기본값입니다.

모멘텀 지표를 계산한 후 계산 결과 0 위아래로 진동하는 선이 생성됩니다.

지표 계산의 예를 살펴보겠습니다: 다음과 같은 데이터가 있다고 가정합니다.

데이 종가
1
10
2 12
3 15
4 17
5 19
6 20
7 18
8 16
9 20
10 22
11 24
12 20
13 18
14 17
15 15

이제 15일째의 모멘텀을 계산하려면 다음과 같습니다.

모멘텀 = 현재 종가 - (n)의 종가

n = 14(1일째)

모멘텀 = 15 - 10 = 5

그런 다음 모멘텀 지표가 0 위와 아래에서 진동함에 따라 0 위와 옆의 5의 차이를 표시합니다. 이 계산에서 우리는 앞에서 언급한 것처럼 단점을 볼 수 있습니다: 현재로부터 14주기를 빼었으므로 계산된 데이터 사이에 누락된 데이터가 있습니다. 또 다른 단점은 지표가 극점이 없다는 점입니다. 즉 상승 또는 하락에 대한 제한이 없습니다. 

모멘텀 지표를 계산하는 다른 방법은 비율을 사용하는 것입니다. 이 계산은 MetaTrader 5에서 사용됩니다. 다음 단계로 구성됩니다:

모멘텀 = (현재 종가 / (n)의 종가)*100

n = 데이1인 14

이 계산을 이전 예에 적용하면 다음과 같은 모멘텀을 얻습니다.

모멘텀 = (15 / 10)*100 = 150

그러면 값은 100 위에 표시되고 150 옆에 표시됩니다. 모멘텀 지표는 100 위와 아래에서 진동합니다. 이 기사에서는 이 계산 방법을 사용하고 이에 대한 전략을 적용합니다.

지표는 이미 MetaTrader 5에 내장되어 있으므로 선택하기만 하면 차트에 삽입되며 그 방법은 다음과 같습니다.

MetaTrader 5에서 삽입 탭을 클릭하고 지표, 오실레이터, 모멘텀을 차례로 선택하면 다음 그림과 같습니다.

모멘텀 인서트

모멘텀을 선택한 후 모멘텀 지표의 매개변수에 대해 다음과 같은 그림이 나타납니다.

모멘텀 파라미터

이전 창에는 모멘텀 지표의 매개변수가 포함되어 있으며 여기에서 거래 스타일이나 거래 계획에 따라 거래에 적합한 값을 설정할 수 있습니다. 가령 다음과 같이 말입니다:

  1. 현재 가격과 비교할 기간을 선택하려면 여기에서 기본값은 14입니다.
  2. 모멘텀 계산(종가, 시가, 고가, 저가 등)에 사용할 가격 유형을 선택합니다.
  3. 색상, 선 종류 및 선 굵기와 같이 지표의 스타일을 선택합니다.

적절한 매개변수를 선택하고 확인을 누르면 다음 그림과 같이 지표가 나타납니다:

모멘텀차트 모멘텀


모멘텀 전략

이 파트에서는 모멘텀 지표를 사용하는 간단한 전략을 알아 봅니다. 모멘텀을 사용하는 전략과 방법은 많이 있지만 교육을 위해 간단한 전략으로 예를 삼았습니다. 우리의 목적은 사용법을 배우고 학습 이후에 떠오를 수 있는 새로운 아이디어에 대한 문을 여는 것이기 때문입니다. 궁극적인 목적은 MQL5를 사용하여 이러한 아이디어를 트레이딩 시스템으로 설계하는 방법을 배우는 것입니다.

우리는 전략을 통해 모멘텀 라인과 100 레벨 사이의 교차점을 찾을 것입니다. 모멘텀선이 100선을 돌파하면 매수 신호가 됩니다. 모멘텀선이 100을 하향 돌파하면 매도 신호가 됩니다.

이 신호는 추세의 방향을 기반으로 생성되며 생성된 신호에 대한 필터링도 생성하게 됩니다. 모멘텀 지표는 생성된 신호를 필터링하는 데 사용할 수 있는 초기의 신호와 웹소스를 제공합니다.

따라서 아래와 같을 것입니다.

상승세 중:

다음 그림은 모멘텀 크로스오버에 의해 상승세 동안 생성된 신호의 예를 보여줍니다.

상승 전략

하락세 동안:

다음 그림은 모멘텀 지표가 100 레벨을 교차할 때 하락세 동안 생성될 수 있는 신호의 예를 나타냅니다.

하락추세 전략

모멘텀 트레이딩 시스템 초기 버전

이 부분에서 나는 모멘텀 전략을 트레이딩 시스템으로 설계하기 위한 초기의 버전을 제시할 것입니다. 따라서 이 단계는 컴퓨터에서 실행할 수 있는 프로그램을 수신하는 것을 목표로 코딩을 어떻게 해야 할 지를 계획하는 것을 알아 보는 단계입니다.

모멘텀 상승 추세 초기 버전

모멘텀 하락 추세 초기 버전

위의 초기 버전을 사용하고 MQL5를 사용하여 전략을 프로그래밍하여 자동으로 신호를 주는 프로그램을 만들면 우리는 Momentum 신호를 수동으로 확인할 필요가 없게 됩니다. 이것은 기사의 다음 부분에서 구현할 것입니다.


모멘텀 트레이딩 시스템

먼저 모멘텀 지표를 코딩하는 방법에 대한 더 깊은 이해를 위해 모멘텀 값으로 차트에 주석을 생성하는 간단한 모멘텀 시스템을 설계하는 방법을 배웁니다. 이것은 다음의 코드에서 구현됩니다.

//+------------------------------------------------------------------+
//|                                       Simple Momentum System.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //Creating array for prices
   double PriceArray [];
   
   //Identifying Momentum properties
   int MomentumDef = iMomentum(_Symbol,_Period,14,PRICE_CLOSE);
   
   //Sorting price array
   ArraySetAsSeries(PriceArray,true);
   
   //Copying results
   CopyBuffer(MomentumDef,0,0,3,PriceArray);
   
   //Getting Momentum value of current price
   double MomentumValue = NormalizeDouble(PriceArray[0],2);
   
   //Commenting Momentum output on the chart
   if(MomentumValue>100) Comment("MOMENTUM VALUE IS: ",MomentumValue);
   
  }
//+------------------------------------------------------------------+

이 프로그램을 작성한 후 MetaTrader 5 트레이딩 플랫폼에서 실행해야 합니다. 이렇게 하려면 MetaTrader 5 트레이딩 터미널로 이동한 다음 내비게이터에서 원하는 파일을 선택합니다. 내비게이터 창은 보통 터미널에서 엽니다. 그렇지 않은 경우 보기 메뉴로 이동하여 내비게이터를 선택하거나 MetaTrader 5가 열려 있는 동안 Ctrl + N을 누릅니다.

다음 그림은 내비게이터에서 파일을 찾는 방법입니다.

모멘텀 인디케이터 네비게이터

그런 다음 이 파일을 더블 클릭하거나 차트에 끌어다 놓아 엽니다. 그 후 다음과 같은 창이 열립니다.

단순 모멘텀 창

"시스템 트레이딩 허용" 옵션을 활성화하고 확인을 누릅니다. 프로그램이 차트에 첨부되고 해당 설명이 차트에 표시됩니다. 다음은 실행 중인 프로그램의 예입니다.

단순 모멘텀 첨부

이제 상승 추세와 하락 추세라는 두 가지 유형의 추세로 전략을 설계해야 합니다. 따라서 다음과 같이 정의합니다:

상승세 중:

이것은 다음의 코드에서 구현됩니다.

//+------------------------------------------------------------------+
//|                                    Momentum Uptrend Strategy.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //Creating array for prices
   double PriceArray [];
   
   //Identifying Momentum properties
   int MomentumDef = iMomentum(_Symbol,_Period,14,PRICE_CLOSE);
   
   //Sorting price array
   ArraySetAsSeries(PriceArray,true);
   
   //Copying results
   CopyBuffer(MomentumDef,0,0,3,PriceArray);
   
   //Getting Momentum value of current price
   double MomentumValue = NormalizeDouble(PriceArray[0],2);
   
   //Commenting Momentum output on the chart
   if(MomentumValue>100) Comment("MOMENTUM UPTREND STRATEGY - BUY");
   if(MomentumValue<100) Comment("MOMENTUM UPTREND STRATEGY - No SIGNAL");
  }
//+------------------------------------------------------------------+

이 코드를 작성한 후 거래 터미널에서 실행하십시오. 이전 프로그램에서 본 거과 같이 차트에 신호를 생성합니다. 내비게이터 창으로 이동하여 다음 그림과 같이 프로그램을 찾습니다.

모멘텀 인디케이터 navigator1

그런 다음 파일을 더블 클릭하거나 차트에 끌어다 놓아 파일을 엽니다. 그러면 다음과 같은 매개변수 창이 열립니다.

모멘텀 상승 추세 전략 창 

시스템 트레이딩 허용 옵션을 활성화하고 확인을 클릭합니다. 파일은 다음과 같이 차트에 첨부됩니다.

모멘텀 상승세 전략 첨부

프로그램은 이 전략에 따라 차트에 신호가 무엇인지 알려주는 표기를 차트에 나타내 주기 시작합니다.

모멘텀 상승 추세 전략 - 매수

모멘텀 상승 추세 전략 - 신호 없음

하락세 동안:

다음 코드는 이를 수행하도록 프로그램을 설계하는 방법을 보여줍니다:

//+------------------------------------------------------------------+
//|                                  Momentum Downtrend Strategy.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void OnTick()
  {
   //Creating array for prices
   double PriceArray [];
   
   //Identifying Momentum properties
   int MomentumDef = iMomentum(_Symbol,_Period,14,PRICE_CLOSE);
   
   //Sorting price array
   ArraySetAsSeries(PriceArray,true);
   
   //Copying results
   CopyBuffer(MomentumDef,0,0,3,PriceArray);
   
   //Getting Momentum value of current price
   double MomentumValue = NormalizeDouble(PriceArray[0],2);
   
   //Commenting Momentum output on the chart
   if(MomentumValue<100) Comment("MOMENTUM DOWNTREND STRATEGY - SHORT");
   if(MomentumValue>100) Comment("MOMENTUM DOWNTREND STRATEGY - No SIGNAL");
  }
//+------------------------------------------------------------------+

MetaQuotes Language Editor에서 코드를 작성하고 컴파일한 후 차트에서 작성한 프로그램의 파일을 다시 실행합니다. 다음 그림과 같이 네비게이터 창의 Expert Advisors 폴더에서 찾으십시오.

2 모멘텀 인디케이터 내비게이터2

그런 다음 파일을 두 번 클릭하거나 차트로 끌어다 놓습니다. 그러면 프로그램 매개변수가 있는 다음과 같은 창이 열립니다.

모멘텀 하락 추세 전략 창

다시 "시스템 트레이딩 허용"을 활성화한 다음 OK를 누릅니다. 프로그램은 차트에 첨부되며 다음 그림과 같이 작동합니다.

모멘텀 하락 추세 전략 첨부

이 전략에 따라 생성된 신호는 다음과 같습니다.

모멘텀 하락 추세 전략 - 매도

모멘텀 하락 추세 전략 - 신호 없음

이렇게 간단한 트레이딩 전략을 활용하여 모멘텀 지표를 사용하는 트레이딩 시스템을 설계했습니다. 기사에서 언급했지만 모멘텀 지표로 사용할 수 있는 많은 전략이 있지만 간단한 것을 사용하고 공유하려고 했습니다. 이렇게 하면 지표의 개념을 이해하고 초보자가 프로그래밍하는 데 도움이 될 것입니다. 이 주제가 MQL5를 사용하여 거래를 개선하는 방법에 대한 새로운 통찰력과 새로운 아이디어를 찾는 데 도움이 되기를 바랍니다.


결론

이제 주제를 마쳤습니다. 이 기사에서 우리는 모멘텀의 개념에 대해 배웠고 이 개념이 우리의 거래에 중요한 이유와 그것이 우리의 거래에 유용하게 쓰이는 방법을 알아 보았습니다. 또한 모멘텀 지표가 측정하는 것과 계산 방법에 대해서도 살펴보았습니다. 그런 다음 여러가지 시장의 방향이나 추세에서 모멘텀 지표를 사용할 수 있는 간단한 전략을 배웠습니다. 그런 다음 MQL5에서 거래 시스템을 설계하는 방법과 이 전략의 코드를 작성하는 방법 그리고 프로그램이 자동으로 신호를 생성할 수 있는 거래 터미널 - MetaTrader 5 - 에서 실행하는 방법도 배웠습니다. 이것은 궁극적으로 우리가 원활하고 쉽고 효과적으로 거래하는 데 도움이 될 수 있을 것입니다.

학습한 내용을 사용하기 전에 귀하의 거래 스타일과 계획에 적합한지 확인하기 위해 테스트하는 것이 얼마나 중요한지를 설명할 단어를 찾을 수 없습니다. 배운 것을 활용하면서 새로운 아이디어에 마음을 열고 관련되거나 관련되지 않은 여러가지들에 관한 더 많은 통찰력을 찾도록 해야 합니다.

제가 여기서 언급하고 싶은 또 다른 것은 사용할 수 있는 수익을 가져다 주는 많은 전략이 있지만 누군가는 이 전략을 사용하여 수익을 얻을 수 있는 반면 다른 사람은 동일한 전략을 사용하여 손실을 볼 수도 있다는 점입니다. 전략에 관한 것뿐만이 아닙니다. 물론 전략도 중요하지만 원하는 결과를 가져다 주는데 도움이 되는 더 많은 요소가 있습니다. 이 중 가장 중요한 것은 규율이며 이를 달성하는 데 유용하고 효과적인 도구가 있습니다. 이 도구는 프로그래밍입니다. 프로그래밍은 컴퓨터가 당신의 전략을 이해하고 우리 모두가 인간으로서 경험하는 감정이 끼어들지 않고 여러분이 원하는 것을 할 것이기 때문에 이것은 게임 체인저입니다. 

이 기사가 귀하의 거래에 유용하기를 바라며 모든 분들이 거래에서 수익을 얻기를 바랍니다!