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

Bollinger Bands 기반의 트레이딩 시스템 설계 방법에 대해 알아보기

MetaTrader 5트레이딩 | 15 6월 2022, 16:05
380 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

소개

트레이딩의 세계에는 거래 목표를 달성하기 위해 사용할 수 있는 많은 유용한 도구와 방법이 있습니다. 이러한 도구는 시장의 조건이나 시장의 상황에 따라 선택됩니다. 

그러한 방법 중 하나가 밴드 거래입니다. 밴드 거래의 주요 개념은 그어진 두 밴드의 사이에서 거래를 하면서 밴드가 주는 혜택을 누리는 것입니다. 이러한 도구 중 하나가 볼린저 밴드 지표입니다. 이 지표는 기술적 분석과 트레이딩에서 가장 널리 사용되고 가장 일반적으로 사용되는 지표 중 하나입니다.

이 기사에서는 이 볼린저 밴드 지표와 관련한 정보를 공유하며 이것이 무엇인지, 어떻게 계산하는지 어떻게 사용할 수 있는지에 대한 이해를 높일 것입니다. 그 이후에는 여러분은 여러분의 전략에 따라 원하는 방식으로 사용할 수 있을 것입니다. 이후 이 볼린저 밴드 지표를 정확하고도 쉬운 방법으로 사용하여 트레이딩 시스템을 설계하는 방법을 알려 드리겠습니다. 우리는 다음의 주제들을 다룰 것입니다.

    1. 볼린저 밴드 정의
    2. 볼린저 밴드 전략
    3. 볼린저 밴드 전략 시스템 설계
    4. 결론
    5. 참조

      볼린저 밴드는 평균 주변의 데이터의 분산을 측정합니다. 이 지표는 John Bollinger가 만들었습니다. 평균(20일 이동 평균)을 중심으로 데이터(가격)의 분산을 측정하기 위해 20일 이동 평균선의 위 아래에 위치하는 두 개의 밴드로 구성됩니다. 

      볼린저 밴드 지표는 가격을 둘러싼 두 개의 밴드가 있기 때문에 엔벨롭스(Envelopes) 지표와 같은 것으로 보일 수 있습니다. 그러나 그렇지 않습니다. 볼린저 밴드와 엔벨롭스(Envelopes)의 차이점은 볼린저 밴드 지표가 이동 평균에 대해 고정된 백분율로 배치되는 것이 아니라는 점입니다. 볼린저 밴드는 이동 평균의 표준 편차에 따라 그 주변에서 확장되거나 축소되게 됩니다. 이에 대해서는 볼린저 밴드 정의 섹션이나 토픽에서 다른 세부 사항들과 함께 알아볼 것입니다.

      우리는 또한 볼린저 밴드 전략 섹션에서 볼린저 밴드의 일부 전략을 통해 우리의 거래에서 유익한 방식으로 사용하는 방법을 배울 것입니다.

      그런 다음 이 기사의 가장 흥미로운 부분으로 넘어가겠습니다. 알고리즘 거래 시스템에서 이러한 전략을 정확하고 신뢰할 수 있는 방식으로 사용하는 방법은 볼린저 밴드 전략 기초 섹션과 볼린저 밴드 전략 시스템 디자인 섹션에서 알아볼 것입니다.


      참고:

      • 이 기사의 모든 코드는 MQL5로 작성되며 MetaTrader 5에서 실행됩니다.
      • 여기서 배우는 내용을 연습하고 향상시키려면 코드를 직접 작성하고 실행해 보는 것이 좋습니다.
      • 따라서 코드를 실행하려면 MetaTrader 5 터미널이 필요하고 코드를 작성하려면 MQL5의 MetaEditor가 필요합니다. 다음의 그림과 같이 말입니다.

      여러분의 디바이스에 MetaTrader 5를 다운로드하여 설치하십시오. 다음의 링크에서 다운로드할 수 있습니다. https:// www.metatrader5.com/en/download. 그 후에 MetaTrader 5 창이 다음 그림과 같이 나타날 것입니다.

      MT5 플랫폼


      MetaTrader 5 터미널을 열고 F4를 눌러 MetaEditor를 열거나 도구 탭에서 MetaQuotes 언어 편집기를 선택할 수 있습니다. 다음 그림은 MetaEditor를 열어 MetaTrader 5에서 코드를 작성하는 방법을 보여줍니다.

      메타에디터 오프닝 1


      메타에디터 오프닝 2

      아래의 그림은 열려 있는 MetaEditor 창을 보여줍니다. 

      메타에디터 창


      다음 그림은 코드를 작성하기 위해 새 파일을 만드는 방법을 보여줍니다.

      메타에디터 - 새 파일

      1. Expert Advisor를 작성하려면 새 파일을 엽니다.
      2. 사용자 작성 지표를 만드려면 새 파일을 엽니다.
      3. 새 파일을 열어 스크립트를 작성합니다.

      자세한 내용은 다음 링크를 통해 이전 기사에서 찾아 볼 수 있습니다. https://www.mql5.com/ko/articles/10293

      저는 항상 말합니다. 프로그래밍이나 코딩은 자동으로 정확한 동작으로 수행되며 우리의 삶을 쉽고 매끄럽게 만드는 놀라운 도구입니다. 따라서 삶의 다양한 영역에서 원하는 목표를 달성하기 위해 적절한 방식으로 프로그래밍과 코딩을 사용하는 방법을 배우는 것이 중요합니다.
      이를 트레이딩과 관련해서 보면 여러분이 하고 싶은 일을 컴퓨터에게 하라고 지시를 하고여러분이 원하는 시간에 어떠한 일을 하라고 하면 컴퓨터는 이에 대해 틀림없이 그렇게 할 것입니다. 이렇게 여러분의 삶에 필요한 무엇이든 할 수 있는 것입니다. 그것은 놀라운 생활 방식입니다. 따라서 스스로 코딩을 하거나 다른 사람에게 맡기더라도 코딩과 프로그래밍에 관심을 갖게 하는 것이 이 글의 중요한 목표가 될 것입니다.

      면책

      이 글의 모든 내용은 오직 교육 목적으로만 작성된 것입니다. 따라서 이 글의 내용은 어떠한 결과도 보장하지 않으므로 이 글의 내용에 근거하여 취하는 모든 행동에 대한 책임은 여러분에게 있습니다.

      이제 이 흥미로운 주제와 지표에 대해 자세히 알아보기 위해 기사 섹션을 살펴보겠습니다.

      볼린저 밴드 정의

      밴드 거래 아이디어의 역사는 길고 흥미롭고 많은 방법으로 활용됩니다. 밴드 거래는 주로 추세의 측정과 그 위와 아래에 밴드를 구성하는 것을 기반으로 합니다. 

      예를 들어 엔벨롭스나 백분율만큼 위아래로 이동한 이동 평균 자체를 사용할 수 있습니다. 또한 추세의 전환 지점을 감지하기 위해 가격의 위와 아래에 두 개의 평행선인 채널이 있습니다. 그러나 이러한 모든 방법은 고정되어 있으며 가격 변동에 따라 반응하지 않습니다. 다시말해 가격의 변동에 따라 확장되거나 축소되지 않습니다.

      그러나 볼린저 밴드는 특정 계산을 통해 그렇게 할 수 있습니다. 이제 지표 계산의 세부 사항에 대해 알아 보겠습니다.

      다음 그림은 엔벨롭스 지표의 예와 이 지표가 가격에 표시되는 방식을 보여줍니다:

      EURUSDH1 - 엔벨롭스

      앞의 그림에서 봤듯이 가격을 둘러싸고 있는 두 개의 밴드가 있습니다. 아래쪽 밴드는 가격을 아래에서 둘러싸고 위쪽의 밴드는 위쪽에서 가격을 둘러쌉니다. 여기서 우리가 알아야 할 주요 아이디어는 가격의 히스토리에 기반한 밴드 거래를 하는 많은 방식이 있으며 이 중 가장 일반적인 것이 백분율 밴드라는 것입니다. 

      또한 밴드 거래와 관련한 많은 발전이 있었습니다. 이러한 밴드 거래에서 일어난 발전 중 하나가 볼린저 밴드 지표입니다. 볼린저 밴드는 밴드의 계산 방식에 의해 밴드의 확장 및 축소가 가능하다는 점에서 앞서 언급한 다른 방법들과 구별됩니다.

      볼린저 밴드 지표는 1980년대 초 금융 시장 및 거래 분야의 인기 있는 전문가 중 한 명인 John Bollinger에 의해 만들어졌습니다. 그는 CFA(공인 재무 분석가)이자 CMT(공인 시장 기술자)입니다.

      볼린저 밴드 지표는 인기있는 기술 지표로 시장의 변동성을 측정하며 시장 상황에 따라 확장 및 축소를 하게 됩니다. 주식, 외환 등 모든 금융 시장에서 사용할 수 있습니다. 이제 볼린저 밴드가 어떻게 구성되는지에 대해 살펴 보겠습니다.

      앞에서 다룬 밴드 거래의 개념은 중심으로 향하는 경향을 측정하는 것으로부터 시작합니다.. 그런 다음 이 측정값의 위와 아래에 밴드를 그립니다. 볼린저 밴드 지표의 경우 중심으로 향하는 경향의 척도는 단순 이동 평균이고 간격은 이동 표준 편차의 변동성을 측정하여 결정됩니다.

      볼린저 밴드 지표:

      • 평균(이동 평균) 주변의 데이터의 분산을 측정합니다.
      • 변동성 지표입니다.
      • 볼린저 밴드와 엔벨롭스 혹은 백분율 밴드 거래 방법의 차이점은 이들은 이동 평균의 위와 아래에 특정한 비율의 이동 평균이 존재하지만 볼린저 밴드의 경우는 이것이 이동 평균의 표준 편차라는 것입니다.
      • 밴드는 변동성이 증가하면 자동으로 확대되고 변동성이 감소하면 축소됩니다. 이러한 다이나믹한 특성으로 인해 볼린저 밴드는 스탠다드한 설정으로 여러 다른 증권에 사용할 수 있습니다.
      • 볼린저 밴드는 거래의 진입 지점과 청산 지점을 결정하는 데 사용되는 트레이딩 도구입니다.
      • 밴드는 종종 과매수 및 과매도 상태를 결정하는 데 사용됩니다.
      • M-상단 및 W-하단을 분별하거나 추세의 강도를 결정하는 데 사용할 수 있습니다.
      아래 공식은 볼린저 밴드를 계산하는 방법을 보여줍니다.

      BB계산

      이제 볼린저 밴드 계산의 예를 살펴보겠습니다.
        다음 표와 같이 20 거래일의 종가가 있다고 가정합니다.
             요일 번호   
             종가 $  
          1 20
          2 30
          3 35
           4 30 
           5 40 
          6 45
          7 50
          8 55
          9 40
          10 45
          11 50
          12 35
          13 40
          14 50
          15 60
          16 65
          17 70
          18 60
          19 70
          20 75

          BB계산

          이때 볼린저 밴드의 계산은 다음과 같습니다.

             BB 계산 예


            BB 계산 예 1


            세팅 조정:

            만약 누군가가 우리의 전략이나 트레이딩 계획에 따라 다른 방식으로 볼린저 밴드의 설정을 조정할 수 있는지 여부를 묻는다면 대답은 그렇게 할 수 있다는 것입니다. 특히 이렇게 조정한 것을 테스트 해보니 좋은 결과가 나왔다면 말입니다. 또한 Bollinger가 표준 편차의 승수에 대해 약간의 조정을 할 것을 권장한다는 것도 알아야 합니다. 또한 이동 평균의 기간을 변경하면 표준 편차를 계산하는 데 사용되는 기간에 영향을 미칩니다. Bollinger는 또한 50기간 단순 이동 평균을 사용할 경우 표준 편차의 승수를 2.1로 늘리고 10기간 단순 이동 평균을 사용할 경우 1.9로 줄일 것을 제안합니다. 

            우리가 이러한 계산을 수동으로 할 필요는 없습니다. MetaTrader 5에는 지표가 준비되어 내장되어 있습니다. 다음의 이미지는 지표를 차트에 추가하거나 지표를 첨부하는 방법을 보여줍니다. MetaTrader 5에서 삽입 메뉴 선택:

            1- BB 인디케이터 인서트

            그런 다음 지표, 추세, 볼린저 밴드 순으로 선택합니다.

            2- BB 인디케이터 인서트

            0볼린저 밴드 지표를 선택하면 지표 창에 매개변수가 나타납니다. 지표의 기본 매개변수를 보여줍니다. 다음과 같은 조정 가능한 매개변수가 있습니다.

            1.    이동 평균의 기간을 선택하는 기간 입니다.

            2.    상한 및 하한 대역의 편차의 매개변수를 선택하는 편차.

            3.    적용 대상: 매개변수가 적용되는 가격의 종류를 선택합니다(종가, 시가, 고가, 저가, 중간 가격, 일반 가격 및 가중 종가).

            4.    스타일: 지표의 스타일(지표의 색상, 모양 및 너비)을 선택합니다.

            5.    Shift: 지표에 Shift를 적용할 값을 설정합니다.

            그리고 앞서 언급한 것처럼 여러분의 전략이나 입력값에 따라 이러한 설정을 조정할 수 있습니다.


            3- BB 매개변수

            이제 가격 차트에 볼린저 밴드 지표가 표시되며 다음 그림과 같이 표시됩니다.


            EURUSDH1 - BB


            이전 그림에서 볼 수 있듯이 두개의 밴드(Bollinger Bands)로 둘러싸인 가격은 이동 평균(mean) 아래에 있고 가격과 상위 밴드는 이동 평균(mean)과 가격 위에 있습니다. 

            볼린저 밴드 전략

            여기에서 우리는 볼린저 밴드 전략에 대해 이야기하고 유익한 방식으로 사용하는 방법에 대해 알아 볼 것입니다.

            우리는 시장의 상황이나 움직임에 상관없이 볼린저 밴드를 사용할 수 있습니다. 상승 추세, 하락 추세 및 횡보 동안 사용할 수 있습니다. 시장 상황에 따라 사용할 수 있는 많은 전략이 있지만 여기서는 그 중 일부를 언급하겠습니다.

            • 상승 추세 중

            먼저 상승 추세 동안 상승 추세 동안 가격이 어떻게 움직일 것인지 이해해야 합니다. 상승 추세 동안에는 가격이 평균(이동 평균)의 위에서 움직인다는 것을 예상할 수 있습니다.

            따라서 우리는 상승 추세 동안에는 가격의 움직임이 대부분 이동 평균과 밴드의 상단 사이에서 일어 난다는 것을 파악 할 수 있습니다. 그것은 가격이 더 높은 저점과 더 높은 고점을 만드는 것을 의미합니다. 왜냐하면 매수자들의 컨트롤이 있기 때문입니다.

            추세

            추세


            우리는 상승 추세에서는 가격이 이동 평균과 상위 밴드 사이에서 움직인다는 것을 알고 있습니다. 볼린저 밴드는 이렇게 상승 추세를 식별하는 데 도움이 될 수 있습니다. 다음 그림은 이에 대한 예입니다. 명확하게 볼 수 있듯이 녹색 영역의 가격은 상승세 동안 이동 평균과 상위 밴드 사이에서 움직입니다.

            BB EURUSDWeekly - BB 상승세

            여기서 소개하는 전략은 다음과 같습니다:
            • 가격이 이동 평균 위로 교차하고 상단 밴드가 목표일 때 매수하십시오.
              • 가격 > MA = 매수, 상단 밴드 = 목표

            EURUSDWeekly - BB 상승 전략

            • 하락 추세 중

            먼저 하락 추세 동안 가격이 어떻게 움직일 것인지 이해해야 합니다. 하락 추세 동안에는 가격이 평균(이동 평균)의 아래에서 움직인다는 것을 예상할 수 있습니다.

            따라서 하락추세 동안 가격이 이동 평균과 하단 밴드 사이에서 대부분 이동한다는 것을 알게 될 것입니다. 이는 매도가 시장을 통제하고 가격이 하락함에 따라 가격이 고점을 낮추고 저점을 낮추는 것을 의미합니다.

            추세추세 하락

            추세추세 하락

            우리는 하락 추세에서는 가격이 이동 평균과 하위 밴드의 사이에서 움직인다는 것을 알고 있습니다. 볼린저 밴드는 이렇게 하락 추세를 식별하는 데 도움이 될 수 있습니다. 다음 그림은 이에 대한 예입니다. 명확하게 볼 수 있듯이 붉은색 영역의 가격은 하락세 동안 이동 평균과 하위 밴드 사이에서 움직입니다.

            BB EURUSDDaily - 하락 추세가 있는 BB

            여기서 소개하는 전략은 다음과 같습니다:
            • 가격이 이동 평균 아래로 교차하고 하단 밴드가 목표가이면 매도합니다.
              • 가격 < MA = 매도, 하단 밴드 = 목표

            EURUSDDaily - BB 하락 전략

            • 횡보시

            먼저 횡보란 상승세와 하락세를 제외한 모든 움직임을 말합니다. 횡보하는 동안 가격이 어떻게 움직이는지 이해할 필요가 있습니다.

            Sideways는 매수세와 매도세 중 한 쪽이 시장을 완전히 컨트롤 하고 있지 않다는 것을 말해 주며 이들간의 힘이 균형을 이룬다는 것을 나타냅니다. 다음 그림은 횡보장의 예입니다.

            옆으로 1

            옆으로 2

            옆으로 3

            옆으로 4

            다음은 횡보의 예입니다. 다음과 같이 녹색 영역에서 가격이 위 또는 아래쪽으로의 명확한 방향성이 없이 횡보 하는 것을 분명히 알 수 있습니다.

             횡보 


            앞의 그림은 횡보시의 예시이며 제가 언급한 것보다 더 많지만 횡보의 개념은 상승추세와 하락추세를 제외한 모든 움직임입니다.


            이제 횡보의 움직임이 이동 평균과 함께 어떻게 작용하는지 알아야 합니다. 이는 가격이 이동 평균을 위아래로 교차며 이동 평균과 상관 없이 움직이기 때문입니다. 다음 그림은 그와 같은 예입니다.

             MAMA MA

            이제 가격이 볼린저 밴드 지표와 어떻게 움직이는지 알아 볼 차례입니다. 가격은 하단 밴드와 상단 밴드 사이를 이동합니다. 다음의 그림이 그 예입니다.

            있는 BB GBPUSD1H -옆으로 있는 BB

            우리는 가격이 하단 밴드와 상단 밴드 사이에서 움직인다는 것을 알고 있습니다. 이때 횡보하는 동안의 전략은 하단 밴드에서 매수하고 목표는 상단 밴드에서, 또는 상단 밴드에서 매도하고 타겟은 하단 밴드가 됩니다.
            • 하단 밴드의 가격 = 매수, 상단 밴드 = 목표
            • 상단 밴드의 가격 = 매도, 하단 밴드 = 목표

            BB GBPUSD1H - 횡보 전략이 있는 BB


            이전 사진에서:
            • 우리는 하단 밴드에서 매수하고 상단 밴드에서 수익을 얻을 수 있습니다.
            • 우리는 상단 밴드에서 매도하고 하단 밴드에서 수익을 얻을 수 있습니다.

            볼린저 밴드 전략 시스템 설계

            이 부분에서는 볼린저 밴드 지표를 기반으로 하는 알고리즘 거래 시스템을 코딩하는 방법을 배워봅시다. 또한 이전에 언급한 세 가지 거래 전략(상승 추세 전략, 하락 추세 전략과 횡보 전략)을 만드는 방법을 배웁니다.

            여러분은 간단한 거래 시스템에서 고급 거래 시스템에 이르기까지 원하는 모든 거래 시스템을 설계할 수 있습니다. 예를 들어, 간단한 개념을 기반으로 간단한 신호를 생성하는 간단한 거래 시스템을 만들고 설계한 다음 이 신호에 따라 행동하거나 단순한 신호를 보내게 하거나 고급 거래 시스템을 만들고 설계할 수 있습니다. 이렇게 관련 개념의 조합을 기반으로 고급의 신호를 보내고 자동으로 실행합니다. 시스템 개발을 위한 다양한 접근 방식이 있습니다. 이 기사에서는 간단한 거래 시스템을 다룰 것입니다. 개념을 알아보기 위한 교육 목적으로만 만들 것입니다. 이러한 지식을 바탕으로 유사한 시스템을 개발하거나 조건에 따라 자신만의 거래 시스템을 설계할 수 있습니다. 이 기사가 유용하고 거래의 목표나 투자 목표를 달성하는 데 도움이 되기를 바랍니다.

            먼저 이동 평균 값, 상단 밴드의 값 및 하단 밴드의 값을 사용하여 차트에 3개의 주석을 표시할 수 있는 순수한 볼린저 밴드 코드를 설계하는 방법을 알아봅니다.

            다음은 이를 수행하는 코드입니다.

            //+------------------------------------------------------------------+
            //|                                       Simple Bollinger Bands.mq5 |
            //|                                  Copyright 2022, MetaQuotes Ltd. |
            //|                                             https://www.mql5.com |
            //+------------------------------------------------------------------+
            
            //+------------------------------------------------------------------+
            //| Expert tick function                                             |
            //+------------------------------------------------------------------+
            void OnTick()
              {
               //create an array for several prices
               double MiddleBandArray[];
               double UpperBandArray[];
               double LowerBandArray[];
               
               //sort the price array from the cuurent candle downwards
               ArraySetAsSeries(MiddleBandArray,true);
               ArraySetAsSeries(UpperBandArray,true);
               ArraySetAsSeries(LowerBandArray,true);
               
               //define Bollinger Bands
               int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
               
               //copy price info into the array
               CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
               CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
               CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
               
               //calcualte EA for the cuurent candle
               double MiddleBandValue=MiddleBandArray[0];
               double UpperBandValue=UpperBandArray[0];
               double LowerBandValue=LowerBandArray[0];
               
               //comments
               Comment("MiddleBandValue: ",MiddleBandValue,"\n",
               "UpperBandValue: ",UpperBandValue,"\n","LowerBandValue: ",LowerBandValue,"\n");
               
              }
            //+------------------------------------------------------------------+
            

            이제 코드를 작성하고 컴파일한 후 다음 그림과 같이 코드에 오류나 경고가 없는지 확인해야 합니다.

            1- SBB - 오류 없음

            그런 다음 탐색기 창에서 파일을 찾아 차트에 끌어다 놓거나 더블 클릭하여 다음 그림과 같이 실행하고 차트에 첨부합니다.

             2- SBB - 파일


            3- SBB 실행 창


            다음 이미지는 프로그램이 실행되는 차트를 보여줍니다.

            SBB 4- 차트에 첨부된 SBB

            이제 간단한 볼린저 밴드 전략을 설계하는 방법을 알아봅니다.
              전략 1:
                • 상승 추세 볼린저 밴드 전략: 
                • 가격 > MA = 매수, 상단 밴드 = 목표 달성 또는 = 신호 없음

                Uptrend BB 전략의 초기 버전

                다음은 이를 수행하는 코드입니다.

                //+------------------------------------------------------------------+
                //|                                          Uptrend BB strategy.mq5 |
                //|                                  Copyright 2022, MetaQuotes Ltd. |
                //|                                             https://www.mql5.com |
                //+------------------------------------------------------------------+
                //+------------------------------------------------------------------+
                //| Expert tick function                                             |
                //+------------------------------------------------------------------+
                void OnTick()
                  {
                   //define Ask, Bid
                   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
                   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
                   
                   //create an array for several prices
                   double MiddleBandArray[];
                   double UpperBandArray[];
                   double LowerBandArray[];
                   
                   //sort the price array from the cuurent candle downwards
                   ArraySetAsSeries(MiddleBandArray,true);
                   ArraySetAsSeries(UpperBandArray,true);
                   ArraySetAsSeries(LowerBandArray,true);
                   
                   //define Bollinger Bands
                   int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
                   
                   
                   //copy price info into the array
                   CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
                   CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
                   CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
                   
                   //calcualte EA for the cuurent candle
                   double MiddleBandValue=MiddleBandArray[0];
                   double UpperBandValue=UpperBandArray[0];
                   double LowerBandValue=LowerBandArray[0];
                   
                   //giving buy signal when price > MA
                   if (
                      (Ask>=MiddleBandArray[0])
                   && (Ask<UpperBandArray[0])
                      )
                         {
                         Comment("BUY");
                         }
                    
                   //check if we have a take profit signal      
                   if (
                      (Bid>=UpperBandArray[0])
                      )
                         {
                         Comment("TAKE PROFIT");
                         }  
                   
                      //check if we have no signal      
                   if (
                      (Ask<MiddleBandArray[0])
                      )
                         {
                         Comment("NO SIGNAL");
                         }  
                  }
                //+------------------------------------------------------------------+

                다음 스크린샷은 이 전략의 신호를 보여줍니다.

                상승 추세 BB - 매수


                실현 Uptrend BB - 이익실현

                상승 추세 BB - 신호 없음

                다음으로 다음과 같은 단계를 수행해야 합니다.
                • 코드에 오류나 경고가 없는지 확인하십시오.
                • 파일 찾기
                • 차트에 첨부할 파일을 드래그 앤 드롭하거나 더블 클릭하여 코드를 실행합니다.

                5- UBB - 오류 없음

                 6- UBB 파일


                7- UBB 실행 창


                다음의 이미지는 코드를 실행 한 후의 차트를 보여줍니다. 여기에서 프로그램이 차트에서 실행되고 있습니다.

                UBB 8- 차트에 첨부된 UBB

                  전략 2:
                    • 하락 추세 볼린저 밴드 전략:
                    • 가격 < MA = 매도, 하단 밴드 = 목표

                    하락 추세 BB 전략 청사진

                    다음은 이를 수행하는 코드입니다.

                    //+------------------------------------------------------------------+
                    //|                                        Downtrend BB strategy.mq5 |
                    //|                                  Copyright 2022, MetaQuotes Ltd. |
                    //|                                             https://www.mql5.com |
                    //+------------------------------------------------------------------+
                    //+------------------------------------------------------------------+
                    //| Expert tick function                                             |
                    //+------------------------------------------------------------------+
                    void OnTick()
                      {
                       //define Ask, Bid
                       double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
                       double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
                       
                       //create an array for several prices
                       double MiddleBandArray[];
                       double UpperBandArray[];
                       double LowerBandArray[];
                       
                       //sort the price array from the cuurent candle downwards
                       ArraySetAsSeries(MiddleBandArray,true);
                       ArraySetAsSeries(UpperBandArray,true);
                       ArraySetAsSeries(LowerBandArray,true);
                       
                       //define Bollinger Bands
                       int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
                       
                       
                       //copy price info into the array
                       CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
                       CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
                       CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
                       
                       //calcualte EA for the cuurent candle
                       double MiddleBandValue=MiddleBandArray[0];
                       double UpperBandValue=UpperBandArray[0];
                       double LowerBandValue=LowerBandArray[0];
                       
                       //giving sell signal when price < MA
                       if (
                          (Bid<=MiddleBandArray[0])
                       && (Bid>LowerBandArray[0])
                          )
                             {
                             Comment("SELL");
                             }
                        
                       //check if we have a take profit signal      
                       if (
                          (Ask<=LowerBandArray[0])
                          )
                             {
                             Comment("TAKE PROFIT");
                             }  
                       
                          //check if we have no signal      
                       if (
                          (Bid>MiddleBandArray[0])
                          )
                             {
                             Comment("NO SIGNAL");
                             }  
                      }
                    //+------------------------------------------------------------------+

                    아래 스크린샷은 이 전략에 의해 생성된 신호를 보여줍니다.

                    하락 추세 BB - 매도

                    실현 하락세 BB - 이익실현

                    하락 추세 BB - 신호 없음


                    그 다음 스크린샷에 표시된 단계를 다시 수행하여 다음을 수행합니다.
                    • 코드에 오류나 경고가 없는지 확인하십시오.
                    • 파일 찾기
                    • 차트에 첨부할 파일을 드래그 앤 드롭하거나 더블 클릭하여 코드를 실행합니다.

                     9- DBB - 오류 없음

                     10- DBB 파일


                     11- DBB 실행 창


                    다음 그림은 코드 실행 후 차트에 어떻게 나타나는지와 프로그램이 차트에 어떻게 첨부되었는지를 보여줍니다:

                     DBB 12- 차트에 첨부된 DBB



                      전략 3:
                        • 횡보시 볼린저 밴드 전략:
                        • 하단 밴드의 가격 = 매수, 상단 밴드 = 목표
                        • 상단 밴드의 가격 = 매도, 하단 밴드 = 목표

                        13- Sideways BB 전략 청사진


                        다음은 이를 수행하는 코드입니다.

                        A- 하단 밴드를 터치할 때 발생하는 Buy 신호,

                        //+------------------------------------------------------------------+
                        //|                                     Buy sideways BB strategy.mq5 |
                        //|                                  Copyright 2022, MetaQuotes Ltd. |
                        //|                                             https://www.mql5.com |
                        //+------------------------------------------------------------------+
                        //+------------------------------------------------------------------+
                        //| Expert tick function                                             |
                        //+------------------------------------------------------------------+
                        void OnTick()
                          {
                           //define Ask, Bid
                           double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
                           double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
                           
                           //create an array for several prices
                           double MiddleBandArray[];
                           double UpperBandArray[];
                           double LowerBandArray[];
                           
                           //sort the price array from the cuurent candle downwards
                           ArraySetAsSeries(MiddleBandArray,true);
                           ArraySetAsSeries(UpperBandArray,true);
                           ArraySetAsSeries(LowerBandArray,true);
                           
                           //define Bollinger Bands
                           int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
                           
                           
                           //copy price info into the array
                           CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
                           CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
                           CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
                           
                           //calcualte EA for the cuurent candle
                           double MiddleBandValue=MiddleBandArray[0];
                           double UpperBandValue=UpperBandArray[0];
                           double LowerBandValue=LowerBandArray[0];
                           
                           //giving buy signal when price > MA
                           if (
                              (Ask<=LowerBandArray[0])
                              )
                                 {
                                 Comment("BUY");
                                 }
                            
                           //check if we have a take profit signal      
                           if (
                              (Bid>=UpperBandArray[0])
                              )
                                 {
                                 Comment("TAKE PROFIT");
                                 }  
                           
                          }
                        //+------------------------------------------------------------------+
                        

                        이 전략에 의해 생성된 신호:

                        매수 신호 - 횡보 BB

                        매수 신호의 TP - 횡보 BB


                        단계(아래 스크린샷 참조):
                        • 코드에 오류나 경고가 없는지 확인하십시오.
                        • 파일 찾기
                        • 차트에 첨부할 파일을 드래그 앤 드롭하거나 더블 클릭하여 코드를 실행합니다.

                        13- BSBB - 오류 없음

                         14- BSBB 파일


                        15- BSBB 실행 창


                        다음 그림은 코드 실행 후 차트에 어떻게 나타나는지와 프로그램이 차트에 어떻게 첨부되었는지를 보여줍니다:


                         BSBB 16- 차트에 첨부된 BSBB

                        B- 상단 밴드 터치 시 발생하는 매도 신호,

                        다음은 이를 수행하는 코드입니다.
                        //+------------------------------------------------------------------+
                        //|                                    Sell sideways BB strategy.mq5 |
                        //|                                  Copyright 2022, MetaQuotes Ltd. |
                        //|                                             https://www.mql5.com |
                        //+------------------------------------------------------------------+
                        //+------------------------------------------------------------------+
                        //| Expert tick function                                             |
                        //+------------------------------------------------------------------+
                        void OnTick()
                          {
                           //define Ask, Bid
                           double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
                           double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
                           
                           //create an array for several prices
                           double MiddleBandArray[];
                           double UpperBandArray[];
                           double LowerBandArray[];
                           
                           //sort the price array from the cuurent candle downwards
                           ArraySetAsSeries(MiddleBandArray,true);
                           ArraySetAsSeries(UpperBandArray,true);
                           ArraySetAsSeries(LowerBandArray,true);
                           
                           //define Bollinger Bands
                           int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
                           
                           
                           //copy price info into the array
                           CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
                           CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
                           CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
                           
                           //calcualte EA for the cuurent candle
                           double MiddleBandValue=MiddleBandArray[0];
                           double UpperBandValue=UpperBandArray[0];
                           double LowerBandValue=LowerBandArray[0];
                           
                           //giving sell signal when price < MA
                           if (
                              (Bid>=UpperBandArray[0])
                              )
                                 {
                                 Comment("SELL");
                                 }
                            
                           //check if we have a take profit signal      
                           if (
                              (Ask<=LowerBandArray[0])
                              )
                                 {
                                 Comment("TAKE PROFIT");
                                 }  
                          }
                        //+------------------------------------------------------------------+
                        

                        다음은 이 전략에 의해 생성되는 신호의 스크린샷입니다.

                        매도 신호 - 횡보 BB

                        매도 신호의 TP - 횡보 BB


                        단계(아래 스크린샷 참조):
                        • 코드에 오류나 경고가 없는지 확인하십시오.
                        • 파일 찾기
                        • 차트에 첨부할 파일을 드래그 앤 드롭하거나 더블 클릭하여 코드를 실행합니다.

                         17- SSBB - 오류 없음


                         18- SSBB 파일


                         19- SSBB 실행 창


                        다음 그림은 코드 실행 후 차트에 어떻게 나타나는지와 프로그램이 차트에 어떻게 첨부되었는지를 보여줍니다:

                        SSBB 20- 해도에 첨부된 SSBB


                        결론

                        밴드 거래의 개념은 앞으로 진행될 움직임을 최대한 활용하고 그로부터 혜택을 받을 수 있다는 분명한 기대를 우리에게 가져다 줍니다. 볼린저 밴드 이외에도 밴드 거래를 하는데 사용 가능한 많은 방법이 있기습니다. 밴드는 가격의 변동에 따라 확장 혹은 축소되면서 시장 상황 또는 추세를 살펴보며 모든 시장이나 추세에 사용할 수 있는 좋은 도구입니다.

                        그리고 앞서 말씀드린 것처럼 이 글에서는 볼린저 밴드 지표의 개념과 이해를 돕기 위해 그 계산 방법을 공유하려고 노력 했습니다. 볼린저 밴드 지표로 간단한 거래 전략을 세우는 방법에 대해 알아보고 간단한 거래를 설계하는 방법을 배웠습니다.

                        이제 여러분도 자신의 거래 스타일에 적합한 전략을 개발하거나 설계할 수 있을 것입니다. 이 기사가 여러분의 거래에 유용하기를 바랍니다.


                        참고문헌

                        • John Bollinger의 Bollinger on Bollinger Bands
                        • https://www.bollingerbands.com/about-us
                        • https://www.investopedia.com/trading/using-bollinger-bands-to-gauge-trends
                        • https://school.stockcharts.com/doku.php?id=technical_indicators:bollinger_bands



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

                        하나의 차트에 여러 개의 지표 넣기(파트 01): 개념 이해 하나의 차트에 여러 개의 지표 넣기(파트 01): 개념 이해
                        오늘 우리는 하나의 차트에서 여러개의 지표가 동시에 실행되면서 지표별로 각각의 영역을 차지하지 않는 차트에 지표를 추가하는 방법에 대해 알아 봅니다. 많은 트레이더들은 한 번에 여러개의 지표(예: RSI, STOCATIC, MACD, ADX 및 기타)를 모니터링하거 때로는 다른 자산을 인덱스로 만들어 모니터링할 때 거래에 대해 좀 더 자신감을 가지게 되기도 합니다.
                        리눅스에서 MetaTrader 4 구동하기 리눅스에서 MetaTrader 4 구동하기
                        이 기사에서는 Linux 버전 중 널리 사용되는 Ubuntu와 Debian에서 MetaTrader 4를 설치하는 방법을 알아봅니다. 이들 시스템은 서버 하드웨어와 트레이더의 개인용 컴퓨터로 널리 사용됩니다.
                        하나의 차트에 여러 개의 지표 넣기(파트 02): 첫 번째 실험 하나의 차트에 여러 개의 지표 넣기(파트 02): 첫 번째 실험
                        이전 기사 "하나의 차트에 여러 개의 지표 넣기"에서 저는 하나의 차트에 여러 개의 지표를 사용하는 방법과 관련한 개념과 기본적인 사항을 제시했습니다. 이 기사에서는 소스 코드를 제공하고 자세히 설명합니다.
                        다양한 이동 평균 시스템을 설계하는 방법 다양한 이동 평균 시스템을 설계하는 방법
                        어떠한 전략이든 생성된 신호를 필터링하는 데 사용할 수 있는 많은 전략이 있습니다. 이 글의 주제인 이동 평균을 사용하는 경우도 마찬가지입니다. 따라서 이 글의 목적은 이동 평균 전략과 알고리즘 거래 시스템을 설계하는 방법을 공유하는 것입니다.