English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
preview
ADX 기반의 트레이딩 시스템을 설계하는 방법 알아보기

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

MetaTrader 5트레이딩 | 2 9월 2022, 09:53
320 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

소개

이 기사에서는 거래에서 사용되는 새로운 개념에 대해 알아볼 것입니다. 이 개념을 측정하는 방법과 사용하는 방법을 다룰 것입니다. 그것은 변동성입니다. 변동성을 측정하기 위해 많은 도구를 사용할 수 있습니다. 이러한 도구들 중에서 가장 널리 사용되는 하나가 ATR(Average True Range) 기술 지표입니다. 변동성이 어떻게 진행되고 있는지 알게 되면 이는 거래의 결정을 내리는 중요한 요소 또는 기반 중 하나가 될 것입니다. 이 기사에서 보게 될 것과 같이 게임 체인저가 될 수 있습니다.

우리는 이 ATR 지표를 잘 이해하기 위해 많은 주제를 살펴볼 것입니다. 저의 접근 방식은 저의 다른 기사를 보시면 아시겠지만 사물의 근본을 배우고 가르치는 것입니다. 이 기사에서 배울 내용은 다음과 같습니다:

  1. MetaEditor에서 MQL5 코드 작성
  2. ATR 정의
  3. ATR 전략
  4. ATR 전략 청사진
  5. ATR 거래 시스템
  6. 결론

이 글을 통해 ATR 지표를 깊이 이해하고 적절하게 사용하는 방법을 배우기를 바랍니다. ATR(Average True Range) 지표, 측정 대상 및 계산 방법에 대해 알아보겠습니다. 계산 공식을 분석하고 시장에서 사용하는 실제 예에 적용해 볼 것입니다. 이 항목은 "ATR 정의" 부분에서 다룹니다. 이글에서 우리는 ATR 지표의 개념을 바탕으로 사용할 수 있는 간단한 전략에 대해 학습할 것입니다. 저는 우리의 이해를 높이는 데 도움이 될 수 있는 간단한 전략을 공유할 것입니다. 이것은 "ATR 전략" 부분에서 알아볼 것입니다. 우리는 언급된 전략에 대한 청사진을 설계하는 방법을 배울 것입니다. 이것은 프로그램이 어떻게 작동해야 하는지에 대한 아이디어를 시각화 합니다. 그러므로 거래 시스템의 설계 프로세스에서 유용한 단계입니다. 단계별 청사진은 "ATR 전략 청사진" 섹션에서 제공됩니다. 그런 다음 MQL5 프로그래밍 언어를 사용하여 이러한 전략을 기반으로 한 거래 시스템을 설계하기 위한 코드를 작성하는 방법을 배웁니다. 개발된 프로그램은 MetaTrader 5 거래 플랫폼에서 실행됩니다. 이에 대해서는 "ATR 거래 시스템" 부분에서 다룹니다.

MQL5에서 전략 코드를 작성하기 위해 MetaTrader 5 거래 플랫폼 안에 통합된 MetaQuotes Language Editor(MetaEditor 도구)를 사용할 것입니다. 다음 링크에서 MetaTrader 5를 다운로드할 수 있습니다. https://www.metatrader5.com/en/download

MetaTrader 5 거래 플랫폼의 창은 다음과 같습니다.

MT5 플랫폼

이 창에서 MetaTrader 5 터미널이 열려 있는 동안 키보드의 F4 키를 눌러 MetaEditor를 열 수 있습니다. 또 다른 방법은 아래 이미지와 같이 MetaTrader 5 터미널 인터페이스에서 IDE 버튼을 클릭하는 것입니다.

에디터 오픈2

또 다른 방법은 MetaTrader 5 터미널에서 도구 메뉴를 클릭하고 --> 다음 그림과 같이 메뉴에서 MetaQuotes 언어 편집기를 선택하는 것입니다.

1 메타에디터 오픈1 

그러면 MetaQuotes 언어 편집기가 열립니다. 다음 그림은 MetaQuotes 언어 편집기의 인터페이스를 보여줍니다.

메타에디터 인터페이스

연습은 실력을 향상시키는 중요한 요소이기 때문에 이 기사에서 읽은 내용을 직접 적용해 보는 것이 좋습니다.

면책: 모든 정보는 정보 제공의 목적으로만 '있는 그대로' 제공되며 거래의 목적이나 조언을 위해 준비된 것이 아닙니다. 여기의 정보는 어떤 종류의 결과도 보장하지 않습니다. 귀하의 거래 계정에서 이들 자료를 사용하기로 한 경우 귀하는 이에 대한 위험을 감수해야 하며 이에 대한 책임은 귀하에게만 있습니다.

