Python에서 이동 평균을 수행하는 방법


Best answer

여러 유형의 이동 평균을 제시하고 Python에서 함수를 코딩하는 Medium에 대한 기사를 작성했습니다 (전체 형식화가 어렵 기 때문에 코드 링크 : Python에서 다양한 유형의 이동 평균을 코딩하는 방법 ). 기사는 다음과 같습니다.

거래 소프트웨어에는 이미 사전 설치되어 차트로 작성할 준비가 된 다양한 유형의 이동 평균이 제공됩니다. 그러나 잠재적 인 전략을 백 테스트 할 때 사용할 수 있도록 이러한 이동 평균을 계산하는 방법을 이해하는 것은 흥미로울 수 있습니다.

자체 방법을 원한다면, 아래는 반드시 당신에게 관심이 될 것입니다. 필요한 것은 SPYDER와 같은 파이썬 인터프리터뿐입니다. 다른 “알려진”이동 평균 유형은 다음과 같습니다.

  • 단순 이동 평균.
  • 지수 이동 평균.
  • 평활 한 이동 평균.
  • 선형 가중치 이동 평균.

각각을 살펴보고 정의하고 코딩하고 차트를 작성합니다.

GBPUSD 일일 차트. 검정색, 200 일 MA, 진홍색, 200 일 EMA, 노란색 200 일 평활화 MA, 분홍색 200 일 선형 가중 MA.

단순 이동 평균

이름에서 알 수 있듯이 이것은 통계의 모든 곳과 기본적으로 우리 삶의 다른 부분에서 사용되는 평범한 단순 평균입니다. 단순히 관측치의 총 값을 관측치 수로 나눈 값입니다.

수학적으로 말하면 다음과 같이 기록 할 수 있습니다.

python에서 이동 평균을 계산하는 함수를 다음과 같이 정의 할 수 있습니다.

[Python 코드가 여기에 있습니다. 코드를 붙여 넣는 데 시간이 많이 걸리므로 위의 원본 기사 링크를 참조하십시오.]

이 함수는 Data <로 표시되는 데이터 구조를 사용합니다. / span> 변수, 기간 변수로 표시되는 이동 평균 기간 (20, 60, 200 등), 무엇에 적용 할 것인지 ( OHLC 데이터 구조에서는 onwhat 변수로 표시되는 Python 색인 생성이 0에서 시작하므로 종가로 3을 선택하고 여기서 variable은 이동 평균 열을 표시 할 위치입니다. 새 열을 자동으로 생성하지 않고 단순히 채우기 만하므로이 작업을 수행하려면 4 개 이상의 열 배열이 있어야합니다.

EURUSD 200 일 단순 이동 평균이 포함 된 일일 시간 범위

지수 이동 평균

모든 관측치에 동일한 가중치를 부여하는 단순 이동 평균과 달리 지수 이동 평균은 최근 관측치에 더 많은 가중치를 부여합니다. 최근 움직임과 관련하여 단순한 이동 평균 이상으로 반응합니다.

수학적으로 말하면 다음과 같이 쓸 수 있습니다.

평활 계수는 종종 2입니다. 평활 계수 (알파라고도 함)를 늘리면 더 최근의 관측치가 더 많은 가중치를 갖게됩니다.

python 언어에서 , 다음과 같이 EMA를 계산하는 함수를 정의 할 수 있습니다.

[Python 코드는 여기에 있습니다. 코드를 붙여 넣을 때 위의 원본 문서 링크를 참조하십시오. 시간이 많이 걸립니다.]

이 함수는 위에 제시된 EMA 함수를 재현 할 뿐이므로 자명합니다.

EURUSD 200 일 지수 이동 평균이있는 일일 시간 범위

원활한 이동 평균

이 이동 평균은 일반적인 상황을 고려하며 최근 움직임의 영향을 덜받습니다. 제가 가장 좋아하는 트렌드 추종 지표입니다. 수학적으로 말하면 EMA 함수의 Days 변수에 2를 곱하고 1을 빼면 찾을 수 있습니다. 즉, 지수 이동 평균을 평활화 한 것으로 변환하려면 지수 이동을 변환하는 파이썬 언어로이 방정식을 따릅니다. 평균을 평활화 :

smoothed = (exponential * 2) - 1 # From exponential to smoothed

200 일 평활 이동 평균이있는 EURUSD 일일 시간 범위

선형 가중 이동 평균

최근 데이터에 더 많은 가중치를 부여하는 단순 이동 평균. 가장 최근의 관측치가 가장 큰 가중치를 가지며 이전 관측치마다 점차적으로 감소하는 가중치를가집니다.직관적으로, 다른 이동 평균보다 지연이 적지 만 가장 적게 사용되기 때문에 지연 감소에서 얻는 것은 인기도를 잃습니다.

수학적으로 말하자면 다음과 같이 쓸 수 있습니다.

python 언어에서는 다음과 같이 이동 평균을 계산하는 함수를 정의 할 수 있습니다.

[Python 코드는 여기에 있습니다. 코드를 붙여 넣는 데 시간이 많이 걸리므로 위의 원본 문서 링크를 참조하세요.]

EURUSD 200 일 가중 이동 평균이 포함 된 일일 시간 범위

기본적으로 두 개의 숫자 [1, 2] 및 선형 가중 평균을 계산하고 싶으면 다음을 수행합니다.

  • (2 x 2) + (1 x 1) = 5
  • 5/3 = 1.66

이는 숫자 2의 시계열이 가장 최근 관측치라고 가정합니다.

결론

그러면 어느 것을 선택할까요? 그 질문은 트레이더의 위험 프로필과 이동 평균에 대한 그녀의 익숙함에 맡겨집니다. 일부는 단순 단순 이동 평균을 선호하는 반면 다른 일부는 지수 및 평활 이동 평균의 조합을 사용하여 더 깊이 파헤 치려고합니다. 좋아하는 것을 찾는 것은 모두 당신에게 달려 있습니다. 내 조언은? 장기 이동 평균을 고려하십시오.

답변

아직 판다를 언급하지 않은 이유는 무엇입니까? Python 데이터 분석 라이브러리

import pandas as pd, numpy as np

np.random.seed(1)

random\_walk = pd.Series(

np.random.randn(100)

).cumsum() # dummy data

random\_walk.ewm(span=10).mean() # ema

random\_walk.rolling(20).mean() # simple moving average

random\_walk.expanding().mean() # expanding average

index = pd.bdate\_range("2012","2013",freq="1h") # time series

series = pd.Series(

np.random.randn(index.shape[0]),index

)

series.rolling("100h").mean() # 100 hours, time based window

series.rolling(pd.Timedelta(hours=30)).mean() # You may use any offset compatible with index

series.rolling(10, win\_type="triang").mean() # triangle weights

series.rolling(10,center=True).mean() # value in the middle of window

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다