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

베어스 파워 보조 지표로 트레이딩 시스템을 설계하는 방법 알아보기

MetaTrader 5트레이딩 | 25 7월 2023, 10:15
114 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

소개

이 시리즈의 새로운 기사에서는 특히 다른 기술 도구들과 결합할 경우 유리하게 사용할 수 있는 새로운 기술 도구에 대해 알아볼 것입니다. 베어스 파워 보조지표를 사용하여 트레이딩 시스템을 만드는 방법을 배워보겠습니다. 이 시리즈의 기사에서 언제나 그랬듯 사물의 근원을 이해하여 효과적인 방식으로 사용하려고 노력할 것입니다. 다음 주제를 통해 베어스 파워 지표에 대해 자세히 알아볼 것입니다:

  1. 베어스 파워 정의
  2. 베어스 파워 전략
  3. 베어스 파워 전략 청사진
  4. 베어스 파워 거래 시스템
  5. 결론

베어스 파워 정의라는 주제를 통해 베어스 파워 지표가 무엇인지, 무엇을 측정하는지, 수동으로 계산하는 방법을 통해 지표의 기본 개념을 배우고 MetaTrader 5 거래 플랫폼에 삽입하고 사용하는 방법을 알아볼 것입니다. 베어스 파워 전략이라는 주제를 통해 기본적인 사항을 배우고 이 지표의 주요 개념을 이해 한 후에는 이해를 깊게 하고 거래를 개선하기 위해 그리고 이 기사의 주제에 대한 더 많은 통찰력을 얻기 위해 몇 가지 간단한 전략을 통해 이 지표를 사용하는 방법을 배울 것입니다. 그런 다음 살펴본 전략을 기반으로 거래 시스템을 만들기위한 단계별 청사진을 설계 할 것이며 이 단계는 베어스 파워 전략 청사진이란 주제에서 다룬 내용을 좀더 쉽게 만드는 데 도움이 되므로 매우 중요합니다. 이 후 이 글에서 가장 흥미로운 주제인 베어스 파워 거래 시스템에 대해 알아볼 것입니다. 살펴본 전략을 바탕으로 MQL5(메타쿼츠 언어)로 거래 로봇을 생성하여 MetaTrader 5 거래 터미널에서 실행하는 방법을 배울 것이기 때문입니다.

배운 내용을 직접 적용해 보고 코딩해 보는 것은 모든 학습 과정에서 중요한 요소이므로 주제를 잘 이해하는 데 도움이 될 것입니다. 이 글에서는 MetaTrader 5 거래 플랫폼과 내장된 IDE를 사용하여 MQL5 코드를 작성할 것입니다. 다운로드하여 사용하는 방법을 알고 싶으시면 이전 글에서 메타에디터에서 MQL5 코드 작성하기 라는 주제를 읽어 보시기 바랍니다.

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

이제 이 글의 주제를 다뤄보기 시작하겠습니다.


베어스 파워 정의

이 주제에서는 베어스 파워 지표의 정의, 측정 대상, MetaTrader 5에서 계산하고 사용하는 방법을 알아봄으로써 베어스 파워 지표에 대해 더 자세히 알아볼 것입니다. 베어스 파워 지표는 제로 레벨을 중심으로 진동하는 오실레이터 지표로 시장의 약세를 측정하며 하락세가 약해지면서 강세장이 오고 있다는 것을 알려주기도 합니다. 시장을 움직이거나 하락 시키는 것은 세와 힘이기 때문에 모든 시장에서 수요와 공급이 매우 중요하다는 것은 우리 모두 잘 알고 있습니다. 따라서 우리는 상승세와 하락세가 시장을 얼마나 지배하고 있는지 파악하는 것이 중요합니다. 이 지표는 Dr. 알렉산더 엘더가 만들었습니다. 이 지표는 상기의 개념을 측정하고 약세가 시장을 얼마나 지배하고 있는지를 확인합니다.

이 지표가 어떻게 그렇게 할 수 있는지, 그 계산 방법을 알게 되면 우리는 이 질문에 대한 답을 얻을 수 있습니다. 이 베어스 파워 지표의 계산은 다음과 같습니다.

  1. 기간의 저점을 가져옵니다.
  2. 지수 이동 평균(EMA)에 대한 자세한 내용과 계산 방법은 이동 평균에 대한 글인 다양한 이동 평균 시스템을 설계하는 방법을 읽어 보시기 바랍니다.
  3. 저점에서 EMA를 빼서 베어스 파워 값을 구합니다.

저점 = 기간 중 가장 낮은 값입니다.

EMA = 지수이동평균 EMA.

베어스 파워 = 저점 - EMA

우리는 약세가 시장을 지배한다는 것을 알고 있으며 대부분의 경우 약세가 시장을 계속 낮추고 있습니다. 따라서 베어스 파워의 계산 공식에서 저점 값을 사용하여 이러한 약세를 측정해야 하므로 이 저점과 EMA의 차이를 구하여 0 레벨을 중심으로 진동하는 오실레이터 지표를 얻고 그 값이 0 레벨에 가까워지고 그보다 높아지면 약세가 약해졌다는 표시를 얻을 수 있습니다.