이제 여러분의 트레이딩 스킬을 향상하여 좋은 거래 결과를 가져오는 데 도움이 될 수 있는 새로운 도구를 배울 준비가 되었습니다. 이제 그 여행을 시작합시다.


ATR 정의

이 주제에서는 ATR(Average True Range) 에 대해 알아볼 것입니다: 측정 대상 및 계산 방법을 자세히 설명하고 이 를 사용하여 이익을 얻을 수 있는 방법에 대한 더 많은 통찰력을 얻기 위해 이해를 심화하기 위한 몇 가지 예를 제공합니다.

ATR(Average True Range) 기술 지표는 Welles Wilder가 개발했습니다. 이 지표는 특정 기간의 가격 범위를 분석하여 시장의 변동성을 측정합니다. ATR은 가격이나 시장 방향을 제공하지 않고 변동성의 측정만을 제공합니다.

시장 변동성을 측정하는 ATR 지표를 계산하는 방법은 다음과 같습니다.

먼저 다음 중 가장 큰 값이 될 실제 범위를 계산해야 합니다:

  • 현재 고가와 저가 간의 차이.
  • 현재 고가와 이전 종가 간의 차이(절대값).
  • 현재 저가와 이전 종가 간의 차이(절대값).

따라서 이 단계에서 이를 계산하려면 최고가, 최저가 및 종가의 데이터가 필요합니다. 그런 다음 평균 실제 범위(ATR)를 계산합니다.

이제 실제 시장에서 배운 내용을 적용하고 평균 실제 범위(ATR)를 계산하는 예를 살펴보겠습니다. 다음은 EURUSD 데이터입니다:

날짜 고가 저가 종가
2022년 3월 17일 1.1138 1.1008 1.1089
2022년 3월 18일 1.112 1.1003 1.1055
2022년 3월 21일 1.107 1.101 1.1014
2022년 3월 22일 1.1047 1.096 1.1027
2022년 3월 23일 1.1044 1.0963 1.1004
2022년 3월 24일 1.1014 1.0965 1.0996
2022년 3월 25일 1.1039 1.0979 1.0981
2022년 3월 28일 1.1 1.0944 1.0978
2022년 3월 29일 1.1137 1.097 1.1085
2022년 3월 30일 1.1171 1.1083 1.1156
2022년 3월 31일 1.1185 1.1061 1.1065
2022년 4월 1일 1.1077 1.1027 1.1053
2022년 4월 4일 1.1056 1.096 1.097
2022년 4월 5일 1.099 1.0899 1.0903
2022년 4월 6일 1.0939 1.0874 1.0893
2022년 4월 7일 1.0939 1.0864 1.0878
2022년 4월 8일 1.0892 1.0836 1.0876
2022년 4월 11일 1.0951 1.0872 1.0883
2022년 4월 12일 1.0905 1.0821 1.0826
2022년 4월 13일 1.0896 1.0809 1.0885
2022년 4월 14일 1.0925 1.0757 1.0827
2022년 4월 15일 1.0832 1.0796 1.0806
2022년 4월 18일 1.0822 1.0769 1.078
2022년 4월 19일 1.0815 1.0761 1.0786
2022년 4월 20일 1.0868 1.0783 1.085
2022년 4월 21일 1.0937 1.0824 1.0836
2022년 4월 22일 1.0853 1.077 1.0794
2022년 4월 25일 1.0842 1.0697 1.0711
2022년 4월 26일 1.0738 1.0635 1.0643
2022년 4월 27일 1.0655 1.0586 1.0602

이제 ATR을 계산하기 위해 다음 단계를 수행합니다.

1- TR을 계산합니다. 다음 중 가장 큰 값이 됩니다.

  • 현재 고가 - 현재 저가(고가와 저가의 차이),

HL

  • Absolute(현재 고가 - 이전 종가),

 absh-pc

  • Absolute(현재 저가-이전 종가),

 absl-pc

우리가 계산한 결과에 따라 TR은 (high-low, abs(high-previous close), abs(low-previous close))에서 가장 큰 값으로 결정할 것입니다.

TR

2- 14개 기간 동안의 평균 실제 범위(ATR)를 계산합니다.

ATR

