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

파라볼릭 SAR 기반의 트레이딩 시스템을 설계하는 방법 알아보기

MetaTrader 5트레이딩 | 3 10월 2022, 09:38
590 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

소개

이 기사에서는 여러분의 거래 스타일에 따라 트레이딩에 사용할 수 있는 새로운 유용한 기술 지표에 대해 자세히 알아볼 것입니다. 이 기술 지표는 파라볼릭 SAR(Parabolic SAR)입니다. 여기서는 MetaTrader 5에 내장된 MetaQuotes Language Editor로 거래 시스템의 코드를 작성한 후 MetaTrader5 거래 플랫폼에서 사용할 거래 시스템을 설계하는 방법을 배울 것입니다. MetaTrader 5를 다운로드 하는 방법과 MetaQuotes 언어 편집기를 찾아 사용하는 방법은 MetaEditor에서 MQL5 코드 작성이란 글을 통해 확인할 수 있습니다. 이 기사에서 다룰 주제는 다음과 같습니다.

  1. 파라볼릭 SAR 정의
  2. 파라볼릭형 SAR 전략
  3. 파라볼릭 SAR 전략 청사진
  4. 파라볼릭 SAR 거래 시스템
  5. 결론

파라볼릭 SAR 지표의 간단한 전략과 그 이면의 개념을 기반으로 간단한 거래 시스템을 설계하는 방법을 배웁니다. 파라볼릭 SAR 정의를 통해 파라볼릭 SAR 지표가 무엇인지 그리고 그것이 의미하는 바가 무엇인지와 이 지표를 계산하여 그 배후에 있는 개념을 학습하는 방법을 자세히 배웁니다. 이러한 접근 방식을 통해 파라볼릭 SAR 지표를 쉽고 효과적으로 사용할 수 있을 것입니다. 그런 다음 배운 내용에 따라 이 지표의 개념을 기반으로 하는 간단한 전략을 통해 이 파라볼릭 SAR 지표를 사용하는 방법을 배우고 파라볼릭 SAR 전략 부분에서 이를 학습합니다. 그런 다음 우리는 언급된 간단한 전략에 대한 청사진을 설계할 것이며 이 청사진은 전략과 구축해야 할 것들과 관련한 명확한 청사진을 만들어 단계별로 거래 시스템을 설계하는 데 도움이 되도록 할 것입니다. 그런 다음 이 기사에서 가장 흥미로운 주제를 살펴봅니다. 컴퓨터가 우리의 전략에 따라 설계된 조건을 검사하고 신호를 반환하도록 하는 거래 시스템의 코드를 작성하는 방법을 배웁니다. 이 프로세스는 우리가 만든 간단한 전략을 기반으로 설계된 expert advisor를 통해 자동으로 그리고 정확하게 수행됩니다.

주제를 살펴보기 전에 몇 가지 조언을 드리고 싶습니다. 이 접근 방식은 여러분의 이해를 깊게 하기 위함입니다. 이미 배운 경우 실제 계정에서 사용하기 전에 전략이나 모든 것을 테스트해야 해야 합니다. 교육 목적의 소스에서 여러분이 스스로 배운 것을 적용할 경우 귀하의 거래에 유용하지 않을 수 있기 때문입니다.

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

이제 이 기사의 주제를 통해 흥미로운 여행을 시작해 보겠습니다.


파라볼릭 SAR 정의

이 파트에서는 Welles Wilder가 만든 파라볼릭 SAR Indicator에 대해 자세히 알아보겠습니다. 이 지표의 이름은 차트에서 보이는 지표의 형태를 의미하는 "파라볼릭"에서 유래했으며 "SAR"은 스탑(Stop)과 반전(Reverse)을 나타냅니다. 그의 책 "New Concepts in Technical Trading Systems"에서도 Parabolic Time/Price system란 이름으로 소개되었습니다.

파라볼릭 SAR 지표는 추세 추종 지표이며 추세 시장에서 사용됩니다. 이 지표를 사용하면 진입 이후 스탑 레벨이 이동하기 시작하기까지 몇 기간 동안 거래 종목이 반응하도록 할 수 있습니다. 따라서 이 지표의 주요 목적은 현재 시장 방향이나 추세에 따라 적절한 스톱을 설정할 수 있도록 하는 것입니다. 추세에 대해 더 많이 알고 싶을 경우 추세 정의란 글을 읽어 보시기 바랍니다.