이 지표를 다른 추세 지표와 함께 사용하는 것이 좋습니다. 이러한 사용법은 다양한 개념을 사용하여 더 많은 통찰력을 얻고 다양한 관점에서 상품을 볼 수 있기 때문에 기술적 분석의 아름다운 기능 중 하나입니다.

이 지표를 MetaTrader 5에 삽입하는 방법은 삽입 --> 지표 --> 오실레이터 --> 베어스 파워를 누르면 됩니다. 다음 그림을 통해서도 이를 확인할 수 있습니다:

 베어스 파워 인서트

"베어스 파워"를 눌러 차트에 삽입하면 다음과 같은 매개 변수 창이 나타납니다:

 곰 파워 파라미터

1 - 계산에 사용할 기간을 결정합니다.

2 - 베어스 파워 바의 색상을 결정합니다.

3 - 베어스 파워 바의 두께를 결정합니다.

이들 매개 변수를 결정하고 "확인"을 누르면 다음과 같이 차트에 지표가 삽입되는 것을 볼 수 있습니다:

베어스 파워 부착

이전 차트의 하단에서 볼 수 있듯이 차트에 표시기가 삽입되어 있고 바가 0을 중심으로 진동합니다. 바가 0보다 낮은 값이면 약세가 강하고 0에 가까워지고 그보다 높아지면 약세가 약해 졌음을 의미합니다.


베어스 파워 전략

