English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
preview
Expert Advisor가 실패하는 이유 분석

Expert Advisor가 실패하는 이유 분석

MetaTrader 5전문 어드바이저 | 3 8월 2022, 16:08
205 0
Richard Poster
Richard Poster

소개

Expert Advisor(EA)는 몇 달에서 몇 년 동안 좋은 성과를 낼 수 있지만 성과가 좋지 않은 기간이 있게 되기도 합니다. EA는 10년과 같은 장기간에 걸쳐 안정적인 수익을 내는 경우가 거의 없습니다. EA가 과거에 저조한 성과를 보인 적이 있는데 미래에 좋은 성과를 낼 것으로 기대할 수 있을까요?

이 분석에서 두 가지의 질문이 생겨납니다: EA의 성능에 큰 영향을 미치는 시계열 데이터에 어떤 변화가 발생하는가? EA의 성능이 좋지 않을 때와 성능이 좋을 때를 예측할 수 있는 기술적 지표가 있는가? 그러한 지표는 가장 가치가 있는 지표일 것입니다!


이동 평균 교차 트리거

이러한 문제를 알아보기 위해 16년 동안의 15분 통화 데이터와 이동 평균 교차 기반의 테스트 베드 전략이 사용됩니다. 이동 평균 교차(MAC) 트리거의 경우 빠른 단순 이동 평균(SMA)이 느린 SMA를 교차할 때 매수 신호가 생성되고 빠른 SMA가 느린 SMA를 교차할 때 매도 신호가 생성됩니다. MAC 전략은 연구를 위한 좋은 테스트 베드를 제공해야 합니다. MAC(이동 평균 교차) 전략의 주요 입력 매개변수는 빠른 SMA기간과 느린 SMA 기간입니다. 이러한 연구에서 빠른 SMA 기간은 일반적으로 1~4이고 느린 SMA 기간은 10~150이며 둘 다 테스트 기간 동안 고정된 것으로 가정합니다.

그림 1은 2006년 1월부터 2021년 12월까지 EURUSD 통화 쌍에 대한 SMA 교차 트리거의 이익 실현의 작동을 보여줍니다. 최적화 된 SMA로 빠른 기간인 2와 느린 기간인 80의 경우 EA는 일부 간격에 대해 양의 수익을 내고 다른 간격에 대해서는 음의 수익을 얻습니다. 2008년 1월 ~ 2013년 6월 기간은 꾸준히 이익의 증가를 보였습니다. 그림 2는 최적화된 SMA 기간인 1과 80에 대해 동일한 간격 동안 GBPUSD 통화 쌍에 대한 SMA 크로스오버 트리거의 이익 실현의 작동을 보여줍니다. GBPUSD 차트는 이익의 실현이 짧게 있었음을 보여줍니다.

크로스 Fig_1_EURUSD_SMA크로스

 그림 1.  EURUSD SMA 교차 트리거 이익 (0.1 랏)


     

크로스 Fig_2_GBPUSD_SMA크로스

  그림 2. GBPUSD SMA 교차 트리거 이익 (0.1 랏)

그림 1과 2에 표시된 시간의 움직임이 있다고 할 때 기술 지표의 시간 움직임과 이동 평균 교차 이익 반환 시간의 움직임 사이에 관계가 있는지 확인하기 위해 일반적인 기술 지표의 시간의 움직임을 조사할 수 있습니다. 


전통적인 기술 지표의 움직임

몇 가지의 표준 기술 지표를 조사하여 양수 수익률과 음수 수익률의 시간 영역에서 이들 지표의 움직임이 다른지 확인할 수 있습니다. 그림 3은 EURUSD에 대한 16년 동안의 월간 ATR(Average True Range) 지표를 보여줍니다. ATR 지표는 통화 쌍의 변동성을 측정합니다. 그것은 명확한 시간 의존적 행동을 나타내지만 그림 1의 이익 시간 행동과는 관련이 없어 보입니다. 흥미롭게도 그림 3은 2008년 말과 2020년 초 경제 위기 주변의 극심한 변동성을 보여줍니다. 그림은 트리거 로직을 위해 가격 변동의 절대 임계값을 사용하는 것은 현명하지 않으며 평활화된 ATR 값이 고려되어야 한다는 것을 보여줍니다. 또 다른 일반적인 기술 지표는 상단과 하단 볼린저 밴드의 스프레드입니다. 이 지표는 변동성과 추세 강도 모두의 영향을 받아야 합니다. 놀랍게도 그림 4와 같이 장기 월간 행동은 ATR 지표와 거의 동일합니다. ATR 지표와 마찬가지로 그림 1의 EURUSD 데이터에서 양수 과 음수 반환 시간 영역에 해당하는 움직임은 없습니다. GBPUSD 데이터에 대해서도 유사한 결과가 나타납니다. 장기 변동성은 그림 1과 2에서 볼 수 있는 시간 움직임을 설명하지 못합니다.