다시 말해 파라볼릭 SAR 지표의 주요 목적은 트레일링 스탑을 생성하는 것입니다. 스탑은 시간과 가격 두개의 함수입니다. 가격의 함수에 따라 스탑은 가격 움직임에 따라 상대적으로 위 또는 아래로 움직인다는 것을 알 수 있습니다. 또한 시간의 함수에 따라 스탑은 가격의 방향에 관계없이 매 기간 이동한다 라는 것을 알 수 있습니다.

따라서 먼저 추세를 결정한 다음 파라볼릭 SAR 전략을 사용할 수 있습니다. 지금까지 파라볼릭 SAR 지표가 무엇을 의미하는 지와 무엇을 알려줄 수 있는지에 대해 배웠습니다. 이제 이 지표를 수동으로 계산하여 그 이면의 개념을 학습하는 방법을 알아야 합니다. 다음은 이를 수행하는 방법입니다. 

우리는 먼저 시장의 추세 또는 방향을 결정해야 하고 이 결정에 따라 두 가지의 경우로 계산을 할 것입니다. 그 중 하나는 상승하는 시장에서 파라볼릭 SAR을 계산하는 방법인데 이 경우 상승하는 SAR을 반환합니다. 다른 경우는 하락하는 시장에서 파라볼릭 SAR을 계산하는 방법으로 하락하는 SAR을 반환합니다. 따라서 우리는 다음 두 가지를 계산할 것입니다: 상승하는 시장에서 상승하는 SAR과 하락하는 시장에서 하락하는 SAR.

  • 상승하는 SAR:
    1. 이전 SAR 값 결정 = 이전 기간의 이전 SAR 값.
    2. 극단점(EP; extreme point) 결정 = 현재 상승 추세의 고점중 고점.
    3. 가속 계수(AF; acceleration factor) 결정 = 0.02와 0.20 사이의 값. 첫 번째 최소값인 0.02를 결정한 후 추세가 연장되는 기간에 관계없이 EP가 최대값 0.20에 접근하기 위해 새로운 고점을 생성할 때마다 AF가 0.02씩 증가하므로 값은 (EP)에 따라 결정됩니다. .
    4. 현재 파라볼릭 SAR 값 = 이전 SAR(1단계) + 이전 AF *(이전 EP-이전 SAR).

시장에서 다음과 같이 상승하는 SAR인 이 경우의 예를 들어보겠습니다:

날짜 고가 저가
1 45 43
2 44 43.5
3 46 43
4 47 42
5 48 42.5
6 47.5 42.75
7 48 42.60
8 47.75 42.5
9 48 43
10 49 42.5
11 48.75 42.60
12 50 42
13 51 42.5
14 52 43
15 51.5 42.5
16 51 42
17 52 43
18 53 44
19 54 45

이제 상승하는 SAR을 계산해야 하며 다음과 같을 것입니다:

  1. 이전 SAR 값 = 이전 기간의 이전 SAR 값을 결정합니다. 이 예에서는 단순화를 위해 노란색으로 표시된 첫 번째 값이 42와 같습니다.
  2. 극단점(EP) = 현재 상승 추세의 가장 높은 값을 결정합니다. 48이 됩니다.
  3. EP와 SAR의 차이를 구합니다. 차이는 48-42 =6이 됩니다.
  4. 가속 계수(AF) = 0.02와 0.20 사이의 값을 결정합니다. 첫 번째 값은 0.02입니다.
  5. AF에 EP와 SAR의 차이를 곱하면 값은 0.12가 됩니다.
  6. 이전 SAR에 5단계의 결과인 EP와 SAR의 차이를 이전의 AF에 곱한 결과를 더하여 현재 SAR을 계산하면 값은 42.12가 됩니다.

다음은 예제에서 계산된 모든 값을 보여주는 그림입니다.

상승하는 SAR의 예

SAR 열에서 볼 수 있듯이 SAR 값은 기간 동안 매일 상승합니다.

  • 하락하는 SAR:
    1. 이전 SAR 값 결정 = 이전 기간의 이전 SAR 값.
    2. 극단점(EP)의 결정 = 현재 하락세의 가장 낮은 값.
    3. 가속 계수(AF; acceleration factor) 결정 = 0.02와 0.20 사이의 값. 첫 번째 최소값인 0.02으로 정한 후 추세가 연장되는 기간에 관계없이 EP가 최대값 0.20에 접근하기 위해 새로운 저점을 생성할 때마다 AF가 0.02씩 증가하므로 값은 (EP)에 따라 결정됩니다.
    4. 현재 파라볼릭 SAR 값 = 이전 SAR(1단계) - 이전 AF *(이전 EP-이전 SAR).