이 부분에서는 이 지표의 기본 개념을 바탕으로 우리가 사용할 수 있는 간단한 전략을 통해 베어스 파워를 어떻게 사용할 수 있는지 알아보겠습니다. 다음은 그러한 전략과 그 조건에 대한 설명입니다. 여기서 확인해야 할 것은 이러한 교육용 전략은 지표의 주요 개념과 사용 방법을 이해하는 것이 주요 목적이므로 실제 계좌에서 사용하기 전에 모든 전략을 테스트하면서 거래에 도움이 되는지 확인해야 한다는 것입니다.

    전략 1: 베어스 파워 이동

      이 전략에 따르면 현재 및 이전 베어 파워 값의 위치를 기반으로 신호를 얻어야 합니다. 현재 값이 이전 값보다 크면 베어스 파워 지표가 상승하고 있다는 신호입니다. 그 반대의 경우 즉 현재 값이 이전 값보다 낮으면 하락 움직임의 신호입니다.

      간단히 하면,

      현재 베어스 파워 > 이전 베어스 파워 --> 베어스 파워가 상승 중입니다.

      현재 베어스 파워 < 이전 베어스 파워 --> 베어스 파워이 하락하고 있습니다.

        전략 2: 베어스 파워 - 강함 또는 다이버전스

          이 전략에 따르면 현재 저점, 이전 저점, 베어 파워, 이전 베어 파워, 이 네 가지 값을 평가하여 강한 움직임이 있는지 또는 다이버전스가 있는지 알려주는 신호를 얻어야 합니다. 현재 저점이 이전 저점보다 낮고 현재 베어 파워의 값이 이전 저점보다 낮다면 이는 강한 움직임의 신호가 될 것입니다. 현재 저점이 이전 저점보다 낮고 현재 베어 값이 이전 베어 값보다 크면 강세 다이버전스의 신호가 됩니다.

          간단히 하면,

          현재 저점 < 이전 저점 및 현재 베어스 파워 < 이전 베어스 파워 --> 강한 움직임

          현재 저점 < 이전 저점 및 현재 베어스 파워 > 이전 베어스 파워 --> 강세 다이버전스

            전략 3

              이 전략에 따르면 매수 및 매도 신호를 얻는 데 사용할 수 있는 트리거가 필요하며 이를 위해 우리는 네 가지의 값을 평가할 것입니다. 이 네 가지 값은 현재 베어스 파워, 제로 레벨, 현재 종가, 현재 지수 이동 평균입니다. 현재 베어스 파워가 제로 수준보다 크고 현재 종가가 지수 이동 평균보다 크면 매수 신호가 됩니다. 현재 베어스 파워가 제로 수준보다 낮고 현재 종가가 지수 이동 평균보다 낮으면 매도 신호가 됩니다.

              간단히 하면,

              현재 베어스 파워 > 제로 레벨 및 현재 종가 > EMA --> 매수

              현재 베어스 파워 < 제로 수준 및 현재 종가 < EMA --> 매도


              베어스 파워 전략 청사진

              이번 주제에서는 언급된 각 전략에 대한 단계별 청사진을 설계하는 방법을 배울 것입니다. 이 청사진에서 아이디어를 명확히 단계별로 정리하여 거래 시스템을 원활하고 쉽게 만드는 데에 도움이 되도록 할 것입니다.

                전략 1: 베어스 파워 이동

                  먼저 단계를 구성하기 위해서 우리는 프로그램이 무엇을 해야 하는지 확실히 해야 합니다. 컴퓨터는 매 틱마다 두 개의 값을 확인해야 하며 이 값은 현재 베어스 파워와 이전 베어스 파워입니다. 프로그램은 이 값들을 확인하고 어느 것이 더 큰지를 결정해야 합니다. 현재 값이 이전 값보다 크면 프로그램이나 EA가 차트에 다음과 같은 코멘트로 신호를 반환해야 합니다:

                  • 베어스 파워가 상승 중입니다.
                  • 베어스 파워 값
                  • 베어스 파워 이전 값

                  모든 값을 별도의 줄에 표시되도록 합니다. 

                  다른 시나리오는 현재 베어스 파워 값이 이전 값보다 큰 경우이며 EA는 다음의 각각의 값을 별도의 줄에 담은 코멘트를 반환해야 합니다:

                  • 베어스 파워가 감소하고 있습니다
                  • 베어스 파워 값
                  • 베어스 파워 이전 값.

                  이렇게 하면 다음과 같은 트레이딩 시스템을 만들기 위한 이 전략의 단계별 청사진을 만들 수 있습니다.

                  곰의 파워 무브먼트 청사진

                    전략 2: 베어스 파워 - 강함 또는 다이버전스

                      이 전략에 따르면 거래 시스템은 현재 저점, 이전 저점, 현재 베어스 파워 값, 이전 베어스 파워 값 등 네 가지 값을 확인해야 합니다. 그 후 현재 저점 값이 이전 값보다 낮고 동시에 현재 베어스 파워의 값이 이전 값보다 낮은지 결정해야 하며 거래 시스템은 이들 값을 차트에 코멘트로 신호를 반환해야 하며 이들 값들은 각각 별도의 줄에 표시됩니다:

                      • 강력한 움직임
                      • 현재 저점 값
                      • 이전 저점 값
                      • 현재 베어스 파워 값
                      • 이전 베어스 파워 값

                      다른 경우는 현재 저점 값이 이전 값보다 낮고 동시에 현재 베어스 파워 값이 이전 값보다 큰 경우로 거래 시스템이 다음과 같은 값으로 차트에 신호를 반환해야 합니다:

                      • 강세 다이버전스
                      • 현재 저점 값
                      • 이전 저점 값
                      • 현재 베어스 파워 값
                      • 이전 베어스 파워 값

                      다음은 이 전략에 기반한 트레이딩 시스템을 만드는 데 도움이 되는 단계별 청사진입니다.

                      베어스 파워 - 강함 또는 발산 청사진

                       

                        전략 3: 베어스 파워 신호

                          이 전략을 기반으로 매 틱마다 네 가지 값을 확인하는 트레이딩 시스템을 만들어야 하는데 현재 베어스 파워, 제로 레벨, 현재 종가, 현재 지수 이동 평균이 바로 그것입니다. 현재 베어스 파워가 제로 수준보다 큰지, 동시에 현재 종가가 지수 이동 평균보다 큰지를 결정해야 하며 EA는 다음 값과 같은 각각의 값을 별도의 줄로 차트에 표시하여 신호를 반환해야 합니다:

                          • 매수 신호.
                          • 현재 종가 값
                          • 현재 EMA 값
                          • 현재 베어스 파워 값

                          다른 경우로는 현재 베어스 파워가 0보다 낮고 동시에 현재 종가가 지수 이동 평균보다 낮을 경우 거래 시스템에서 다음과 같은 값으로 신호를 반환해야 합니다:

                          • 매도 신호
                          • 현재 종가 값
                          • 현재 EMA 값
                          • 현재 베어스 파워 값

                          다음은 이 전략에 기반한 트레이딩 시스템을 만들기 위한 아이디어를 정리한 단계별 청사진입니다.

                          베어스 파워 시그널 청사진

                          베어스 파워 거래 시스템

                          이번 주제에서는 언급 된 각 전략에 대한 거래 시스템을 만드는 방법을 배워봅니다. 베어스 파워에 기반한 간단한 거래 시스템을 만들어 베어스 파워의 현재 값과 함께 차트에 코멘트로 신호를 반환하여 모든 전략의 기반으로 사용하도록 하겠습니다.

                          다음은 이 거래 시스템을 생성하는 코드입니다.

                          double 함수를 사용하여 "bearpower"에 대한 배열을 만들겠습니다:

                          double bearpowerArray[];

                          생성된 배열을 "ArraySetAsSeries" 함수를 사용하여 정렬하여 bool 값을 반환합니다.

                          ArraySetAsSeries(bearpowerArray,true);

                          "iBearsPower" 함수를 사용하여 지표의 핸들을 반환하여 베어스 파워 지표를 정의합니다. 매개변수는 다음과 같습니다:

                          • symbol: 현재 심볼에 적용할 (_symbol)을 사용합니다.
                          • period: 현재 기간 또는 원하는 차트 주기를 적용하려면 (_Period)를 사용합니다.
                          • ma_period: 사용 가능한 이동 평균 기간으로 13을 사용합니다.
                          int bearpowerDef = iBearsPower(_Symbol,_Period,13);

                          볼륨 지표에서 데이터를 가져오기 위해 CopyBuffer 함수를 사용하여 배열을 채웁니다. 이 함수의 매개 변수는 다음과 같습니다:

                          • indicator_handle: 인디케이터 핸들의 경우 (bearpowerDef)를 사용합니다.     
                          • buffer_num: 인디케이터 버퍼 번호로 (0)을 사용합니다.
                          • start_pos: 시작 위치는 (0)을 사용합니다.         
                          • count: 복사할 양이며 (3)을 사용합니다.                
                          • buffer[]: 복사할 대상 배열입니다. 우리는 (bearpowerArray)를 사용할 것입니다.
                          CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);

                          double 타입의 값을 반환하는 'NormalizeDouble' 함수를 사용하여 변수를 생성한 후 'bearpowerVal'을 정의합니다. 이 함수의 매개 변수는 다음과 같습니다:

                          • value: 정규화된 숫자로 (bearpowerArray[0]을 사용합니다.
                          • digits: 소수점 이하 자릿수로 (6)을 사용합니다.
                          double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);

                          'Comment' 함수를 사용하여 차트에 현재 베어스 파워 값에 대한 코멘트를 생성해야 합니다:

                          Comment("Bear's Power Value is ",bearpowerVal);

                          다음은 이 간단한 거래 시스템을 만드는 전체 코드입니다.

                          //+------------------------------------------------------------------+
                          //|                                          Simple Bear's Power.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()
                            {
                             double bearpowerArray[];
                          
                             ArraySetAsSeries(bearpowerArray,true);
                          
                             int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                          
                             CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                          
                             double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                          
                             Comment("Bear's Power Value is ",bearpowerVal);
                          
                            }
                          //+------------------------------------------------------------------+

                          이 코드를 컴파일하면 내비게이터 창에서 다음과 같이 이 전략을 수행하는 EA를 찾을 수 있습니다:

                           베어스 파워 내비

                          이 EA를 차트에 끌어다 놓으면 다음과 같이 이 프로그램의 창이 나타납니다:

                           심플 베어스 파워 승리

                          "확인"을 누르면 다음과 같이 EA가 차트에 첨부되어 있는 것을 확인할 수 있습니다:

                          심플 베어스 파워 부착

                          이전 차트의 오른쪽 상단에서 볼 수 있듯이 EA가 차트에 첨부되어 있습니다. 그러면 테스팅 결과의 예와 같이 차트에서 다음과 같이 생성된 신호를 찾을 수 있습니다:

                           심플 베어스 전원 신호

                          이전 차트에서 왼쪽 상단 모서리에 현재 베어스 파워 값이 있는 것을 볼 수 있습니다.

                            전략 1: 베어스 파워 이동

                              다음은 이 전략을 실행하는 거래 시스템을 만드는 전체 코드입니다.

                              //+------------------------------------------------------------------+
                              //|                                        Bear's Power 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()
                                {
                                 double bearpowerArray[];
                              
                                 ArraySetAsSeries(bearpowerArray,true);
                              
                                 int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                              
                                 CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                              
                                 double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                 double bearpowerPrevVal = NormalizeDouble(bearpowerArray[1],6);
                              
                                 if(bearpowerVal>bearpowerPrevVal)
                                   {
                                    Comment("Bear's Power is rising","\n",
                                            "Bear's Power Value is ",bearpowerVal,"\n",
                                            "Bear's Power Previous Value is ",bearpowerPrevVal);
                                   }
                              
                                 if(bearpowerVal<bearpowerPrevVal)
                                   {
                                    Comment("Bear's Power is declining","\n",
                                            "Bear's Power Value is ",bearpowerVal,"\n",
                                            "Bear's Power Previous Value is ",bearpowerPrevVal);
                                   }
                                }
                              //+------------------------------------------------------------------+

                              이 코드에서의 차이점:

                              현재 베어스 파워 값 "bearpowerVal"과 이전 베어스 파워 값 "bearpowerPrevVal"을 정의합니다:

                                 double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                 double bearpowerPrevVal = NormalizeDouble(bearpowerArray[1],6);

                              전략의 조건:

                              상승 하는 경우:

                                 if(bearpowerVal>bearpowerPrevVal)
                                   {
                                    Comment("Bear's Power is rising","\n",
                                            "Bear's Power Value is ",bearpowerVal,"\n",
                                            "Bear's Power Previous Value is ",bearpowerPrevVal);
                                   }

                              하락 하는 경우:

                                 if(bearpowerVal<bearpowerPrevVal)
                                   {
                                    Comment("Bear's Power is declining","\n",
                                            "Bear's Power Value is ",bearpowerVal,"\n",
                                            "Bear's Power Previous Value is ",bearpowerPrevVal);
                                   }

                              이 코드를 컴파일하면 내비게이터 창에서 다음과 같이 이 전략을 수행하는 EA를 찾을 수 있습니다:

                               베어스 파워 내비 2

                              이 EA를 차트에 끌어다 놓으면 다음과 같이 이 프로그램의 창이 나타납니다:

                               베어스 파워 무브먼트 승리

                              "확인"을 누르면 다음과 같이 EA가 차트에 첨부되어 있는 것을 확인할 수 있습니다:

                              베어스 파워 무브먼트 부착

                              이전 차트의 오른쪽 상단에서 볼 수 있듯이 EA가 차트에 첨부되어 있습니다. 이후 다음과 같이 생성된 신호를 찾을 수 있습니다.

                              현재 데이터상 상승하는 경우:

                               베어스 파워 움직임 - 상승 - 현재 데이터

                              이전 차트의 위쪽에서 볼 수 있듯이 상승 신호, 현재 베어스 파워 값, 이전 베어스 파워 값을 생성했습니다. 데이터 창에서 베어스 파워의 현재 값을 찾을 수 있습니다.

                              이전 데이터상 상승한 경우:

                              베어스 파워 움직임 - 상승 - 이전 데이터

                              이전 차트에서 볼 수 있듯이 데이터 창에서 이전 베어스 파워의 값을 찾을 수 있고 데이터상의 차이를 발견할 수 있습니다.

                              현재 데이터상 감소하는 경우:

                               베어스 파워 움직임 - 하락 - 현재 데이터

                              차트 위쪽의 이전 차트에서 볼 수 있듯이 하락 신호, 현재 베어스 파워의 값, 이전 베어스 파워의 값이 생성 되었습니다. 데이터 창에서 우리는 베어스 파워의 현재 값을 찾을 수 있습니다.

                              이전 데이터상 감소한 경우:

                               베어스 파워 움직임 - 하락 - 이전 데이터

                              이전 차트에서 볼 수 있듯이, 데이터 창에서 베어스 파워의 마지막 값을 찾을 수 있으며 차이를 발견할 수 있습니다.

                                전략 2: 베어스 파워 - 강함 또는 다이버전스

                                  다음은 이 전략을 실행하는 거래 시스템을 만드는 전체 코드입니다.

                                  //+------------------------------------------------------------------+
                                  //|                          Bear's Power - Strong or Divergence.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()
                                    {
                                     double bearpowerArray[];
                                     MqlRates priceArray[];
                                  
                                     ArraySetAsSeries(bearpowerArray,true);
                                     int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                  
                                     int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                                  
                                     CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                                  
                                     double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                     double bearpowerPrevVal = NormalizeDouble(bearpowerArray[1],6);
                                  
                                     double currentLowVal=NormalizeDouble(priceArray[2].low,6);
                                     double prevLowVal=NormalizeDouble(priceArray[1].low,6);
                                  
                                     if(currentLowVal<prevLowVal && bearpowerVal<bearpowerPrevVal)
                                       {
                                        Comment("Strong Move","\n",
                                                "Current Low Value is ",currentLowVal,"\n",
                                                "Previous Low Value is ",prevLowVal,"\n",
                                                "Bear's Power Value is ",bearpowerVal,"\n",
                                                "Bear's Power Previous Value is ",bearpowerPrevVal);
                                       }
                                  
                                     if(currentLowVal<prevLowVal && bearpowerVal>bearpowerPrevVal)
                                       {
                                        Comment("Bullish divergence","\n",
                                                "Current Low Value is ",currentLowVal,"\n",
                                                "Previous Low Value is ",prevLowVal,"\n",
                                                "Bear's Power Value is ",bearpowerVal,"\n",
                                                "Bear's Power Previous Value is ",bearpowerPrevVal);
                                       }
                                    }
                                  //+------------------------------------------------------------------+

                                  이 코드에서의 차이점:

                                  두 개의 배열, bearpowerArray와 priceArray를 생성합니다:

                                     double bearpowerArray[];
                                     MqlRates priceArray[];

                                  이렇게 생성된 배열을 정렬하기 위해 앞서 배운 것과 동일한 "ArraySetAsSeries" 함수를 사용한 bearpowerArray를 사용할 것입니다. 가격 배열의 경우 "CopyRates" 함수를 사용하여 "MqlRates"의 과거 데이터를 가져오고 그 매개 변수는 다음과 같습니다:

                                  • 심볼 명: (_symbol)을 사용합니다.
                                  • 차트 주기: (_period)를 사용합니다.
                                  • 시작 시간: (0)을 사용합니다.
                                  • 정지 시간: (3)을 사용합니다.
                                  • rates array: (pArray)를 사용합니다.
                                     ArraySetAsSeries(bearpowerArray,true);
                                     int Data=CopyRates(_Symbol,_Period,0,3,priceArray);

                                  "NormalizeDouble" 함수를 사용하여 베어스 파워의 현재 및 이전의 고점과 저점 값을 정의합니다.

                                     double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                     double bearpowerPrevVal = NormalizeDouble(bearpowerArray[1],6);
                                  
                                     double currentLowVal=NormalizeDouble(priceArray[2].low,6);
                                     double prevLowVal=NormalizeDouble(priceArray[1].low,6);

                                  전략의 조건:

                                  강한 움직임의 경우:

                                     if(currentLowVal<prevLowVal && bearpowerVal<bearpowerPrevVal)
                                       {
                                        Comment("Strong Move","\n",
                                                "Current Low Value is ",currentLowVal,"\n",
                                                "Previous Low Value is ",prevLowVal,"\n",
                                                "Bear's Power Value is ",bearpowerVal,"\n",
                                                "Bear's Power Previous Value is ",bearpowerPrevVal);
                                       }

                                  강세 다이버전스의 경우:

                                     if(currentLowVal<prevLowVal && bearpowerVal>bearpowerPrevVal)
                                       {
                                        Comment("Bullish divergence","\n",
                                                "Current Low Value is ",currentLowVal,"\n",
                                                "Previous Low Value is ",prevLowVal,"\n",
                                                "Bear's Power Value is ",bearpowerVal,"\n",
                                                "Bear's Power Previous Value is ",bearpowerPrevVal);
                                       }

                                  이 코드를 컴파일하면 내비게이터 창에서 EA를 찾을 수 있습니다:

                                  베어스 파워 내비3

                                  이 EA를 차트에 끌어다 놓으면 다음과 같은 창이 나타납니다:

                                  베어스 파워 - 스트롱 또는 다이버전스 승리

                                  "확인"을 누르면 다음과 같이 EA가 차트에 첨부되어 있는 것을 확인할 수 있습니다:

                                   베어스 파워 - 강함 또는 발산 부착

                                  이전 차트에서 볼 수 있듯이, 차트의 오른쪽 상단 모서리에 베어스 파워 - 강세 또는 다이버전스 EA가 차트에 첨부되어 있습니다. 이후 이 전략에 따라 생성된 신호를 다음과 같이 찾을 수 있습니다.

                                  현재 데이터상 강한 움직임이 있는 경우:

                                   베어스 파워 - 강세 또는 다이버전스 - 강세 - 현재 데이터

                                  차트에서 볼 수 있듯이 다음과 같은 코멘트로 신호를 얻을 수 있습니다:

                                  • 강한 움직임
                                  • 현재 저점 값
                                  • 이전 저점 값
                                  • 현재 베어스 파워 값
                                  • 이전 베어스 파워 값 

                                  이전 데이터로 강한 경우:

                                   베어스 파워 - 강세 또는 다이버전스 - 강세 - 이전 데이터

                                  이전 차트와 마찬가지로 차트에 동일한 값의 신호와 동일한 주석이 있지만 이전의 데이터 창이 있습니다.

                                  현재 데이터상 강세 다이버전스인 경우:

                                  베어스 파워 - 강세 또는 다이버전스 - 강세 다이버전스 - 현재 데이터

                                  이전 차트에서 볼 수 있듯이 차트에 다음과 같은 값을 가진 코멘트가 있습니다:

                                  • 강세 다이버전스
                                  • 현재 저점 값
                                  • 이전 저점 값
                                  • 현재 베어스 파워 값
                                  • 이전 베어스 파워 값  

                                  이전 데이터상 강세 다이버전스인 경우:

                                   베어스 파워 - 강세 또는 다이버전스 - 강세 다이버전스 - 이전 데이터

                                  이전 차트에서 볼 수 있듯이 차트에 이전 데이터 창과 동일한 값의 코멘트가 있습니다.

                                    전략 3: 베어스 파워 신호

                                      다음은 이 전략을 기반으로 트레이딩 시스템을 만드는 전체 코드입니다.

                                      //+------------------------------------------------------------------+
                                      //|                                         Bear's Power signals.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()
                                        {
                                         double bearpowerArray[];
                                         double maArray[];
                                         MqlRates priceArray[];
                                      
                                         ArraySetAsSeries(bearpowerArray,true);
                                         ArraySetAsSeries(maArray,true);
                                         int Data=CopyRates(_Symbol,_Period,0,3,priceArray);
                                      
                                         int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                                         int maDef = iMA(_Symbol,_Period,13,0,MODE_EMA,PRICE_CLOSE);
                                      
                                         CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                                         CopyBuffer(maDef,0,0,3,maArray);
                                      
                                         double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                      
                                         double emaVal = NormalizeDouble(maArray[0],6);
                                      
                                         double currentClose=NormalizeDouble(priceArray[2].close,6);
                                      
                                         if(bearpowerVal>0 && currentClose>emaVal)
                                           {
                                            Comment("Buy Signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current EMA Value is ",emaVal,"\n",
                                                    "Bear's Power Value is ",bearpowerVal);
                                           }
                                      
                                         if(bearpowerVal<0 && currentClose<emaVal)
                                           {
                                            Comment("Sell Signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current EMA Value is ",emaVal,"\n",
                                                    "Bear's Power Value is ",bearpowerVal);
                                           }
                                        }
                                      //+------------------------------------------------------------------+
                                      

                                      이 코드에서의 차이점:

                                      세 개의 배열, bearpowerArray, naArray, priceArray를 생성합니다.

                                         double bearpowerArray[];
                                         double maArray[];
                                         MqlRates priceArray[];

                                      이렇게 생성된 배열을 정렬합니다.

                                         ArraySetAsSeries(bearpowerArray,true);
                                         ArraySetAsSeries(maArray,true);
                                         int Data=CopyRates(_Symbol,_Period,0,3,priceArray);

                                      앞서 설명한 "iBearsPower"를 사용하여 베어스 파워 지표를 정의하고 이동평균 지표의 핸들을 반환하는 "iMA" 함수를 사용하여 이동평균 지표를 정의합니다.

                                         int bearpowerDef = iBearsPower(_Symbol,_Period,13);
                                         int maDef = iMA(_Symbol,_Period,13,0,MODE_EMA,PRICE_CLOSE);

                                      "CopyBuffer" 함수를 사용하여 베어스 파워와 이동 평균 지표에서 데이터를 가져와 배열을 채웁니다.

                                         CopyBuffer(bearpowerDef,0,0,3,bearpowerArray);
                                         CopyBuffer(maDef,0,0,3,maArray);

                                      현재 베어스 파워, 지수 이동 평균, 현재 종가를 정의합니다.

                                         double bearpowerVal = NormalizeDouble(bearpowerArray[0],6);
                                         double emaVal = NormalizeDouble(maArray[0],6);
                                         double currentClose=NormalizeDouble(priceArray[2].close,6);

                                      이 전략의 조건:

                                      매수 신호의 경우:

                                         if(bearpowerVal>0 && currentClose>emaVal)
                                           {
                                            Comment("Buy Signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current EMA Value is ",emaVal,"\n",
                                                    "Bear's Power Value is ",bearpowerVal);
                                           }

                                      매도 신호의 경우:

                                         if(bearpowerVal<0 && currentClose<emaVal)
                                           {
                                            Comment("Sell Signal","\n",
                                                    "Current Close Value is ",currentClose,"\n",
                                                    "Current EMA Value is ",emaVal,"\n",
                                                    "Bear's Power Value is ",bearpowerVal);
                                           }

                                      이 코드를 컴파일하면 내비게이터 창에서 다음과 같은 EA를 찾을 수 있습니다:

                                      베어스 파워 내비 카피 4

                                      이 EA를 차트에 끌어다 놓으면 다음과 같이 이 EA의 창이 나타납니다:

                                      베어스 파워 시그널스 승리

                                      "확인"을 누르면 다음과 같이 EA가 차트에 첨부되어 있는 것을 확인할 수 있습니다:

                                       곰 파워 신호 부착

                                      EA가 차트의 오른쪽 상단 모서리에 첨부되어 있는 것을 볼 수 있습니다. 그러면 이 트레이딩 시스템을 기반으로 생성된 신호를 다음과 같이 찾을 수 있습니다:

                                      매수 신호의 경우:

                                       베어스 파워 시그널 - 구매

                                      차트에서 볼 수 있듯이 다음과 같은 값의 코멘트가 있는 것을 볼 수 있습니다:

                                      • 매수 신호
                                      • 현재 종가 값
                                      • 현재 EMA 값
                                      • 베어스 파워 값

                                      매도 신호인 경우:

                                      베어스 파워 시그널 - 판매

                                      차트에서 볼 수 있듯이 원하는 신호는 다음과 같은 값으로 차트에 코멘트로 표시됩니다:

                                      • 매도 신호
                                      • 현재 종가 값
                                      • 현재 EMA 값
                                      • 베어스 파워 값


                                      결론

                                      이와 같은 주제를 통해 이 지표의 기본 사항을 다루었습니다. 베어스 파워 정의라는 주제를 통해 베어스 파워 지표가 무엇인지, 무엇을 측정하는지, 어떻게 계산할 수 있는지, MetaTrader 5에 내장된 베어스 파워 지표를 어떻게 삽입하고 사용할 수 있는지 등에 대해 자세히 알아보았습니다. 지표에 대해 자세히 알아 본 후 언급 된 몇 가지 간단한 전략을 통해 지표의 기본 아이디어를 기반으로 하여 지표를 사용하는 방법을 배웠습니다. 이러한 전략의 기본적인 목표는 이 지표를 사용하는 방법을 배우는 것이며 실계정으로 사용하기 전에 테스트하여 자신에게 적합하고 수익을 창출 할 수 있는지 확인해야 합니다. 전략은 다음과 같습니다:

                                      베어스 파워 이동: 이 전략은 베어스 파워 지표가 상승 또는 하락하는 경우 베어스 파워 지표의 방향을 결정하는 데 사용할 수 있습니다.

                                      베어스 파워 강세 또는 다이버전스: 이 전략은 강한 움직임이 있는지 또는 다이버전스가 있는지 여부를 판단하는 데 사용할 수 있습니다.

                                      베어 파워 시그널: 이 전략은 매수 또는 매도 시그널을 받는 데 사용할 수 있습니다.

                                      그 후 우리는 살펴본 모든 전략에 대한 단계별 청사진을 설계하는 방법을 배웠는데 이 청사진을 통해 아이디어를 정리하고 이후 좀 더 쉽고 원활하게 거래 시스템을 만드는데 도움이 되도록 하였습니다. 그런 다음이 기사에서 가장 흥미로운 주제인 모든 전략에 대한 거래 시스템을 만들어 MQL5에서 코딩 한 후 자동으로 신호를 수신하여 MetaTrader 5 거래 터미널에서 실행하는 방법을 알아 보았습니다.

                                      가능하면 여러분의 코딩 실력을 향상시키고 프로그래머로서의 학습 곡선을 향상시키는 데 도움이 될 것이므로 언급된 코드를 직접 작성해 보시기 바랍니다. 프로그래밍 실력을 향상시키기 위해서는 코드에 최대한 집중하고 문제를 최대한 많이 해결하려고 노력해야 합니다. 프로그래밍은 원활하고 쉽고 효과적이며 정확하게 거래할 수 있게 합니다. 우리가 향상시켜야 하는 중요한 기술입니다. 또한 코딩은 우리가 보통 구체적이고 단계별로 수행하는 작업을 컴퓨터 또는 프로그램이 자동으로 수행 할 수 있게 하므로 시간을 절약 할 수 있으며 이러한 접근 방식은 프로그램이 감정없이 필요한 작업을 수행하도록 하므로 거래에 부정적인 영향을 미치는 해로운 감정을 피하는 데 도움이 될 수 있습니다.

                                      이 글이 트레이딩 실력을 향상하고 트레이딩 결과를 개선하는 데 도움이 되길 바랍니다. 가장 인기있는 기술 지표를 기반으로 거래 시스템을 설계하는 방법을 배우는 방법에 대한 유사한 기사를 더 읽고 싶다면 이 기사에서 공유 한 많은 기술 지표와 이를 기반으로 한 거래 시스템을 설계하고 간단한 전략을 통해 기본 개념을 기반으로 하는 이 시리즈의 다른 기사를 읽어 보시기 바랍니다. 이 시리즈에서 여러분들은 이동평균, MACD, 스토캐스틱, RSI, ADX 등 가장 많이 사용되는 기술 지표들을 찾을 수 있을 것입니다.

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

                                      모집단 최적화 알고리즘: 개미 군집 최적화(ACO) 모집단 최적화 알고리즘: 개미 군집 최적화(ACO)
                                      이번에는 개미 군집 최적화 알고리즘을 분석해 보겠습니다. 이 알고리즘은 매우 흥미롭고 복잡합니다. 이 글에서는 새로운 유형의 ACO를 만들기 위한 시도를 할 것입니다.
                                      포스 인덱스 지표로 트레이딩 시스템을 설계하는 방법 알아보기 포스 인덱스 지표로 트레이딩 시스템을 설계하는 방법 알아보기
                                      가장 인기 있는 보조지표로 트레이딩 시스템을 설계하는 방법을 소개하는 시리즈의 새로운 글에 오신 것을 환영합니다. 이 글에서는 새로운 기술 지표와 포스 인덱스 지표를 사용하여 트레이딩 시스템을 만드는 방법에 대해 알아보겠습니다.
                                      모집단 최적화 알고리즘: 인공 꿀벌 군집(ABC) 모집단 최적화 알고리즘: 인공 꿀벌 군집(ABC)
                                      이 글에서는 인공 꿀벌 군집의 알고리즘을 연구하고 기능적 공간을 연구하는 새로운 원칙을 더해 우리의 지식을 보완할 것입니다. 이 글에서는 고전적인 버전의 알고리즘에 대한 저의 해석을 보여드리겠습니다.
                                      Expert Advisor 개발 기초부터(19부): 새로운 주문 시스템(II) Expert Advisor 개발 기초부터(19부): 새로운 주문 시스템(II)
                                      이 글에서는 "무슨 일이 일어나는지를 보여주는" 그래픽 주문 시스템을 개발할 것입니다. 이번에는 처음부터 다시 시작하는 것이 아니라 거래하는 자산의 차트에 더 많은 객체와 이벤트를 추가하여 기존 시스템을 수정할 예정입니다.