English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
스토캐스틱으로 거래 시스템 설계 하는 방법 알아보기

스토캐스틱으로 거래 시스템 설계 하는 방법 알아보기

MetaTrader 5트레이딩 | 22 8월 2022, 08:19
322 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

소개

기술적 분석을 통한 거래에서 가장 아름다운 것 중 하나는 우리에게는 많은 도구가 있고 하나의 도구를 개별적으로 사용하거나 둘 이상의 도구를 결합하여 사용할 수도 있다는 것입니다. 이렇게 하는 것이 우리에게 더 유용하고 수익성도 더 좋을 수 있습니다. 그 외에도 거래 결과와 성과를 높이는 데 도움이 될 수 있는 놀라운 도구들이 있습니다. 그 도구는 우리가 유용하고 도움이 되는 프로그램을 만들 수 있도록 하는 프로그래밍입니다: 설정한 조건에 따라 자동으로 정확하게 필요한 작업을 수행하도록 컴퓨터에 명령을 하는 것입니다.

이 기사는 기술적 거래 및 수익성 있는 거래 전략을 위한 프로그래밍의 맥락에서 무엇이 도움이 될 수 있는지 배우고 가르치려는 것과 관련된 것입니다. 우리는 이 기사를 통해 거래에 유용할 수 있는 새로운 도구이면서 기술적 분석을 사용하는 거래에서 가장 인기 있는 지표 중 하나인 "스토캐스틱 오실레이터" 지표에 대해 논의할 것입니다. 저의 다른 기사를 읽어 보시면 저는 모든 세부 사항과 사물이 작동하는 메커니즘을 최대한 이해하기 위해 사물의 뿌리를 배우고 가르치는 것을 좋아한다는 것을 아시게 되실 겁니다. 따라서 그러한 방법을 사용하여 이 주제에 대해 논의하도록 하겠습니다. 이 문서에서는 다음의 주제를 다룹니다.

    1. 스토캐스틱 정의
    2. 스토캐스틱 전략
    3. 스토캐스틱 청사진
    4. 스토캐스틱 거래 시스템
    5. 결론

      "스토캐스틱 정의"를 통해 스토캐스틱 오실레이터 지표가 무엇인지 무엇을 측정하는지에 대해 자세히 알아봅니다. 그런 다음 "스토캐스틱 전략"에서 사용할 수 있는 몇 가지 간단한 전략을 배웁니다. 그 후 우리는 이러한 간단한 전략에 대한 청사진을 설계하여 MQL5에서 코딩하는 데 도움이 되도록 하고 더 나아가 MetaTrader 5에서 사용할 수 있도록 할 것입니다. 이는 "스토캐스틱 청사진"에서 알아볼 것입니다. 그런 다음 "스토캐스틱 거래 시스템"에서 이러한 간단한 전략을 수행하는 거래 시스템을 설계하는 코드를 작성하는 방법을 계속 학습합니다.

      우리는 MetaTrader 5 거래 터미널과 MetaTrader 5에 내장된 MetaQuotes Language를 사용할 것입니다. 다음 링크에서 MetaTrader 5를 다운로드할 수 있습니다. https://www.metatrader5.com/en/download

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

      이제 우리는 새롭고 흥미로운 주제에 대한 새로운 여정을 시작할 것입니다.


      스토캐스틱 정의

      이 파트에서는 가장 인기 있는 기술 지표 중 하나인 스토캐스틱 오실레이터 지표에 대해 자세히 알아보겠습니다. George Lane이 개발했으며 Perry J. Kaufman의 "New Trading Systems and Methods"란 책에서 소개 되었습니다. 그러나 이에 대해 다른 의견이 있습니다. 그 중 하나는 누가 스토캐스틱 지표를 만들었는지 명확하지 않다는 것입니다. 이는 Charles D. Kirkpatrick과 Julie R.의 "Technical Analysis, Complete Resource for Financial Market Technicians" 책에 언급되어 있습니다. Dahlquist와 다른 의견은 John J. Murphy의 "Technical Analysis of Financial Markets" 책에 언급된 대로 George Lane이 이 지표를 대중화 했다는 것입니다.

      스토캐스틱 지표의 배경은 다음과 같습니다: 상승추세 동안 종가는 특정 기간 동안의 가격의 범위의 상단 부분에 더 가깝게 완성되는 경향이 있고 그 반대의 경우도 마찬가지라는 것입니다. 하락추세 동안 종가는 특정 기간 동안의 가격의 범위의 하단 부분에 더 가깝게 완성되는 경향이 있다는 것입니다. 스토캐스틱은 현재 종가와 특정 기간의 최고가 및 최저가 사이의 관계를 측정합니다.

      스토캐스틱 오실레이터 지표는 두 개의 라인으로 구성되며 이 두 라인은 0 레벨과 100 레벨 사이에서 진동합니다:

      • %K 라인은 가장 빠른 라인입니다.
      • %D 라인은 가장 느린 라인이며 매끄럽게 평활화 처리됩니다.

      스토캐스틱 오실레이터 지표는 두 가지 이상의 버전이 있습니다. 가장 인기 있는 버전은 다음 두 가지입니다:

      • 빠른 스토캐스틱.
      • 느린 스토캐스틱.

      Stochastic Oscillator 지표를 계산할 수 있는 방법들의 차이점을 살펴보겠습니다.

      다음은 스토캐스틱 오실레이터 지표를 계산하는 단계입니다:

      1. 지표를 계산하는 데 필요한 기간을 결정합니다.
      2. 결정된 기간의 가장 높은 값을 결정합니다.
      3. 결정된 기간의 가장 낮은 값을 결정합니다.
      4. 빠른 확률의 %K = 100*((현재 종가 - 저점 중 최저점)/(고점 중 최고점 - 최저 중 최저))
      5. 빠른 스토캐스틱의 %D 가져오기 = 빠른 스토캐스틱 %K의 이동 평균 3개
      6. 느린 스토캐스틱의 %K = 빠른 스토캐스틱의 %D
      7. 느린 스토캐스틱의 %D = (빠른 스토캐스틱의 %D인 느린 스토캐스틱의 %K)의 3 이동 평균 

      이제 이러한 계산을 적용하여 스토캐스틱 오실레이터 지표를 얻는 방법의 예를 살펴보겠습니다. 다음과 같은 데이터가 있다고 가정합니다:

      날짜 종가 고가 저가
      1 100 110 90
      2 130 140 120
      3 140 160 120
      4 130 150 110
      5 120 140 100
      6 140 150 130
      7 160 170 150
      8 170 180 160
      9 155 170 150
      10 140 170 130
      11 160 180 155
      12 180 190 175
      13 190 220 190
      14 200 230 200
      15 210 215 205
      16 200 200 190
      17 190 195 180
      18 185 105 180
      19 195 210 185
      20 200 220 190

      스토캐스틱 오실레이터 지표를 계산하기 위해 우리는 앞에서 언급한 단계를 따를 것이므로 다음을 수행합니다:

      • 기간을 14로 정하고 지표를 계산하려면 먼저 14 거래 기간이 필요합니다.
      • 지난 14개 기간의 고점의 최고점을 결정하면 (230)이 되며 다음 그림은 첫 번째 값과 나머지 데이터에 대한 값을 보여줍니다.

      14 최고 최고

      • 지난 14개 기간의 저점의 최저점을 결정하면 (90)이 되며 다음 그림은 첫 번째 값과 나머지 데이터에 대한 값을 보여줍니다:

      14 최저 최저

      • 빠른 스토캐스틱의 %K = 100*((현재 종가 - 저점 중 최저점)/(고점 중 최고점 - 저점 중 최저)) 
      • 빠른 스토캐스틱의 %D = 빠른 스토캐스틱 %K의 이동 평균 3개
      • 다음 그림은 위 데이터에 대한 계산 결과를 보여줍니다:

      Fast - K-D

      • 느린 스토캐스틱의 %K = 빠른 스토캐스틱의 %D
      • 느린 스토캐스틱의 %D = 느린 스토캐스틱 %K의 이동 평균 3개
      • 다음 그림은 위 데이터에 대한 계산 결과를 보여줍니다:

      Slow - K-D

      이와 같이 우리는 스토캐스틱 오실레이터 지표를 수동으로 계산했습니다. 다행히 MetaTrader5 거래 터미널에는 바로 사용할 수 있는 내장 된 지표가 있으므로 매번 수동으로 계산할 필요는 없습니다. 다음 그림과 같이 MetaTrader 5에서 삽입 탭을 클릭한 후 사용 가능한 지표 목록에서 간단히 선택할 수 있습니다.

      스토치 인서트

      "스토캐스틱 오실레이터"를 선택하면 지표의 매개변수가 있는 다음과 같은 창이 열립니다.

       Stoch 삽입 창

      지표의 매개변수:

      1. 기간을 선택합니다.
      2. 빠른 %D의 이동 평균 기간을 선택합니다.
      3. 느린 %D의 이동 평균 기간을 선택합니다.
      4. 관련성을 측정하기 위해 가격을 선택합니다.
      5. 계산에 사용할 이동 평균의 유형을 선택합니다.
      6. %K의 선 색상, 선 스타일 및 선 두께를 선택합니다.
      7. %D의 선 색상, 선 스타일 및 선 두께를 선택합니다.

      매개변수를 선택하면 지표가 차트에 첨부되고 다음 그림과 같이 보입니다:

      상의 Stoch차트 상의 Stoch

      스토캐스틱 오실레이터를 삽입한 후 이전 그림에 따라 0과 100 사이에서 진동하는 2개의 라인(%K, %D)이 아래쪽 창에 표시됩니다:

      • Stoch(14, 3,3): 지표의 이름과 선택한 매개변수를 나타냅니다. 14개 기간, 빠른 스토캐스틱 %D의 이동 평균에 대해 3개, 빠른 스토캐스틱 %D의 이동 평균에 대해 3개.
      • 36.85: %k 값을 나타냅니다.
      • 38.28: %D 값을 나타냅니다.

      스토캐스틱 오실레이터 지표의 계산에 따르면 지표는 특정 형태를 띄며 시장의 방향으로 움직입니다. 대부분의 경우 종가는 특정 기간 동안의 가격의 범위에서 상단과 하단에 가까워지는 경향이 있습니다.

      상승세 중:

      상승 추세는 매수자 또는 상승세가 주도하며 이에 따라 가격이 상승하는 시장입니다. 보통은 가격이 더 높은 저점과 더 높은 고점을 만듭니다. 이 경우 우리는 이 시장을 강세 시장이라고 부를 수 있을 것입니다.

      우리는 이 강세장에서 대부분의 경우 종가가 "상승 추세"의 기간 동안 가격 변동 범위의 상단 근처에서 형성 되는 경향이 있고 스토캐스틱 지표가 50 수준에서 100 수준 사이에서 진동한다는 것을 알 수 있습니다. 이러한 상황의 예는 다음 그림에 나와 있습니다:

      스토캐스틱 상승 중 스토캐스틱

      하락세 동안:

      하락 추세는 매도자 또는 하락세가 주도를 하며 이에 따라 가격이 하락하는 시장입니다. 가격은 더 낮은 고점과 더 낮은 저점을 만듭니다. 이 경우 우리는 이 시장을 약세 시장이라고 부를 수 있을 것입니다.

      이 시장에서 대부분의 경우 종가는 해당 "하향 추세" 기간 동안 가격 변동의 더 낮은 범위 근처에서 마감되는 경향이 있습니다. 따라서 우리는 하락세의 기간동안 스토캐스틱 지표는 50 레벨과 0 레벨 사이에서 움직이는 것을 알 수 있습니다. 이러한 상황의 예는 다음 그림에 나와 있습니다:

      중 스토캐스틱 하락 추세 중 스토캐스틱

      횡보:

      횡보(sideways)는 가격이 위 또는 아래쪽으로의 명확한 방향이 없이 움직이는 경우입니다. 매수자와 매도자 또는 강세와 약세 사이의 균형으로 간주될 수 있습니다. 이는 상승추세와 하락추세를 제외한 모든 움직임을 말합니다.

      횡보 동안에는 명확하게 상방 또는 하방으로의 움직임이 보이지 않습니다. 가격은 "옆으로" 그 움직임의 기간 동안 가격의 중간 범위의 근처에 가까워지는 경향이 있으므로 대부분의 경우 스토캐스틱이 20과 80의 주변에서 움직입니다. 다음 그림이 이에 대한 예입니다.

      스토캐스틱 횡보 중 스토캐스틱

      우리는 시장의 다양한 움직임에서 스토캐스틱 지표가 어떻게 움직이는지 분석했습니다. 이제 우리는 그것을 우리에게 유리하게 사용하는 방법을 배워볼 차례입니다.


      스토캐스틱 전략

      이 부분에서는 간단한 전략을 통해 이 지표를 사용하는 방법에 대해 설명합니다. 우리는 시장의 추세에 따라 스토캐스틱 지표로 부터 신호를 받을 수 있습니다. 이들 전략은 상승추세 전략, 하락추세 전략, 횡보 전략입니다.

      • 전략 1: 상승 추세 전략

      이 전략에 따르면 %K선과 %D선이 50선 아래에 있는지 확인하고 %K선이 %D선을 상방 교차할 때 매수 신호가 발생합니다. 가격의 움직임을 확인하는 것과 같은 효과적인 수단을 활용하여 이익을 얻을 수 있습니다. 예를 들어 저가 중 최저가를 찾아 보는 방식과 같은 것입니다.

      %K, %D < 50 --> %K > %D = 매수 신호
        • 전략 2: 하락세 전략

        이 전략에 따르면 %K선과 %D선이 50선 위에 있는지 확인하고 %K선이 %D선을 하방 교차할 때 매도 신호가 발생합니다. 가격의 움직임을 확인하는 것과 같은 효과적인 수단을 활용하여 이익을 얻을 수 있습니다. 예를 들어 고가 중 최고가를 찾아 보는 방식과 같은 것입니다.

        %K, %D > 50 --> %K < %D = 매도 신호
          • 전략 3: 횡보 전략
            • 매수 신호:

          이 전략에 따르면 %K선과 %D선이 20선 아래에 있는지 확인하고 %K선이 %D선을 상방 교차할 때 매수 신호가 발생합니다. %K선과 %D선이 80 이상일 때 %K선이 %D선 아래로 교차할 때 이익실현 신호가 발생합니다.

          %K, %D < 20 --> %K > %D = 매수 신호
          %K, %D > 80 --> %K < %D = 이익 실현

              • 매도 신호

                이 전략에 따르면 %K선과 %D선이 80선 위에 있는지 확인하고 %K선이 %D선을 하방 교차할 때 매도 신호가 발생합니다. %K선과 %D선이 20 이하일 때 그리고 %K선이 %D선 위로 교차할 때 이익실현 신호가 발생합니다.

                %K, %D > 80 --> %K < %D = 매도 신호
                %K, %D < 20 --> %K > %D = 이익 실현

                간단한 전략에서 복잡한 전략까지 사용할 수 있는 스토캐스틱을 활용한 전략이 많이 있으며 이 지표는 개별적으로 사용하거나 더 나은 결과를 제공할 수 있는 방식으로 다른 도구와 결합하여 사용할 수 있지만 여기서는 간단한 전략만 다룹니다.


                  스토캐스틱 청사진

                  이 부분에서 우리는 이러한 전략을 사용하는 거래 시스템을 쉽게 만드는 데 도움이 되는 시스템 개발 청사진을 설계할 것입니다. 이 청사진은 프로그램이 수행해야 하는 작업을 정확하게 하기 위한 단계별 지침이 될 것입니다.

                  • 전략 1: 상승세 전략

                  %K, %D < 50 --> %K > %D = 매수 신호

                  먼저 프로그램이 (%K, %D)를 확인하고 50 레벨 미만인지 또는 초과인지 결정해야 합니다. 그런 다음 50 레벨 미만이면 매수 신호를 보내기 위해 %K 라인이 %D를 상향 교차 할 때까지 아무 것도 하지 않을 것입니다. (%K, %D)가 50 레벨 이상인 경우 프로그램은 아무 작업도 수행하지 않습니다.

                  다음 그림은 이 상승세 전략의 청사진입니다.

                  상승세 전략 청사진

                  • 전략 2: 하락세 전략

                  %K, %D > 50 --> %K < %D = 매도 신호

                  먼저 프로그램이 (%K, %D)를 확인하고 50 레벨 미만인지 또는 초과인지 결정해야 합니다. 그런 다음 50 레벨 미만이면 매도 신호를 보내기 위해 %K 라인이 %D를 하방 교차 할 때까지 아무 것도 하지 않을 것입니다. (%K, %D)가 50 레벨 이하인 경우 프로그램은 아무 작업도 수행하지 않습니다.

                  다음 그림은 이 전략의 청사진을 보여줍니다:

                  하락 추세 전략 청사진

                  • 전략 3: 횡보 전략

                  매수 신호:

                  %K, %D < 20 --> %K > %D = 매수 신호

                  %K, %D > 80 --> %K < %D = 이익 실현

                  먼저 프로그램이 (%K, %D)를 확인하고 20 레벨 미만인지 또는 초과인지 결정해야 합니다. 그런 다음 20 레벨 미만이면 매수 신호를 보내기 위해 %K 라인이 %D를 상향 교차 할 때까지 아무 것도 하지 않을 것입니다. (%K, %D)가 20 레벨 이상인 경우 프로그램은 아무 작업도 수행하지 않습니다. 먼저 프로그램이 (%K, %D)를 확인하고 80 레벨 미만인지 또는 초과인지 결정해야 합니다. 그런 다음 80 레벨 이상이면 매수 신호를 보내기 위해 %K 라인이 %D를 하방 교차 할 때까지 아무 것도 하지 않을 것입니다. (%K, %D)가 80 레벨 이하인 경우 프로그램은 아무 작업도 수행하지 않습니다.

                  다음 그림은 이 전략의 청사진을 보여줍니다:

                  SSS- 옆 방향 전략 - 청사진 구매

                  매도 신호:

                  %K, %D > 80 --> %K < %D = 매도 신호

                  %K, %D < 20 --> %K > %D = 이익 실현

                  먼저 프로그램이 (%K, %D)를 확인하고 80 레벨 미만인지 또는 초과인지 결정해야 합니다. 그런 다음 80 레벨 이상이면 매도 신호를 보내기 위해 %K 라인이 %D를 하방 교차 할 때까지 아무 것도 하지 않을 것입니다. (%K, %D)가 80 레벨 이하인 경우 프로그램은 아무 작업도 수행하지 않습니다. 먼저 프로그램이 (%K, %D)를 확인하고 20 레벨 미만인지 또는 초과인지 결정해야 합니다. 그런 다음 20 레벨 이상이면 매수 신호를 보내기 위해 %K 라인이 %D를 상방 교차 할 때까지 아무 것도 하지 않을 것입니다. (%K, %D)가 20 레벨 이상인 경우 프로그램은 아무 작업도 수행하지 않습니다.

                  다음 그림은 횡보 전략의 이 매도 신호에 대한 청사진입니다.

                  SSS- 옆 방향 전략 - 청사진 판매

                  지금까지 우리는 스토캐스틱 지표에서 사용할 수 있는 간단한 전략을 고려했으며 이러한 전략을 위한 청사진을 설계하여 거래 시스템을 만드는 데 도움이 되도록 하였습니다. 다음 파트에서는 이 거래 시스템을 설계하는 방법을 배웁니다.


                  스토캐스틱 거래 시스템

                  이제 이러한 전략으로 작동하는 거래 시스템을 코딩하는 방법을 배우는 것에 대해 알아 봅니다. 이 흥미로운 부분을 이제 시작하겠습니다. 프로그래밍은 실행의 정확성 외에도 거래와 관련한 결정을 하는데 감정을 포함하지 않고 정해진 방식으로 계획과 전략을 실행하는 데 도움이 됩니다. 그러므로 효과적으로 거래하는 데 도움이 되는 훌륭한 도구이지만 가장 중요한 것은 사전에 모든 전략을 테스트하는 것입니다. 앞서 논의한 전략에 따라 거래 시스템을 만들어 보겠습니다...

                  먼저 차트에 스토캐스틱 라인의 값을 나타내 주는 프로그램의 코드를 작성해야 하며 이 코드를 작성함으로써 이 단계 이후에 트레이딩 시스템을 이해하고 시스템이 작동되도록 하는 내용을 하나하나 배울 것입니다.

                  첫 번째 단계에서는 %K 라인과 %D 라인의 배열을 생성하며 소수 부분이 있는 값을 표시하는 "double"을 사용할 것입니다.

                  double Karray[];
                  double Darray[];
                  
                  

                  그런 다음 생성된 데이터에서 배열을 정렬해야 하며 "ArraySetAsSerious" 함수를 사용합니다:

                  ArraySetAsSeries(Karray, true);
                  ArraySetAsSeries(Darray, true);
                  

                  그런 다음 "스토캐스틱" 지표를 정의해야 하며 "Stochastic" 정의와 같은 "StochDef"와 변수를 생성한 후 "iStochastic" 함수를 사용합니다:

                  int StochDef = iStochastic(_Symbol,_Period,14,3,3,MODE_SMA,STO_LOWHIGH);

                  그런 다음 가격 데이터로 배열을 채우고 "CopyBuffer" 기능을 사용합니다.

                  CopyBuffer(StochDef,0,0,3,Karray);
                  CopyBuffer(StochDef,1,0,3,Darray);
                  
                  

                  그런 다음 현재 데이터의 %K 라인과 %D 라인의 값을 계산하고 "float"를 사용하여 분수의 크기를 줄이고 근사화되도록 합니다.

                  float KValue = Karray[0];
                  float DValue = Darray[0];
                  
                  

                  마지막 코드 라인은 프로그램이 차트의 %K 라인의 값과 %D 라인의 값을 두 줄로 표시합니다. "Comment" 함수를 사용합니다:

                  Comment("%K value is ", KValue,"\n""%D Value is ",DValue);

                  다음 코드는 이전의 코드와 동일하지만 필요한 경우 한 번에 복사할 수 있도록 한 블록에 있습니다:

                  //+------------------------------------------------------------------+
                  //|                       Simple Stochastic System - Lines Value.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 for %K line and %D line   
                     double Karray[];
                     double Darray[];
                     
                  //sorting arrays from the current data   
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                  
                  //defining the stochastic indicator   
                     int StochDef = iStochastic(_Symbol,_Period,14,3,3,MODE_SMA,STO_LOWHIGH);
                  
                  //filling arrays with price data   
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                  
                  //calculating value of %K and %D line of cuurent data  
                     float KValue = Karray[0];
                     float DValue = Darray[0];
                     
                  //commenting calcualted values on the chart   
                     Comment("%K value is ",KValue,"\n"
                     "%D Value is ",DValue);
                        
                    }
                  //+------------------------------------------------------------------+
                  

                  지금까지 우리는 스토캐스틱 지표 라인의 현재 값을 차트에 표시할 수 있는 프로그램의 코드를 작성했으며 이제 컴파일 후 Meta Trader5인 거래 터미널에서 이 프로그램을 실행해야 합니다. 지표는 이제 탐색기 창에서 찾을 수 있을 것입니다.

                  탐색 1

                  Simple Stochastic System - Lines Value의 파일을 끌어다 놓으면 다음과 같은 창이 열립니다:

                  SSS 라인 값 창


                  확인을 누르면 아래 그림과 같이 프로그램 또는 (Expert Advisor)가 차트에 첨부됩니다:

                  SSS 라인 값 첨부

                  그러면 프로그램이 아래 그림과 같이 스토캐스틱 라인의 값을 생성하는 것을 볼 수 있습니다:

                  SSS- 라인 값

                  이제 우리는 우리의 전략을 실행하는 거래 시스템을 만드는 코드를 작성하기 시작할 것입니다. 여기서 우리가 해야 할 일은 전략에 따라 차트에 주석으로 적절한 신호를 표시할 수 있는 거래 시스템을 만드는 것입니다. 이제 시작해 봅시다...

                  • 전략 1: 상승세 전략

                  %K, %D < 50 --> %K > %D = 매수 신호

                  다음 코드는 이 상승세 전략에 따라 우리가 필요로 하는 것들을 실행하는 거래 시스템을 만들기 위한 것입니다

                  //+------------------------------------------------------------------+
                  //|                  Simple Stochastic 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()
                    {
                     string signal="";
                     
                     double Karray[];
                     double Darray[];
                     
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                     
                     int StochDef = iStochastic(_Symbol,_Period,14,3,3,MODE_SMA,STO_LOWHIGH);
                     
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                     
                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];
                     
                     if (KValue0<50&&DValue0<50)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "BUY";
                        }      
                        
                     Comment("SSS - Uptrend Strategy - Signal is ",signal);
                        
                    }
                  //+------------------------------------------------------------------+
                  

                  여기서 볼 수 있듯이 차이점은 다음과 같습니다:

                  "신호"에 대한 변수를 비어 있게 만들었습니다. 이 부분은 나중에 계산 할 것이기 때문입니다:

                  string signal="";

                  현재 데이터 및 이전 데이터에 대해 %K 값(0,1)에 대한 두 개의 변수와 %D 값(0,1)에 대한 두 개의 변수를 생성했습니다.

                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];
                  

                  상방으로의 교차가 필요하므로 %K와 %D 사이의 교차를 평가하려면, 즉 이 교차 이후에 위로 이동하려면 %K가 %D를 상방으로 돌파하여야 하며 이것은 라인 코드의 “if”에서 찾을 수 있습니다:

                     if (KValue0<50&&DValue0<50)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "BUY";
                        }      
                        
                  

                  교차를 확인한 후 그러한 교차가 사실이라면 "매수" 신호가 필요하고 이것이 "신호"에 할당 될 것입니다. 그런 다음 차트에 이 신호가 포함된 주석이 필요하며 이는 다음 코드 행에 의해 이루어집니다.

                  Comment("SSS - Uptrend Strategy - Signal is ",signal);

                  이제 우리는 프로그램의 코드를 생성했고 컴파일 후에 탐색기 창에서 찾을 수 있습니다:

                  탐색 2

                  이 파일을 차트에 끌어다 놓으면 다음 창이 나타납니다.

                   SSS-상승 추세 창


                  확인을 누르면 다음과 같이 첨부됩니다:

                  SSS-Uptrend 첨부

                  테스트하는 동안 신호는 다음의 예시와 동일하게 나타납니다:

                  SSS - 상승세 - 매수

                  • 전략 2: 하락세 전략

                  %K, %D > 50 --> %K < %D = 매도 신호

                  다음은 이 하락세 전략을 실행하기 위한 프로그램을 작성하기 위한 것입니다:

                  //+------------------------------------------------------------------+
                  //|                Simple Stochastic 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()
                    {
                     string signal="";
                     
                     double Karray[];
                     double Darray[];
                     
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                     
                     int StochDef = iStochastic(_Symbol,_Period,5,3,3,MODE_SMA,STO_LOWHIGH);
                     
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                     
                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];
                           
                     if (KValue0>50&&DValue0>50)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "SELL";
                        }
                        
                     Comment("SSS - Downtrend Strategy - Signal is ",signal);
                        
                    }
                  //+------------------------------------------------------------------+
                  

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

                  • 교차의 조건

                     if (KValue0>50&&DValue0>50)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "SELL";
                        }
                        
                  

                  • 이 전략에 따른 주석:

                     Comment("SSS - Downtrend Strategy - Signal is ",signal);

                  컴파일 후 탐색기 창에서 이 프로그램의 파일을 찾을 수 있습니다.

                  탐색 3

                  이 파일을 차트에 끌어다 놓으면 다음 창이 열립니다.

                  SSS-하향 추세 창

                  확인을 누르면 파일이 차트에 첨부됩니다.

                  SSS-Downtrend 첨부 

                   신호는 이 전략의 조건에 따라 차트에 주석으로 표시되며 다음 그림이 그 예입니다:

                  SSS - 하락세 - sel

                  • 전략 3: 횡보 전략
                    • 매수 신호:

                  %K, %D < 20 --> %K > %D = 매수 신호

                  %K, %D > 80 --> %K > %D = 이익 실현

                  다음 코드는 이 횡보 전략을 실행할 수 있는 프로그램을 만들기 위한 것입니다.

                  //+------------------------------------------------------------------+
                  //|           Simple Stochastic System - Sideways - Buy 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()
                    {
                     string signal="";
                     
                     double Karray[];
                     double Darray[];
                     
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                     
                     int StochDef = iStochastic(_Symbol,_Period,5,3,3,MODE_SMA,STO_LOWHIGH);
                     
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                     
                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];
                     
                     if (KValue0<20&&DValue0<20)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "BUY";
                        }      
                        
                     Comment("SSS - Sideways - Buy Strategy - Signal is ",signal);
                     
                      if (KValue0>80&&DValue0>80)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "Take Profit";
                        }
                        
                     Comment("SSS - Sideways - Buy Strategy - Signal is ",signal);  
                        
                    }
                  //+------------------------------------------------------------------+
                  

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

                  • 횡보 전략의 매수 신호에 따른 교차 조건:

                     if (KValue0<20&&DValue0<20)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "BUY";
                        }      
                        
                  

                  • 횡보 전략의 매수 신호에 따른 주석:

                     Comment("SSS - Sideways - Buy Strategy - Signal is ",signal);

                  • 횡보 전략의 이익실현 신호 조건:

                      if (KValue0>80&&DValue0>80)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "Take Profit";
                        }
                        
                  

                  • 횡보 전략의 이익실현 신호에 따른 주석:

                     Comment("SSS - Sideways - Buy Strategy - Signal is ",signal);

                  컴파일 후 이 거래 시스템의 파일이 탐색기 창에 나타납니다:

                  탐색 4

                  차트에 파일을 끌어다 놓으면 다음과 같은 창이 열립니다:

                  SSS-Sideways - 구매 - 창

                  확인을 누르면 파일이 차트에 첨부됩니다.

                  SSS-Sideways - 구매 - 첨부

                  신호는 이 전략에 따라 차트에 주석으로 표시됩니다. 다음 그림은 그러한 신호의 예를 보여줍니다:

                  SSS-Sideways - 구매 - 창

                  “이익 실현” 신호의 예:

                  SSS - 측면 - 매수 - TP

                    • 횡보 전략: 매도 신호

                  %K, %D > 80 --> %K < %D = 매도 신호

                  %K, %D < 20 --> %K > %D = 이익 실현 신호

                  다음은 이 전략을 실행하는 프로그램의 코드를 작성하는 방법입니다:

                  //+------------------------------------------------------------------+
                  //|          Simple Stochastic System - Sideways - Sell 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()
                    {
                     string signal="";
                     
                     double Karray[];
                     double Darray[];
                     
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                     
                     int StochDef = iStochastic(_Symbol,_Period,5,3,3,MODE_SMA,STO_LOWHIGH);
                     
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                     
                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];  
                     
                      if (KValue0>80&&DValue0>80)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "SELL";
                        }
                        
                     Comment("SSS - Sideways - Sell Strategy - Signal is ",signal);  
                     
                     if (KValue0<20&&DValue0<20)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "TAKE PROFIT";
                        }         
                     Comment("SSS - Sideways - Sell Strategy - Signal is ",signal);  
                    }
                  //+------------------------------------------------------------------+
                  
                  

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

                  • 횡보 전략에서 매도 신호에 따른 교차 조건:
                      if (KValue0>80&&DValue0>80)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "SELL";
                        }
                  
                  • 횡보 전략에서 매도 신호에 따른 주석:
                     Comment("SSS - Sideways - Sell Strategy - Signal is ",signal);  
                  • 횡보 전략에서 이익실현 신호 조건:
                     if (KValue0<20&&DValue0<20)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "TAKE PROFIT";
                        }   
                  
                  • 횡보 전략에서 이익실현 신호에 따른 주석: 
                     Comment("SSS - Sideways - Sell Strategy - Signal is ",signal);  

                  컴파일 후 이 거래 시스템의 파일이 탐색기 창에 나타납니다:

                  탐색 5

                  이 파일을 차트에 끌어다 놓으면 다음 창이 열립니다.

                  SSS-Sideways - 구매 - 창

                  확인을 누르면 프로그램이 차트에 첨부되어 신호를 생성할 준비가 됩니다.

                  SSS-Sideways - 판매 - 첨부

                  다음 그림은 이 전략에 따라 생성된 매도 신호의 예입니다:

                  SSS-Sideways - 구매 - 창

                  다음 그림은 이 전략에 따라 생성된 이익실현 신호의 예입니다:

                  SSS-Sideways - 구매 - 창

                  결론

                  이상과 같이 우리는 거래 세계에서 가장 인기있는 지표 중 하나 인 "스토캐스틱 오실레이터" 기술적 지표를 사용하여 간단한 거래 시스템을 만드는 방법에 대한 기본 사항을 배웠습니다. "스토캐스틱 오실레이터" 지표가 무엇인지, 무엇을 측정하는지, 어떻게 계산하는지에 대해 이해하셨기를 바랍니다. - 우리는 이에 대해 자세히 알아보았습니다. 사용할 수 있는 몇 가지 간단한 전략을 학습하며 스토캐스틱 지표를 사용하는 방법에 대한 새로운 정보를 얻으셨기를 바랍니다. 또한 이 기사에서 저는 간단한 전략에 대한 거래 시스템을 구축할 수 있는 시스템 제작 청사진을 제시했습니다. 또한 이러한 간단한 전략을 기반으로 거래 시스템을 설계하는 방법을 알아봤습니다.

                  이 기사가 귀하와 귀하의 거래에 유용하고 가장 인기 있으면서도 유용한 지표 중 하나인 "스토캐스틱 오실레이터"에 대한 통찰력을 제공하여 새로운 아이디어를 찾는 데 도움이 되기를 바랍니다.

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

                  데이터 과학 및 기계 학습(파트 02): 로지스틱 회귀 데이터 과학 및 기계 학습(파트 02): 로지스틱 회귀
                  데이터 분류는 알고리즘 트레이더와 프로그래머에게 중요합니다. 이 기사에서 우리는 예 또는 아니오, 상방 또는 하방, 매수 또는 매도를 식별하는 데 도움이 될 수 있는 분류 로지스틱 알고리즘 중 하나에 초점을 맞출 것입니다.
                  데이터 과학 및 기계 학습(파트 01): 선형 회귀 데이터 과학 및 기계 학습(파트 01): 선형 회귀
                  이제 우리는 트레이더로서 우리의 시스템과 우리 자신이 숫자가 나타내는 것에 따라 결정을 내리도록 훈련해야 할 때입니다. 우리의 눈과 우리의 직감이 우리에게 확신을 주는 것이 아닙니다. 세상은 그렇게 흘러 가는 것이니 파도의 방향에 맞서 봅시다.
                  이동 평균으로 할 수 있는 것 이동 평균으로 할 수 있는 것
                  이 기사에서는 이동 평균 지표를 적용하는 몇 가지 방법에 대해 살펴봅니다. 곡선 분석과 관련된 각각의 방법에는 아이디어를 시각화 하는 지표가 수반됩니다. 대부분의 경우 여기에서 다루는 아이디어는 존경받는 저자들의 것입니다. 저의 유일한 임무는 그것들을 모아 여러분이 주요한 접근 방식에 대해 알아보고 더 합리적인 거래 결정을 내릴 수 있도록 하는 것이었습니다. MQL5 숙련도 수준 - 기본.
                  MACD을 기반으로 한 거래 시스템을 설계하는 방법 배우기 MACD을 기반으로 한 거래 시스템을 설계하는 방법 배우기
                  이 기사에서는 이 시리즈에서 새로운 도구를 배웁니다: 가장 인기 있는 기술 지표 중 하나인 MACD(Moving Average Convergence Divergence)를 기반으로 하는 거래 시스템을 설계하는 방법을 배웁니다.