이와 같은 경우의 예를 들어 보겠습니다. 시장에서 다음과 같은 하락하는 SAR의 데이터가 있는 경우입니다.

날짜 고가 저가
1 54 45
2 53 44
3 52 43
4 51 42
5 51.5 42.5
6 52 43
7 51 42.5
8 50 42
9 48.75 42.6
10 49 42.5
11 48 43
12 47.75 42.50
13 48 42.60
14 47.50 42.75
15 48 42.50
16 47 42
17 46 43
18 44 43.50
19 45 43

이제 주어진 기간 동안 하락하는 SAR 값을 계산합니다. 다음과 같을 것입니다.

  1. 이전 SAR 값의 결정 = 이전 기간의 이전 SAR 값. 이 예에서는 단순화를 위해 노란색으로 표시된 첫 번째 값이 51과 같습니다.
  2. 극단점(EP) 결정 = 현재 하락세의 저가 중 최저값, 42입니다.
  3. EP와 SAR의 차이를 구합니다. 차이는 51-42 =9입니다.
  4. 가속 계수(Acceleration Factor) 결정 = 0.02와 0.20 사이의 값으로 정합니다. 첫 번째 값은 0.02입니다.
  5. AF에 EP와 SAR의 차이를 곱하면 값은 0.18이 됩니다.
  6. 5단계의 결과에서 이전 SAR을 빼서 현재 SAR을 계산하면 값은 50.82가 됩니다.

다음은 주어진 기간 동안의 모든 값을 계산한 그림입니다.

SAR 열에서 볼 수 있듯이 SAR 값은 기간 동안 매일 감소합니다.

다행히 MetaTrader 5 거래 플랫폼에는 이 지표가 내장되어 있고 지표를 선택하기만 하면 되므로 Parabolic SAR 지표를 계산할 필요가 없습니다. 다음은 이를 수행하는 방법입니다:

MetaTrader 5를 여는 동안 삽입 탭 클릭 --> 지표 선택 --> 추세 선택 --> 파라볼릭 SAR 선택

SAR 인서트

그 후 다음과 같은 파라볼릭 SAR의 매개변수 창을 찾을 수 있습니다:

SAR 매개변수

1- 가격이 새로운 고가 또는 저가를 생성할 때마다 추가될 단계(AF)를 결정합니다.

2- (AF)의 최대값을 결정하고 배운 바와 같이 기본값은 0.20입니다.

3- 지표의 색상을 결정합니다.

4- 지표의 스타일을 결정합니다.

파라볼릭 SAR 지표의 적절한 매개변수를 결정하고 "확인"을 누르면 다음과 같이 차트에 첨부된 것을 볼 수 있습니다.

SAR 첨부

이전 그림에서 볼 수 있듯이 상승 움직임 동안 파라볼릭 SAR이 가격 아래에서 이동하고 가격이 위로 움직임에 따라 계속해서 위로 이동하고 그 반대의 경우도 마찬가지임을 알 수 있습니다. 하락세 중에는 파라볼릭 SAR이 가격의 위에서 이동하고 가격이 하락함에 따라 계속 아래로 움직입니다.


파라볼릭 SAR 전략

이 주제에서는 파라볼릭 SAR에서 사용할 수 있는 몇 가지 간단한 전략을 배웁니다. 주요 목표는 새로운 도구의 개념을 배우고 거래 시스템을 설계하는 방법에 대해 알아보는 것입니다. 실제 계정에서 사용하기 전에 전략을 테스트해야 한다는 것을 잊지 마십시오.

우리는 이 파라볼릭 SAR 지표가 추세 추종이며 추세 시장, 상승 추세 및 하락 추세에서 사용할 수 있다는 것을 알아야 합니다. 따라서 우리가 할 일은 먼저 추세를 결정해야 하고 그 다음 그에 따라 파라볼릭 SAR을 사용하는 것입니다.

  • 전략 1: 상승세 전략

