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