이와 같이 우리는 ATR(Average True Range)을 수동으로 계산할 수 있습니다. 그러나 요즘에는 MetaTrader 5 거래 플랫폼에서 바로 사용할 수 있는 내장 형태로 제공되기 때문에 그렇게 할 필요가 없습니다. 다른 사용 가능한 지표 중에서 선택하는 방법은 다음과 같습니다.

MetaTrader 5 거래 터미널을 열고 삽입 탭 --> --> 오실레이터 --> Average True Range를 클릭하십시오:

ATR 인서트

Average True Range를 선택하면 ATR의 매개변수에 대해 다음과 같은 창이 열립니다:

ATR 삽입 창

1 - 의 기간.

이 기간의 값은 각 기간 또는 상품의 변동성에 따라 시간대별로 또는 상품마다 다를 수 있습니다. ATR이 길수록 평균이 더 부드러워 지기 때문에 좀 더 정확해 질 수 있습니다.

2 - ATR 라인의 색상.

3 - ATR 선 스타일.

4 - ATR 선 두께.

ATR 에 매개변수를 설정한 후 차트에 첨부하면 다음과 같습니다:

ATR 부착

이전 그림에서 볼 수 있듯이 아래쪽 창에는 차트 주기 1H 동안 EURUSD의 변동성을 측정하기 위해 진동하는 선으로 표시되는 14개 기간 ATR 가 나타납니다.

앞서 언급했듯이 ATR은 변동성을 측정합니다. 이에 따라 ATR 창의 값을 분석합니다. ATR 값이 낮을수록 상품의 변동성이 낮아집니다. 그 반대로 ATR 값이 높을수록 상품의 변동성이 높아집니다.

다음 그림은 이를 읽는 방법에 대한 것입니다.

ATR 판독

따라서 ATR이 낮은 값을 기록하면 낮은 변동성을 나타내고 그 반대의 경우 즉 ATR 지표가 높은 값을 기록하면 높은 변동성을 나타냅니다.

ATR 는 그 계산 방식에서 확인할 수 있듯이 거래 신호를 생성하는 데에는 정확하지 않습니다. 이 지표는 범위의 크기만을 확인하는 데에 좋지만 적절한 포지션 사이즈의 적용, 손절매, 수익 실현에 도움을 줄 수 있는 최고의 도구 중 하나라는 것이 장점입니다.

앞서 언급했듯이 ATR은 변동성만 측정하며 추세나 시장의 방향에 대한 정보를 제공하지는 않습니다. 따라서 ATR 곡선이 위로 이동하는 경우 혼동하지 마십시오. 이는 추세가 상승한다는 것을 의미하지 않으며 그 반대의 경우도 마찬가지입니다. ATR 곡선이 아래로 이동하고 있다고 해서 하락 추세라는 의미는 아닙니다. 추세가 있는지 여부를 결정하는 데 사용할 수 있는 가장 인기 있는 도구 중 하나인 지표가 ADX 지표입니다.

또한 이전 기사에서 추세의 정의에 대해 읽어 볼 수 있습니다.

다음 그림은 ATR이 추세의 방향을 제공하지 않음을 보여줄 수 있는 예입니다.

ATR 판독값2

보시다시피 지표는 가격이 하락하는 동시에 상승하고 그 반대의 경우도 마찬가지입니다. ATR 라인은 가격이 상승하는 동시에 하락하고 있습니다. 이는 ATR이 추세나 시장의 방향을 제공하는 것이 아니라 변동성의 측정만을 하기 때문입니다.


ATR 전략

이 주제에서는 거래 결과를 향상시키기 위해 ATR의 개념에 따라 함께 사용할 수 있는 간단한 전략을 학습합니다. ATR 지표는 시장의 방향이 아닌 시장의 변동성만을 측정합니다.

1- 단순 ATR 시스템 - ATR 강도:

이 전략에 따라 현재 ATR의 값과 특정 값을 비교하여 ATR이 강한지 아닌지를 결정합니다. 여기서 이러한 특정 값은 종목마다 또는 기간마다 다를 수 있다는 점에 유의하는 것이 중요합니다. 따라서 ATR 지표 값을 확인하고 그 값에 따라 강도를 결정해야 합니다. 현재 ATR 값이 0.0024보다 크면 ATR이 강하고 그 반대의 경우도 마찬가지입니다. 현재 ATR 값이 0.0014보다 작으면 ATR이 약함을 의미합니다. ATR 값이 0.0014에서 0.0024 사이이면 ATR이 중립이고 현재 ATR 값 만을 반환한다는 의미입니다.

  • 현재 ATR 값 > 0.0024 = ATR이 강함
  • 현재 ATR 값 < 0.0014 = ATR이 약함
  • 현재 ATR 값 > 0.0014 및 < 0.0024 = 현재 ATR 값