이 전략에 따르면 모든 틱에 대해 파라볼릭 SAR 값을 가격과 비교하고 매수 신호가 있는지 여부를 결정합니다. 매수 신호는 파라볼릭 SAR 값이 최저가보다 아래에 있을때 생성됩니다. 그리고 우리는 또 다른 신호로 이익 실현 신호를 가질 수 있는데 이는 SAR 값이 최고가보다 높을 때입니다.

SAR 값 < 저가 = 매수

SAR 값 > 높은 가격 = 이익 실현

  • 전략 2: 하락추세 전략

이 전략은 상승세 전략의 반대가 됩니다. 이 전략에 따르면 모든 틱에 대해 파라볼릭 SAR 값을 가격과 비교하고 매도 신호가 있는지 여부를 결정합니다. 매도 신호는 파라볼릭 SAR 값이 최고가보다 클 때 생성됩니다. 그리고 우리는 또 다른 신호로 이익 실현 신호를 가질 수 있는데 이는 SAR 값이 최저가보다 낮을 때입니다.

SAR 값 > 고가 = 매도

SAR 값 < 저가 = 이익 실현

  • 전략 3: 트레일링 스탑과 매수 신호:

이 전략에 따르면 모든 틱에 대해 SAR 값을 가격과 비교하고 매수 신호가 있는지를 결정하고 파라볼릭 SAR 지표 값에 따라 모든 틱에 대한 트레일링 스탑을 정해야 합니다. 따라서 SAR 값이 저가 보다 낮을 때 이것은 매수를 할 때이며 지표 값에 따라 트레일링 스탑 손절매 수준을 얻게 됩니다.

SAR 값 < 저가 = 매수 --> SAR 값에 따른 트레일링 스탑 값

  • 전략 4: 트레일링 스탑 전략과 매도 신호:

이 전략에 따르면 모든 틱에서 SAR 값을 가격과 비교하고 매도 신호가 있는지를 확인하고 파라볼릭 SAR 값에 따라 모든 틱에 대한 트레일링 스탑을 결정해야 합니다. 따라서 SAR 값이 고가보다 크면 이는 매도가 되며 SAR 값에 따라 트레일링 스탑의 레벨을 얻게 됩니다.

SAR 값 > 고가 = 매도 --> SAR 값에 따른 트레일링 스탑 값.


파라볼릭 SAR 전략 청사진

이 주제에서 우리는 거래 시스템의 코드를 작성하는 데 도움이 되는 전략에 대한 청사진을 설계할 것입니다. 이를 통해 expert advisor가 단계별로 수행하도록 하기 위해야 필요한 것과 그렇게 하기 위해 우리의 전략을 어떻게 구성해야 하는지 등을 알수 있습니다. 다음은 각 전략에 대한 청사진입니다.

  • 전략 1: 상승세 전략

우리는 컴퓨터나 Expert Advisor가 수행해야 할 것들과 조건이 충족될 경우 반환되는 것들에 대해 알려줄 것입니다. 이 전략에서는 SAR 값을 확인하고 가격 수준과 비교한 다음 결정해야 합니다. SAR 값이 저가보다 낮은지 여부를 결정하고 만약 그렇지 않은 경우 아무 것도 반환할 필요가 없으며 만약 낮다면 Expert Advisor는 매수 신호를 반환해야 합니다. 그런 다음 이를 확인하고 두 값을 다시 비교하고 SAR 값이 고가보다 큰지 결정합니다. 만약 그렇지 않은 경우 프로그램이 아무 것도 반환하지 않아야 하고 만약 높다면 수익 실현 신호를 반환해야 합니다.

SAR 값 < 저가 = 매수

SAR 값 > 높은 가격 = 이익 실현

상승세 전략 청사진

  • 전략 2: 하락추세 전략

이 전략에서는 SAR 값을 확인하고 가격 수준과 비교한 다음 SAR 값이 고가보다 큰지 여부를 결정해야 합니다. 그렇지 않은 경우 프로그램이 아무것도 반환하지 않습니다. 만약 고가 보다 클 경우 매도 신호를 반환한 다음 두 값을 다시 확인하고 비교하며 SAR 값이 저가보다 작은지 여부를 결정하고 작지 않은 경우 프로그램이 아무것도 반환하지 않으나 만약 저가보다 작은 경우에는 이익 실현 신호를 반환해야 합니다.

SAR 값 > 고가 = 매도

SAR 값 < 저가 = 이익 실현