Fig_3_ATRvsMth

그림 3. EURUSD ATR, 월간 평균

FIg_4_BBSpreadVsMth

그림 4. EURUSD 볼린저 밴드 스프레드, 월간 평균


지표로서의 자동 상관 함수(AutoCorrelation Function )

ATR과 볼린저 밴드의 지표와 달리 자동 상관 함수(ACF;AutoCorrelation Function )는 변동성에 의존하지 않습니다. ACF(AutoCorrelation Function )는 시계열 데이터에서 패턴을 찾는 데 유용한 도구입니다. ACF는 시계열의 요소와 지연 시간만큼 지연된 이 시계열 요소 간의 상관 관계를 측정합니다. 데이터에 추세가 있는 경우 작은 시차에 대한 ACF는 양수 값을 갖습니다. 이 분석에서 시계열의 Yi 요소는 막대 i의 (종가 - 시가)로 정의됩니다.

N 요소 Yi , i =1...N의 시계열에 대해 ACF는 다음과 같이 정의됩니다.

ACF_EquationV2

일련의 가격 데이터에 대한 자동 상관 함수는 일련의 막대 대 막대 가격 변화 데이터의 자동 상관과 매우 다릅니다. 예를 들어, 일련의 숫자 {1,2,3..14}의 경우 ACF는 0.786입니다. 해당 배열의 연속적인 요소 간의 일련의 차이에 대해 ACF는 0에 가깝습니다(0으로 나누는 것을 피하기 위해 값에 약간의 노이즈가 있다고 가정).

ACF의 계산은 다음 코드 조각에서 구현됩니다.

 double GetAtCorrVal(double &ClsOpn[],int CorrPer, int LagPer,int joff ) {
   double corr;
   double AIn[],BIn[];
   double XMean,XNum,XDen;
   int jj;
   ArrayResize(AIn,CorrPer);
   ArrayResize(BIn,CorrPer);
   XMean = 0.;
   XNum = 0.;
   XDen = 0.;
   corr = 0.;
   if(CorrPer<2)
    {
     Print("No AutoCorr Processing Allowed ");
     return(corr);
    }
   // mean
   for(jj=0;jj<CorrPer;jj++)
    {
     XMean +=ClsOpn[jj+joff];
    }
   XMean = XMean/CorrPer;
  // variances
   for(jj=0;jj<CorrPer;jj++)
    {
     if(jj<(CorrPer-LagPer))
       XNum  += (ClsOpn[jj+joff]-XMean)*(ClsOpn[jj+LagPer+joff]-XMean);
     XDen += (ClsOpn[jj+joff]-XMean)*(ClsOpn[jj+joff]-XMean);
    }  
    if(XDen==0.)
     {
      corr = 0.;
     }
    else
    corr = XNum/XDen;
   return(corr);
  }
//----------------------------------------------------------------

  

그림 5는 6개월의 평활 기간을 가진 EURUSD 데이터에 대한 16년 동안의 ACF의 월 평균을 보여줍니다. 그림 1은 2008년과 2012년 말 사이의 수익성 있는 실적을 보여 주는 반면 그림 5는 이 지역에서 약간 더 높은 ACF 값을 보여주며 MAC 전략의 수익 실적과 ACF의 값 사이에 가능한 관계를 보여줍니다.


Fig_5_EURUSD_ACFvsMth

그림 5. EURUSD 자동 상관함수의 월간 평균


그림 6에 표시된 GBUUSD 데이터의 경우 수익의 성과(그림 2에 표시)와 ACF 값 사이의 약한 연결을 볼 수 있습니다.

Fig_6_GBPUSD_ACFvsMth


 그림 6. GBPUSD 자동 상관함수 월평균

AutoCorrelation Function(자동 상관 함수)는 지표(AutoCorr.mq5)로 사용할 수 있지만 그림 7에서 볼 수 있듯이 그리 좋은 추세 식별 지표는 아닙니다.