2 - 단순 ATR 시스템 - ATR 움직임:

이 전략에 따르면 현재 ATR의 값을 이전 ATR의 값과 비교한 다음 ATR의 움직임을 결정합니다. 혹은 ATR 라인이 위로 이동하고 이는 현재 ATR 값이 이전 ATR 값보다 클 때 발생합니다. 혹은 ATR 라인이 아래로 이동하고 이는 현재 ATR 값이 이전 ATR 값보다 작을 때 발생합니다.

  • 현재 ATR 값 > 이전 ATR 값 = ATR이 상승
  • 현재 ATR 값 < 이전 ATR 값 = ATR이 하락


3 - 단순 ATR 시스템 - SL 및 TP 레벨:

이 전략에 따르면 ATR 값을 사용하여 동적인 손절매를 결정하고 현재 ATR 값과 손절매에 대한 특정한 계산을 기반으로 수익 수준을 결정하고 매수 포지션과 매도 포지션 모두에서 이익을 취할 수 있어야 합니다.

매수 포지션의 경우 차트에서 다음을 확인해야 합니다:

  • 현재 ask 가격.
  • 현재 bid 가격이 있는 새 라인.
  • 현재 ATR 값이 있는 새 라인.
  • 매수 포지션에 대한 특정한 계산에 따른 손절매 값이 있는 새 라인.
  • 매수 포지션에 대한 특정한 계산에 따른 이익실현 값이 있는 새 라인.

매도 포지션의 경우 차트에서 다음을 확인해야 합니다:

  • 현재 ask 가격.
  • 현재 bid 가격이 있는 새 라인.
  • 현재 ATR 값이 있는 새 라인.
  • 매도 포지션에 대한 특정한 계산에 따른 손절매 값이 있는 새 라인.
  • 매도 포지션에 대한 특정한 계산에 따른 이익실현 값이 있는 새 라인.

우리는 ATR 지표에서 사용할 수 있는 다른 고급 전략을 찾아 볼수 있지만 여기서는 우리의 거래 결과를 향상시킬 수 있는 적절한 방식으로 사용할 수 있도록 ATR 지표를 깊이 이해하는 데 도움이 될 수 있는 몇 가지 간단한 전략에 대해서만 알아봅니다.


ATR 전략 청사진

이 파트에서는 위에서 다룬 세 가지 전략에 대한 거래 시스템을 만들기 위해 필요한 사항을 단계별로 학습합니다. 먼저 언급된 세 가지 전략을 설계하기 전에 현재 ATR 값이 포함된 주석을 표시하여 언급된 전략을 디자인하는데 도움이 되는 간단한 프로그램이나 Expert Advisor를 생성하는 데 필요한 단계별 청사진 부터 시작해 볼 것입니다. 다음은 이에 대한 청사진을 나타내는 그림입니다.

단순 ATR 시스템 청사진

1- 단순 ATR 시스템 - ATR 강도:

  • 현재 ATR 값 > 0.0024 = ATR이 강함
  • 현재 ATR 값 < 0.0014 = ATR이 약함
  • 현재 ATR 값 > 0.0014 및 < 0.0024 = 현재 ATR 값

따라서 프로그램이 특정 값으로 현재 ATR 값을 확인하고 현재 ATR 값이 0.0024보다 큰지 결정하도록 해야 합니다 - 이는 ATR이 강함을 의미합니다. 0.0024보다 크지 않으면 ATR이 0.0014보다 작은지 확인하는 프로그램이 필요합니다 - 이는 ATR이 약함을 의미합니다. 값이 0.0014보다 작지 않고 프로그램이 0.0014에서 0.0024 사이를 찾은 경우 프로그램에서 현재 ATR 값만 차트에 표시하도록 해야 합니다.

다음은 이 ATR 강도 전략의 청사진입니다:

단순 ATR 시스템 - ATR Strength 청사진

2 - 단순 ATR 시스템 - ATR 움직임:

  • 현재 ATR 값 > 이전 ATR 값 = ATR이 상승
  • 현재 ATR 값 < 이전 ATR 값 = ATR이 하락

따라서 Expert Advisor가 현재 ATR 값을 확인하고 이전 ATR 값을 확인한 다음 현재 ATR 값이 이전 ATR 값보다 크면 이는 ATR이 상승한다는 것이고 현재 ATR 값이 이전 ATR 값보다 작은 경우 이는 ATR이 하락하거나 아무 것도 제공하지 않음을 의미합니다.