하락 추세 전략 청사진

  • 전략 3: 트레일링 스탑과 매수 신호:
  • 이 전략의 코드를 작성하기 위해 우리는 SAR 값을 확인하고 트레일링 스탑 값을 반환하고 이 값을 고가와 저가로 확인하고 SAR 값이 저가보다 작은지 여부를 결정하고 저가 보다 작지 않은 경우 트레일링 스탑 값만 반환하며 만약 저가 보다 작은 경우에는 매수 신호와 트레일링 스톱 값을 반환해야 합니다. 

    트레일링 스탑 레벨만 --> SAR 값 < 최저가 = 매수 --> SAR 값에 따른 트레일링 스탑 값

    으로 매수스탑 전략 청사진 으로 매수

    • 전략 4: 트레일링 스탑 전략과 매도 신호:

    이 전략의 코드를 작성하기 위해 우리는 SAR 값을 확인하고 트레일링 스탑 값을 반환하고 이 값을 고가와 저가로 확인하고 SAR 값이 고가보다 큰지 여부를 결정하고 고가 보다 크지 않은 경우 트레일링 스탑 값만 반환하며 만약 고가 보다 큰 경우에는 매도 신호와 트레일링 스탑 값을 반환해야 합니다.

    트레일링 스탑 값 --> SAR 값 > 고가 = 매도 --> SAR 값에 따른 트레일링 스탑 값

    으로 판매중지 전략 청사진 으로 판매

    파라볼릭 SAR 거래 시스템

    이 흥미로운 주제에서는 MQL5(MetaQuotes Language Editor)로 앞에서 다룬 모든 전략의 코드를 작성하해서 MetaTrader 5 거래 플랫폼에서 이러한 전략을 자동으로 정확하게 실행하게 하는 거래 시스템을 설계하는 방법을 배웁니다.

    먼저 파라볼릭 SAR 값으로 주석을 반환하는 간단한 거래 시스템을 설계하는 코드를 작성하는 방법을 배웁니다. 이 간단한 expert advisor를 작성하기 위해 아래와 같은 단계를 따릅니다.

    • "double" 함수를 사용하여 파라볼릭 SAR에 대한 배열을 만듭니다:
    double SARArray[];
    • "ArraySetAsSeries" 함수를 사용하여 현재 데이터에서 배열을 정렬하면 boolean 값이 반환됩니다.
    ArraySetAsSeries(SARArray,true);
    • "iSAR" 기능을 사용하여 SAR 지표를 정의합니다:
    int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
    • "CopyBuffer" 기능을 사용하여 SARArray를 SAR 정의로 채웁니다:
    CopyBuffer(SARDef,0,0,3,SARArray);
    • "double" 함수로 SAR 값에 대한 변수를 생성한 후 "NormalizeDouble" 함수를 사용하여 SAR 값을 계산합니다.
    double SARValue=NormalizeDouble(SARArray[0],5);
    • 주석 함수를 사용한 SAR 값이 포함된 차트:
    Comment("Parabolic SAR value is ",SARValue);

    그러면 다음과 같은 전체 블록으로 코드를 찾을 수 있습니다:

    //+------------------------------------------------------------------+
    //|                                  Simple Parabolic SAR 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()
      {    
       //create a SAR array
       double SARArray[];
    
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
    
       //chart comment with the signal
       Comment("Parabolic SAR value is ",SARValue);
      }
    //+------------------------------------------------------------------+

    이 코드를 작성하고 컴파일하면 다음 그림과 같이 탐색기에 나타납니다.

    단순 파라볼릭 SAR 시스템 - Nav.

    차트에서 파일을 더블 클릭하거나 드래그 앤 드롭 하여 expert advisor를 실행하고 시스템의 결과를 얻으면 다음 창이 표시됩니다:

     단순 파라볼릭 SAR 시스템 - 창

    그런 다음 "시스템 트레이딩 허용" 옆에 체크 표시하고 확인을 누르면 시스템을 찾을 수 있습니다. 혹은 다음과 같이 차트에 expert advisor가 첨부되어 있을 것입니다.

    단순 파라볼릭 SAR 시스템 - 부착

    다음 그림은 이 시스템에서 생성된 신호의 예입니다.

    단순 파라볼릭 SAR 시스템

    • 전략 1: 상승세 전략

    이 전략에서 언급한 것과 동일하게 SAR 값이 저가보다 작을 때 매수 신호를 생성하고 SAR 값이 고가보다 클 때 이익 실현 신호를 생성하는 거래 시스템의 조건을 설정해야 합니다. 다음은 이 전략을 코딩하는 방법입니다.

    • "string" 함수를 사용하여 신호에 대한 문자열 변수를 생성합니다:
    string signal="";
    • "MqlRates" 함수를 사용하여 가격에 대한 배열을 생성하고 가격, 거래량 및 스프레드에 대한 정보를 저장합니다:
    MqlRates PriceArray[];
    • "ArraySetAsSeries" 함수를 사용하여 현재 데이터에서 가격 배열을 정렬합니다:
    ArraySetAsSeries(PriceArray,true);
    • "CopyRates" 함수를 사용하여 가격 데이터로 배열을 채우십시오. 이 함수는 Data를 정수로 저장한 후 "MqlRates" 구조의 히스토리 데이터를 가져옵니다:
    int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
    • "double" 함수를 사용하여 SAR 값에 대한 다른 배열을 만듭니다:
    double SARArray[];
    • "ArraySetAsSeries" 함수를 사용하여 현재 데이터에서 SAR 배열을 정렬합니다:
    ArraySetAsSeries(SARArray,true);
    • SAR 정의를 참조하기 위해 "SARDef"를 정수로 저장한 후 파라볼릭 SAR 지표의 핸들을 반환하는 "iSAR" 함수를 사용하여 EA에 대한 SAR 지표를 정의합니다:
    int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
    • 특정 지표의 특정 버퍼 데이터를 가져올 때 "CopyBuffer" 기능을 사용하여 SARArray를 SARDef로 채웁니다:
    CopyBuffer(SARDef,0,0,3,SARArray);
    • double 유형을 반환하는 "NormalizeDouble" 함수를 사용하여 마지막 데이터의 SAR 값을 계산합니다: 
    double SARValue=NormalizeDouble(SARArray[0],5);
    • "if" 함수를 사용하여 "buy" 신호의 조건을 설정하고 SAR 값이 저가보다 낮으면 "Buy" 신호를 반환해야 합니다:
       if(SARValue < PriceArray[1].low)
       {
          signal="Buy";
       }
    • "if" 기능을 사용하여 "이익 실현" 신호의 조건을 설정하고 SAR 값이 고가보다 크면 "이익 실현" 신호를 반환해야 합니다:
       if(SARValue > PriceArray[1].high)
       {
          signal="Take Profit";
       }
    • "주석" 기능을 사용하여 차트에 생성된 신호를 주석 처리 합니다:
    Comment("The signal is ",signal);

    이와 같은 단계를 통해 이 전략을 위한 거래 시스템을 만들었으며 다음은 전체 코드 블록입니다:

    //+------------------------------------------------------------------+
    //|                      Parabilic SAR System - 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()
      {  
       //create an string variable for signal
       string signal="";
       
       //create a price array
       MqlRates PriceArray[];
       
       //sort array from the current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
    
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue < PriceArray[1].low)
       {
          signal="Buy";
       }
       
       //take profit signal
       //if current SAR value above candle 1 high
       if(SARValue > PriceArray[1].high)
       {
          signal="Take Profit";
       }
       
       //comment with the signal
       Comment("The signal is ",signal);
      }
    //+------------------------------------------------------------------+

    이 코드를 컴파일하면 다음 그림과 같은이 탐색기 창에서 찾을 수 있습니다.

    상승 추세 - 연결됨 - 탐색

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

     상승 추세 SAR - 창

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

    상승 추세 - 첨부

    다음 그림과 같은 테스트 결과처럼 주석으로 차트에서 생성된 신호를 찾을 수 있습니다:

    • 매수 신호:

    상승 추세 - 매수 신호

    • 이익실현 신호:

    상승 추세 - TP 신호

    • 전략 2: 하락추세 전략

    이 전략에서는 SAR 값이 고가보다 클 때 매도 신호를 생성하고 SAR 값이 저가보다 작을 때 이익 실현 신호를 생성하는 거래 시스템에 대한 조건을 설정해야 합니다. 다음은 이 전략을 코딩하는 방법입니다:

    //+------------------------------------------------------------------+
    //|                    Parabolic SAR System - 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()
      {  
       //create an string variable for signal
       string signal="";
       
       //create a price array
       MqlRates PriceArray[];
       
       //sort array from the current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }
       
       //take profit signal
       //if current SAR value above candle 1 high
       if(SARValue < PriceArray[1].low)
       {
          signal="Take Profit";
       }
       
       //chart comment with the signal
       Comment("The signal is ",signal);
      }
    //+------------------------------------------------------------------+
    • 이 전략 코드의 차이점은 다음과 같습니다:
      • 매도 신호 조건 - SAR 값이 고가보다 높을 때:
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }
      • 수익 실현 신호의 조건 - SAR 값이 저가보다 낮을 때:
       if(SARValue < PriceArray[1].low)
       {
          signal="Take Profit";
       }

    이 코드를 컴파일한 후 탐색기 창에서 다음 그림과 같이 Expert Advisor를 찾을 수 있습니다.

    SAR 하락 추세 - 탐색

    차트에 파일을 드래그 앤 드롭하여 Expert Advisor를 실행하면 다음과 같은 창이 열립니다.

    SAR 하락 추세 - 창

    "확인"을 누르면 다음 그림과 같이 차트에 Expert Advisor가 첨부됩니다.

    SAR 하락 추세 - 첨부

    그런 다음 이 전략의 신호가 테스트에서의 예와 같이 다음 그림과 같은 주석으로 차트에 표시됩니다.

    • 매도 신호:

    SAR 하락 추세 - 매도 신호

    • 수익 실현 신호:

    SAR 하락 추세 - TP 신호

    • 전략 3: 트레일링 스탑과 매수 신호:

    이 전략에서는 파라볼릭 SAR 값에 따라 차트에 나타나는 주석을 통해 차트의 매수 신호와 차트의 트레일링 스탑을 확인해야 합니다. 이때의 조건은 SAR 값이 저가 아래로 떨어지면 새로운 신호가 생성된다는 조건을 통해 가격과 트레일링 스탑을 확인합니다. 이 전략으로 거래 시스템을 설계하기 위한 코드는 다음과 같습니다:

    //+------------------------------------------------------------------+
    //|         Parabolic SAR System - Buy signal with training stop.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()
      {  
       //create an string variable for signal
       string signal="";
       
       //create a price array
       MqlRates PriceArray[];
       
       //sort array from the current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue < PriceArray[1].low)
       {
          signal="Buy";
       }
       
       //chart comment with the signal and trailing Stop
       Comment("The signal is ",signal,"\n", "Trailing Stop is ",SARValue);
      }
    //+------------------------------------------------------------------+
    • 차이점은 다음과 같습니다:
      • 차트에 주석으로 새 줄에 SAR 값과 같은 트레일링 스탑 값 추가:
    Comment("The signal is ",signal,"\n", "Trailing Stop is ",SARValue);

    이 코드를 컴파일한 후 탐색기에서 다음과 같은 Expert Advisor 파일을 찾을 수 있습니다.

    SAR 상승 추세 - 트레일링 스탑 정지가 있는 매수 신호 - 탐색

    이 Expert Advisor를 차트에 실행하려면 차트에 끌어다 놓으면 됩니다. 그러면 다음과 같은 창이 열립니다.

    SAR Uptrend - 트레일링 스탑이 있는 매수 신호 - 윈도우

    "확인"을 누르면 Expert Advisor가 다음과 같이 차트에 첨부됩니다.

    SAR 상승 추세 - 트레일링 스탑 정지가 있는 매수 신호 - 첨부

    다음 그림은 테스트에서 이 전략에 따라 생성된 신호의 예입니다.

    SAR 상승 추세 - 트레일링 스탑 스톱1이 있는 매수 신호

    다음 그림은 트레일링 스탑 값이 가격에 따라 어떻게 증가하는지 보여줍니다.

    SAR 상승 추세 - 트레일링 스탑 스톱 2가 있는 매수 신호

    • 전략 4: 트레일링 스탑 전략이 있는 매도 신호:

    이 전략에서는 파라볼릭 SAR 값에 따라 차트에 나타나는 주석을 통해 차트의 매도 신호와 차트의 트레일링 스탑을 확인해야 합니다. 이때의 조건은 SAR 값이 고가 위로 올라가게되면 새로운 신호가 생성된다는 조건을 통해 가격과 트레일링 스탑을 확인합니다. 이 전략으로 거래 시스템을 설계하기 위한 코드는 다음과 같습니다:

    //+-----------------------------------------------------------+
    //| Parabolic SAR System - Sell signal with trailing stop.mq5 |
    //| Copyright 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()
      {  
       //create an string variable for signal
       string signal="";
       
       //create a price array
       MqlRates PriceArray[];
       
       //sort array from the current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }
       
       //chart comment with the signal and trailing Stop
       Comment("The signal is ",signal,"\n", "Trailing Stop is ",SARValue);
      }
    //+------------------------------------------------------------------+
    • 차이점은 다음과 같습니다:
      • 매도 신호 조건:
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }

    코드를 컴파일한 후 탐색기에서 다음과 같은 Expert Advisor를 찾을 수 있습니다.

    SAR 하락 추세 - 트레일링 스탑 정지가 있는 매도 신호 - 탐색

    차트에서 파일을 드래그 앤 드롭하여 실행할 수 있습니다. 그러면 Expert Advisor 창이 나타납니다.

    SAR 하락 추세 - 트레일링 스탑 정지가 있는 매도 신호 - 창

    "확인"을 누르면 Expert Advisor가 연결됩니다:

    SAR 하락 추세 - 트레일링 스탑 정지가 있는 매도 신호 - 첨부

    다음 그림은 생성된 신호의 예입니다:

    SAR 하락세 - 트레일링 스탑 스톱1이 있는 매도 신호

    다음은 가격에 따라 트레일링 스탑이 줄어듬을 보여줍니다.

    SAR 하락 추세 - 트레일링 스탑 스톱2가 있는 매도 신호


    결론

    이제 지표가 무엇인지, 지표가 무엇을 측정하는지 배웠고 그 이면의 개념을 이해하기 위해 수동으로 계산하는 방법을 배웠고 파라볼릭 SAR 기술 지표에 대한 몇 가지 기본 사항을 자세히 배웠고 사용 방법을 배웠다고 말할 수 있습니다. 간단한 전략을 통해 거래 시스템을 만드는 데 도움이 되는 청사진을 설계하였으며 MQL5로 이러한 전략을 코딩하여 MetaTrader 5에서 실행하고 신호를 자동으로 정확하게 생성하는 방법을 배웠습니다.

    연습은 무엇이든 마스터하는 데 매우 중요한 요소이기 때문에 이러한 전략을 스스로 코딩하였기를 바랍니다. 배운 것을 더 많이 적용해 보십시오.

    이 기사가 유용하고 거래를 향상시키는 강력하고 유용한 통찰력을 얻는데 도움이 되었기를 바랍니다. 또한 기사의 주제나 관련 주제에 대한 새로운 아이디어에 눈을 뜨게 되었기를 바랍니다. 실제 계정에서 새로운 도구나 전략을 사용하여 거래의 결과를 향상시킬 수 있는지를 확인하기 전에 합리적인 기간 동안 새 도구나 전략을 테스트해야 함을 잊지 마십시오.


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

    Expert Advisor 개발 기초부터 (파트 9): 개념적 도약(II) Expert Advisor 개발 기초부터 (파트 9): 개념적 도약(II)
    이 기사에서는 차트 트레이드를 플로팅 창에 배치합니다. 이전 파트에서는 플로팅 창 내에서 템플릿을 사용할 수 있는 기본 시스템을 만들었습니다.
    Expert Advisor 개발 기초부터 (파트 8): 개념적 도약 Expert Advisor 개발 기초부터 (파트 8): 개념적 도약
    새로운 기능을 구현하는 가장 쉬운 방법은 무엇일까요? 이 글에서 우리는 한 걸음 뒤로 물러난 다음 두 걸음 앞으로 나아갈 것입니다.
    SQLite: MQL5로 SQL 데이터베이스의 처리 SQLite: MQL5로 SQL 데이터베이스의 처리
    트레이딩 전략을 개발하는 일은 많은 양의 데이터를 처리하는 것과 관련이 있습니다. 이제 MQL5에서 SQLite를 기반으로 하는 SQL 쿼리를 사용하여 데이터베이스로 작업할 수 있습니다. 이 엔진에서 중요한 점 전체 데이터베이스가 사용자의 PC에 있는 단일 파일에 저장된다는 것입니다.
    ADX 기반의 트레이딩 시스템을 설계하는 방법 알아보기 ADX 기반의 트레이딩 시스템을 설계하는 방법 알아보기
    이 기사에서는 간단한 거래 시스템을 설계하는 방법을 배우는 시리즈의 연속으로 새로운 기술 도구를 배울 것입니다. 이번에는 또 다른 인기 있는 기술 지표에 대해 알아볼 것입니다: 평균 실제 범위(ATR).