Fig_7_EURUSD_ACFIndicator

그림 7. ACF 지표, 지연=1

ACF 시간 움직임과 SMA 교차 전략

더 많은 정보는 SMA 교차점 직전 지점(Trigger ACF)과 교차점 직후, 거래가 아직 열려 있는 동안(Trade ACF) ACF의 시간 움직임을 보면 찾을 수 있습니다. ACF의 두 가지 유형인 Trade ACF와 Trigger ACF에는 고유한 속성이 있습니다. 그림 8과 9는 EURUSD과 GBPUSD 데이터에 대한 거래 ACF를 보여줍니다. Strategy Tester를 사용하여 ACF 값을 시간의 함수로 이익 거래와 손실 거래에 대해 별도로 표시할 수 있습니다. 두 차트 모두 손실 거래나 수익 거래 사이에서 ACF의 시간 변화 분리를 보여줍니다. 그림 1(EURUSD)의 2008년 1월-2013년 6월 수익 영역은 ACF의 분리 역시 큰 그림 8의 영역과 대략 일치합니다. 2018년 1월부터는 손익 거래에 대한 ACF 값 사이에 거의 차이가 없습니다. 그림 1에서 이는 수익의 평평한 영역에 해당합니다.


Fig_8_EURUSD_TradeACF

  그림 8.  SMA 교차 트리거에 대한 EURUSD의 자동 상관 거래


Fig_9_GBPUSD_TradeACF

그림 9. SMA 교차 트리거에 대한 GBPUSD의 자동 상관 거래

그림 10과 11은 EURUSD과 GBPUSD 데이터에 대한 Trigger ACF를 보여줍니다. 이 두 차트의 목적은 Trigger ACF의 값이 SMA 교차 전략의 수익성을 개선하기 위해 Expert Advisor의 필터로 사용될 수 있는지 여부를 조사하는 것입니다. Trade ACF 데이터와 비교하여 Trigger ACF 데이터는 양수의 이익 수익률과 음수의 이익 수익률 간의 차이가 덜함을 보여줍니다. 이것은 트리거 필터로서의 가치를 약화시킵니다. 그러나 ACF 값은 시간상 거의 평평합니다. 이는 ACF에 대한 고정 임계값이 트리거 필터로 사용될 수 있음을 나타내 주는 것입니다. 이익/손실 곡선은 서로 크게 튀고 있으며 이는 거래가 수익성이 없는 시간대의 영역에 있음을 의미합니다.


Fig_10_EURUSD_TriggerCF

 그림 10.  SMA 교차 트리거에 대한 EURUSD의 자동 상관 트리거


Fig_11_GBPUSD_TriggerACF

그림 11. SMA 교차 트리거에 대한 GBPUSD에 대한 자동 상관 트리거


SMA 교차 트리거용 ACF 필터

양수 수익률과 음수 수익률이 있는 거래 사이에서 자동 산관 함수(ACF)의 작은 차이가 있음에도 불구하고(그림 10 과 11) 자동 상관 임계값 요구 사항이 SMA 교차 트리거에 추가되면 Expert Advisor의 수익률 성과는 수익 성과가 좋지 않은 지역에서 훨씬 개선됩니다. 그림 12와 13은 EURUSD 과 GBPUSD 데이터에 대한 추가적인 ACF 필터가 있는 EA의 수익 수익률을 보여줍니다. 전체 16년 기간이 사용됩니다. 그림 1 과 2를 그림 12 과 13과 비교하면 자동 상관 임계값 요구 사항이 적용될 때 EURUSD와 GBPUSD 데이터 모두에 대한 수익률 성능이 크게 향상됩니다.


Fig_12_EURUSD_SMACrossCorr

그림 12. ACF 필터가 있는 EURUSD 교차 트리거

Fig_13_GBPUSD_SMACrossCorr

그림 13. ACF 필터가 있는 GBPUSD 교차 트리거


그림 14는 전략 테스터로 알아 본 성능 결과 테이블을 보여줍니다. EURUSD 과 GBPUSD 데이터 모두에서 상당한 개선이 보입니다. 두 경우 모두 ACF 필터가 활성화되면 총 이익이 약 50% 증가하고 거래당 이익(PO)도 크게 향상됩니다.

트리거 유형

# 거래

이익 $

(0.1 로트)

수익/손실(PF)

수익/거래(PO)

EURUSD SMA 크로스

3160

5830.

1.10

1.85