다음은 이 ATR 이동 전략의 청사진입니다:

단순 ATR 시스템 - ATR 이동 청사진

3 - 단순 ATR 시스템 - SL 및 TP 레벨:

두 경우 모두 차트에 주석을 표시해야 합니다.

매수 포지션과 매도 포지션:

  • 현재 ask 가격.
  • 현재 bid 가격이 있는 새 라인.
  • 현재 ATR 값이 있는 새 라인.
  • 손절매 값이 있는 새 라인.
  • 이익실현 값이 있는 새 라인.


다음은 이 ATR SL 및 TP 수준 전략의 청사진입니다.

단순 ATR 시스템 - SL&TP lvls 청사진

ATR 거래 시스템

이 부분에서는 언급된 모든 전략의 코드를 작성하고 각 전략을 기반으로 하는 거래 시스템을 작성하여 쉽고 매끄럽고 정확하게 실행하는 방법을 배웁니다. Expert Advisor가 차트에 ATR 값을 자동으로 표시하도록 하는 코드를 작성합니다.

다음은 Simple ATR System의 Expert Advisor 코드를 작성하는 방법입니다:

  • "double" 함수를 사용하여 가격 배열 생성:
double PriceArray[];
  • "ArraySetAsSeries" 함수를 사용하여 데이터 정렬:
ArraySetAsSeries(PriceArray,true);
  • iATR 함수와 반환된 값에 대해 정수 "int" 값을 사용하여 ATR 정의:
int ATRDef=iATR(_Symbol,_Period,14);
  • "CopyBuffer" 함수를 사용하여 데이터 정의 및 결과 저장:
CopyBuffer(ATRDef,0,0,3,PriceArray);
  • "NormalizeDouble" 함수를 사용하여 이중 값을 반환하여 현재 데이터 값 가져오기:
double ATRValue=NormalizeDouble(PriceArray[0],5);
  • ATR 값이 있는 차트에 대한 주석 얻기:
Comment("ATR Value = ",ATRValue);

다음은 전체 코드로 쉽게 복사하여 붙여 넣거나 한 블록에서 확인하기 쉽도록 한 것입니다:

//+------------------------------------------------------------------+
//|                                                   Simple ATR.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 price array
   double PriceArray[];
   
   //Sorting data
   ArraySetAsSeries(PriceArray,true);

   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14);
   
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //comment on the chart
   Comment("ATR Value = ",ATRValue);
  }
//+------------------------------------------------------------------+

이 Expert Advisor를 작성한 후 이 프로그램을 실행하려면 다음 그림과 같이 탐색기에서 찾을 수 있습니다.

ATR 내비

파일을 더블 클릭하거나 차트에 드래그 앤 드롭 하면 다음과 같은 창이 나타납니다,

단순 ATR 창

"확인"을 클릭하면 다음 그림과 같이 차트에 Simple ATR Expert Advisor가 첨부된 것을 확인할 수 있습니다.

단순 ATR 첨부

이후 테스트에서 다음 예제와 동일한 프로그램에 따라 결과를 찾을 수 있습니다:

단순 ATR 신호

이제 우리는 앞에서 다룬 각 전략에 대한 거래 시스템을 만들 것이며 아래와 같을 것입니다,

1- 단순 ATR 시스템 - ATR 강도:

  • 현재 ATR 값 > 0.0024 = ATR이 강함 
  • 현재 ATR 값 < 0.0014 = ATR이 약함
  • 현재 ATR 값 > 0.0014 및 < 0.0024 = 현재 ATR 값

다음은 Simple ATR System의 Expert Advisor - ATR Strength의 코드를 작성하는 방법입니다:

//+------------------------------------------------------------------+
//|                             Simple ATR System - ATR strength.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 price array
   double PriceArray[];
   
   
   //Sorting data
   ArraySetAsSeries(PriceArray,true);
   
   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14);   
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //comment on the chart with ATR strength as per its value
   if(ATRValue>0.0024)
   Comment("Strong ATR","\n","ATR Value = ",ATRValue);
   
   if(ATRValue<0.0014)
   Comment("Weak ATR","\n","ATR Value = ",ATRValue);
   
   if((ATRValue>0.0014)&&(ATRValue<0.0024))
   Comment("ATR Value = ",ATRValue);
  }
//+------------------------------------------------------------------+

이 코드의 차이점은 다음과 같습니다:

  • 현재 ATR 값 > 0.0024인 경우 현재 ATR을 특정 값과 비교하여 주석 처리:
   if(ATRValue>0.0024)
   Comment("Strong ATR","\n","ATR Value = ",ATRValue);
  • 현재 ATR < 0.0014인 경우
   if(ATRValue<0.0014)
   Comment("Weak ATR","\n","ATR Value = ",ATRValue);
  • 현재 ATR 값 > 0.0014 및 현재 ATR < 0.0024인 경우
   if((ATRValue>0.0014)&&(ATRValue<0.0024))
   Comment("ATR Value = ",ATRValue);

그런 다음 탐색기 창에서 이 Expert Advisor를 찾아 컴파일 후 실행할 수 있습니다.

ATR 내비 1

차트에서 파일을 더블 클릭하거나 드래그 앤 드롭하여 열면 다음과 같은 창을 볼 수 있습니다:

ATR 강도 창

"확인"을 누르면 다음 그림과 같이 차트에 첨부된 Expert Advisor를 찾을 수 있습니다.

ATR 강도 첨부

다음은 이 테스트 전략을 기반으로 생성된 신호의 예입니다:

다음 차트에서 볼 수 있듯이 Strong ATR과 현재 ATR 값이 포함된 주석을 새 줄에 표시합니다.

ATR 강도 - 강한

다음 차트에서 볼 수 있듯이 약세의 ATR 주석과 현재 ATR 값이 새 줄에 표시됩니다.

ATR 강도 - 약

다음 차트에서 볼 수 있듯이 결정하는 값에 따라 중립적이기 때문에 현재 ATR 값이 있는 주석만 표시됩니다.

ATR 강도 - 중립

2 - 단순 ATR 시스템 - ATR 움직임: 

  • 현재 ATR 값 > 이전 ATR 값 = ATR이 상승
  • 현재 ATR 값 < 이전 ATR 값 = ATR이 하락

다음은 Simple ATR System - ATR 움직임의 Expert Advisor의 코드를 작성하는 방법입니다:

//+------------------------------------------------------------------+
//|                             Simple ATR System - ATR movement.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 arrays
   double PriceArray0[];
   double PriceArray1[];
   
   //sort price array from current data
   ArraySetAsSeries(PriceArray0,true);
   ArraySetAsSeries(PriceArray1,true);
   
   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14); 
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray0);      
   CopyBuffer(ATRDef,0,0,3,PriceArray1);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray0[0],5);
   double PreATRValue=NormalizeDouble(PriceArray1[1],5);

   if(ATRValue>PreATRValue)
   Comment("ATR is UP","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
   
   if(ATRValue<PreATRValue)
   Comment("ATR is Down","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
      
  }
//+------------------------------------------------------------------+


이 코드의 차이점은 다음과 같습니다:

  • 두 개의 가격 배열 생성(현재 ATR 값(PriceArray0), 이전 ATR 값(PriceArray1)):
   double PriceArray0[];
   double PriceArray1[];
  • 현재 데이터에서 두개의 가격 배열을 정렬:
   ArraySetAsSeries(PriceArray0,true);
   ArraySetAsSeries(PriceArray1,true);
  • 두 배열에 대한 데이터 정의 및 결과 저장:
   CopyBuffer(ATRDef,0,0,3,PriceArray0);      
   CopyBuffer(ATRDef,0,0,3,PriceArray1);
  • 두 값(현재 및 이전 ATR)에 대한 현재 데이터 값 가져오기:
   double ATRValue=NormalizeDouble(PriceArray0[0],5);
   double PreATRValue=NormalizeDouble(PriceArray1[1],5);
  • 현재 ATR과 이전 ATR 값을 비교하여 주석 처리,
    • 현재 ATR 값 > 이전 ATR 값인 경우:
   if(ATRValue>PreATRValue)
   Comment("ATR is UP","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
    • 현재 ATR 값 < 이전 ATR 값인 경우:
   if(ATRValue<PreATRValue)
   Comment("ATR is Down","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
컴파일 후 탐색기 창에서 이 Expert Advisor를 찾아 실행할 수 있습니다:

ATR 내비 2

차트에서 파일을 더블 클릭하거나 드래그 앤 드롭 하면 다음과 같은 창을 볼 수 있습니다:

ATR 이동 창.

"알고 거래 허용"을 활성화한 후 "확인" 옵션을 누르면 다음 그림과 같이 차트에 첨부된 Expert Advisor를 찾을 수 있습니다.

ATR 무브먼트 부착

다음은 이 테스트 전략을 기반으로 생성된 신호의 예입니다.

ATR이 상승 중인 경우:

ATR 움직임 - 위로

ATR이 하락인 경우:

ATR 이동 - 아래로


3 - 단순 ATR 시스템 - SL 및 TP 레벨:

매수 포지션의 경우 차트에서 다음을 확인해야 합니다: 

  • 현재 ask 가격.
  • 현재 bid 가격이 있는 새 라인.
  • 현재 ATR 값이 있는 새 라인.
  • 매수 포지션에 대한 손절매 값이 있는 새 라인.
  • 매수 포지션에 대한 이익실현 값이 있는 새 라인.

매도 포지션의 경우 차트에서 다음을 확인해야 합니다: 

  • 현재 ask 가격.
  • 현재 bid 가격이 있는 새 라인.
  • 현재 ATR 값이 있는 새 라인.
  • 매도 포지션에 대한 손절매가 있는 새로운 라인.
  • 매도 포지션에 대한 이익실현이 있는 새로운 라인.

다음은 Simple ATR System의 Expert Advisor의 코드를 작성하는 방법입니다 - SL 및 TP 수준:

//+------------------------------------------------------------------+
//|                             Simple ATR System - SL&TP levels.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()
  {
   //define Ask price&Bid
   double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   
   //creating price array
   double PriceArray[];
   
   //Sorting data
   ArraySetAsSeries(PriceArray,true);

   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14);
   
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //Calculate SL&TP for buy position
   double StopLossBuy=Bid-(ATRValue*2);
   double TakeProfitBuy=Ask+((ATRValue*2)*2);
   
   //Calculate SL&TP for sell position
   double StopLossSell=Ask+(ATRValue*2);
   double TakeProfitSell=Bid-((ATRValue*2)*2);
   
   //comment on the chart
   Comment("BUY POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
   "\n","Stop Loss = ",StopLossBuy,"\n","Take Profit = ",TakeProfitBuy,"\n",
   "SELL POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
   "\n","Stop Loss = ",StopLossSell,"\n","Take Profit = ",TakeProfitSell);
  }
//+------------------------------------------------------------------+

차이점은 다음과 같습니다:

  • 손절매를 계산하고 이익을 취하기 위해 Ask 및 Bid 가격 정의:
   double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
  • 매수 포지션과 매도 포지션 모두에 대한 손절매 및 이익실현 계산:
   //Calculate SL&TP for buy position
   double StopLossBuy=Bid-(ATRValue*2);
   double TakeProfitBuy=Ask+((ATRValue*2)*2);
   
   //Calculate SL&TP for sell position
   double StopLossSell=Ask+(ATRValue*2);
   double TakeProfitSell=Bid-((ATRValue*2)*2);
  • 매수 포지션과 매도 포지션 모두에 대한 전략을 기반으로 한 주석:
  • 현재 ask 가격.
  • 현재 bid 가격이 있는 새 라인.
  • 현재 ATR 값이 있는 새 라인.
  • 손절매 값이 있는 새 라인.
  • 이익실현 값이 있는 새 라인.
  •    Comment("BUY POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
       "\n","Stop Loss = ",StopLossBuy,"\n","Take Profit = ",TakeProfitBuy,"\n",
       "SELL POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
       "\n","Stop Loss = ",StopLossSell,"\n","Take Profit = ",TakeProfitSell);

    코드를 컴파일한 후 탐색기 창에서 이 Expert Advisor를 찾아 실행할 수 있습니다:

    ATR 내비 3

    차트를 더블 클릭하거나 드래그 앤 드롭 하여 파일을 열면 다음과 같은 창이 열립니다:

    ATR SL_TP 창

    "확인"을 누르면 다음 그림과 같이 차트에 첨부된 Expert Advisor를 찾을 수 있습니다:

    ATR SL_TP 연결

    다음은 이 테스트 전략을 기반으로 생성된 신호의 예입니다:

    ATR SL-TP 수준

    결론

    이제 ATR이 무엇인지, 무엇을 측정하는지, 그 밑바탕을 이루는 개념과 어떻게 계산하는 지와 이를 시장의 실제 사례에 적용하는 방법에 대해 ATR 정의 부분에서 알아보았습니다. 그런 다음 우리는 ATR의 개념을 기반으로 우리에게 유리하게 사용될 수 있는 몇 가지 간단한 전략을 배웠습니다. ATR 강도 시스템, ATR 움직임 및 Simple ATR - SL & TP 레벨 전략등 ATR 전략 부분에서 배운 내용을 바탕으로 ATR 전략 청사진을 통해 MetaTrader 5 거래 플랫폼에서 작동하는 모든 전략에 대한 거래 시스템을 설계하는 데 도움이 되도록 각 전략에 대한 청사진을 학습하고 설계한 다음 ATR 거래 시스템 주제를 통해 MetaTrader 5 플랫폼에서 실행하기 위해 MetaQuotes Languages(MQL5)별로 각 전략에 대한 Expert Advisor를 작성했습니다.

    이와 같은 주제에 대해 이해하고 연습한 후에는 그 바탕이 되는 개념에 따라 평균 실제 범위(ATR)를 사용할 수 있어야 하며 자동 거래 시스템을 통해 상품의 변동성을 결정하기 위해 지표를 읽을 수 있어야 합니다. 무엇이든 마스터하려면 연습이 중요하기 때문에 특히 스스로 배운 것을 적용한 후에 검토해야 합니다.

    또한 새로운 전략이나 도구가 귀하의 스타일에 적합하지 않거나 다른 사람의 경우에는 잘 작동하더라도 귀하에게는 그렇지 않을 수도 있습니다. 배운 내용이 거래에 유용하거나 수익성이 없을 수 있으므로 실제 계정에서 사용하기 전에 새로운 전략이나 도구를 테스트해 확인하는 것이 중요합니다. 따라서 먼저 테스트를 통해 유용하고 수익성이 있는지 확인해야 합니다.

    이 기사의 끝에서 저는 여기서 다룬 내용이 여러분의 거래에 유용한 점을 발견하기를 희망하고 또한 기사의 주제에 대한 새로운 아이디어 또는 거래 관련 다른 주제에 대한 새로운 아이디어에 눈을 뜨게 하여 여러분의 능력을 향상시킬 수 있기를 바랍니다. 트레이딩 결과 그리고 트레이딩 프로그래밍의 중요성과 얼마나 유용할 수 있는 지와 쉽고 원활하고 정확하게 트레이딩 하는데 얼마나 도움이 되는지 알려주는 계기가 되었기를 바랍니다.

    MetaQuotes 소프트웨어 사를 통해 영어가 번역됨
    원본 기고글: https://www.mql5.com/en/articles/10748

    Expert Advisor 개발 기초부터 (파트 8): 개념적 도약 Expert Advisor 개발 기초부터 (파트 8): 개념적 도약
    새로운 기능을 구현하는 가장 쉬운 방법은 무엇일까요? 이 글에서 우리는 한 걸음 뒤로 물러난 다음 두 걸음 앞으로 나아갈 것입니다.
    Expert Advisor 개발(파트 7): 가격에 볼륨 추가 (I) Expert Advisor 개발(파트 7): 가격에 볼륨 추가 (I)
    이것은 현존하는 가장 강력한 지표 중 하나입니다. 어느 정도의 확신을 갖고 거래를 하고자 하는 사람은 차트에 반드시 이 지표가 있어야 합니다. 많은 경우 이 지표는 거래하는 동안 "테이프 읽기"를 선호하는 사람들이 사용합니다. 또한 이 지표는 거래 중 가격의 움직임만을 사용하는 사람들이 활용할 수 있습니다.
    파라볼릭 SAR 기반의 트레이딩 시스템을 설계하는 방법 알아보기 파라볼릭 SAR 기반의 트레이딩 시스템을 설계하는 방법 알아보기
    이 기사에서는 가장 인기 있는 지표를 사용하여 거래 시스템을 설계하는 방법에 대한 시리즈를 계속할 것입니다. 이 기사에서는 파라볼릭 SAR 지표에 대해 자세히 알아보고 몇 가지 간단한 전략을 사용하여 MetaTrader 5에서 사용할 거래 시스템을 설계하는 방법을 배웁니다.
    데이터 과학 및 머신 러닝(파트 03): 행렬 회귀(Matrix Regressions) 데이터 과학 및 머신 러닝(파트 03): 행렬 회귀(Matrix Regressions)
    이번에는 우리의 모델이 행렬로 만들어지고 있습니다. 그러므로 유연성이 있으면서 컴퓨터의 계산 한계 내에서 유지되는 한 5개의 독립 변수 뿐만 아니라 많은 변수를 처리할 수 있는 강력한 모델을 만들 수 있습니다. 이 기사가 흥미로울 것이라 확실합니다.