EURUSD SMA 크로스 + ACF

1548

8511.

1.33

5.50

GBPUSD SMA 크로스

3672

5352.

1.07

1.46

GBPUSD SMA 크로스 + ACF

3096

8317.

1.13

2.69

그림 14. EURUSD 과 GBPUSD 데이터의 테스트 성능 표


SMA 교차 전략에서 느린 기간의 SMA에 대한 ACF의 의존성


성공적인 거래와 실패한 거래에 대한 느린 SMA 기간 선택과 관련한 평균 자동 상관 함수의 의존성을 조사하는 것도 중요합니다. 이는 그림 15의 EURUSD M15 데이터에 대해 표시됩니다. 거래를 개시하는 전략의 일부로 상관 임계값이 사용되지 않습니다. ACF 값에 관계없이 SMA 교차 전략과 관련한 최적의 느린 기간은 80으로 결정되었습니다. 그림 15가 보여주는 것은 65에서 80 사이의 SMA 느린 기간에서 거래의 승패 사이의 평균 ACF 값이 가장 큰 차이가 있다는 것입니다. 추가 분석을 통해 ACF 정보를 사용하여 거래 개시 시 측정된 자동 상관 값을 기반으로 최적의 느린 기간을 결정할 수 있습니다. 


Fig_15_AvgACVvsSlowPeriod

그림 15. EURUSD에 대한 평균 ACF 대 SMA 느린 기간

결론

자동 상관 함수는 Expert Advisor의 성능을 향상시키는 데 유용한 지표입니다. 성능이 좋지 않은 영역을 필터링하여 테스트 베드 트리거의 성능을 향상시킵니다.

일반적으로 자동 상관 함수를 포함한 상관 계수는 거래의 효율성을 개선하기 위해 연구할 만한 유익한 영역을 제공합니다. 변동성 효과에 영향을 받지 않으며 추세 형성 과 반전을 포함한 가격 패턴에 민감합니다.



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

하나의 차트에 여러개의 지표 넣기(파트 06): MetaTrader 5를 RAD 시스템으로 전환하기(II) 하나의 차트에 여러개의 지표 넣기(파트 06): MetaTrader 5를 RAD 시스템으로 전환하기(II)
이전 기사에서 저는 MetaTrader 5 객체를 사용하여 차트 거래를 생성하고 플랫폼을 RAD 시스템으로 전환하는 방법을 보여드렸습니다. 시스템은 매우 잘 작동하며 많은 독자분들은 제가 제안한 시스템에서 여러가지 확장된 기능들을 할 수 있는 라이브러리를 만드는 것에 대해 생각해 봤을 것입니다. 그렇게 하면 보다 멋지고 사용하기 쉬운 인터페이스로 보다 직관적인 Expert Advisor를 개발할 수 있을 것입니다.
RSI 기반의 트레이딩 시스템을 설계하는 방법 알아보기 RSI 기반의 트레이딩 시스템을 설계하는 방법 알아보기
이 기사에서는 트레이딩의 세계에서 가장 인기 있고 일반적으로 사용되는 지표 중 하나인 RSI에 대해 공유합니다. 이 글에서 여러분은 이 지표를 사용하여 거래 시스템을 설계하는 방법을 배우게 됩니다.
MACD을 기반으로 한 거래 시스템을 설계하는 방법 배우기 MACD을 기반으로 한 거래 시스템을 설계하는 방법 배우기
이 기사에서는 이 시리즈에서 새로운 도구를 배웁니다: 가장 인기 있는 기술 지표 중 하나인 MACD(Moving Average Convergence Divergence)를 기반으로 하는 거래 시스템을 설계하는 방법을 배웁니다.
하나의 차트에 여러개의 지표 넣기(파트 05): MetaTrader 5를 RAD 시스템으로 전환하기(I) 하나의 차트에 여러개의 지표 넣기(파트 05): MetaTrader 5를 RAD 시스템으로 전환하기(I)
세상에는 프로그래밍을 할 줄은 모르지만 상당히 창의적이고 훌륭한 아이디어를 가지고 있는 사람들이 많이 있습니다. 그러나 이들은 프로그래밍 지식이 부족하여 이러한 아이디어를 구현하지 못합니다. MetaTrader 5 플랫폼을 사용하여 마치 플랫폼이 IDE 자체인 것 처럼 차트 트레이드(Chart Trade)를 만드는 방법을 함께 살펴보겠습니다.