기본 콘텐츠로 건너뛰기

라벨이 EMA인 게시물 표시

[matplotlib]quiver()함수

[Stock] MACD(이동평균 컨버전스 다이버전스)와 APO(Absolute Price Oscillator)

MACD(이동평균 컨버전스 다이버전스)와 APO(Absolute Price Oscillator) MACD APO(Absolute Price Oscillator) MACD Macd(Moving Average Convergence/Divergence)는 시장의 잠재적 진입 및 청산 지점을 파악하기 위한 기술적 분석도구 입니다. MACD 는 가격의 두 이동평균 간의 관계를 측정하는 모멘텀 오실레이터입니다. MACD 라인과 신호 라인이라는 두 가지 주요 구성 요소로 구성됩니다. MACD 라인은 단기 지수 이동평균(EMA)과 장기 EMA의 차이이며, 신호 라인은 MACD 라인의 EMA입니다. 히스토그램은 MACD 라인과 신호 라인 사이의 차이를 나타내어 수렴인 컨버전스와 발산인 다이버전스를 시각적으로 표현합니다. 이동평균선 대순환 분석은 매매 타이밍을 명확히 나타내지만 신호가 늦게 나타납니다. 이러한 단점에 대응하기 위해 MACD 지표를 추가 합니다. MACD는 이동평균 수렴/확산으로 번역되는 것으로 부터 알 수 있듯히 이평선의 일종이며 이들이 서로 붙거나 떨어짐을 의미한다. 즉, 두개의 이평선을 적용하는 것으로 다음과 같이 나타낼 수 있다. MACD = 단기이평 - 장기이평 (식 1) 그러므로 기간이 다른 이평선의 차이를 의미한다. 이 지수의 고안자인 제럴드 아펠은 단기 이평선으로 일반적으로 12일 EMA(Exponential Moving Average), 장기 이평선으로 일반적으로 26일 EMA를 사용헸다. 12EMA > 26EMA → MACD는 양수이며 그 값은 커짐, 상승추세 위 양수 MACD의 최대점 즉, 정점 후 감소 (peak out): 12EMA 감소, 26EMA 증가 12EMA = 26EMA → MACD=0, 12EMA와 26EMA의 데드크로스 발생 12EMA < 26EMA → MACD는 음수이며 그 값의 절대치는 커짐, 하락추세 위 음수 M...

[stock]이동평균들의 계산

이동평균들의 계산 단순이동평균(Simple MA, SMA) 지수이동평균(Exponential MA, EMA) RMA(WildeR's Moving Average) SMMA(Smoothed Moving Average) WMA(Weight Moving Average) 이동평균은 가격의 데이터를 평활화하여 추세를 파악하고 트레이딩 진입 및 지점을 확인하는데 적용됩니다. 단순이동평균(Simple MA, SMA), 지수이동평균(Exponential MA, EMA), 가중이동평균(Weighted MA, WMA)등이 있습니다. 단순이동평균(Simple MA, SMA) $$\text{SMA} = \frac{\text{N 기간동안의 가격합계}}{N}$$ pandas_ta 함수 sma(data, length=None, talib=None, offset=None, **kwargs)로 계산할 수 있습니다. data는 pd.Series 형태 length는 MA의 기간 talib는 라이브러리 TA_Lib를 이용할지에 대한 선택 offset은 결과값의 이동을 나타냅니다. offset=2이면 결과가 2행의 앞서이동하는 것으로 .shift(2)와 같습니다. 반대후진이동은 음수로 지정됩니다. 또한 Series.rolling(window).mean()으로 계산됩니다. import numpy as np import pandas as pd import FinanceDataReader as fdr import pandas_ta as ta st=pd.Timestamp(2024,9, 1) et=pd.Timestamp(2025, 5,7) trgnme="000660" trg=fdr.DataReader(trgnme, st, et)[["Open", "High", "Low", "Close", "Volume"]] sma=trg.t...

[stock]ALMA

ALMA (Arnaud Legoux Moving Average) 기존 이동평균선의 단점을 보완하기 위해 개발된 지표로 가격변동에 더 부드럽게 반응하면서 지연(lag)을 줄이는데 중점을 둔 지표입니다. $$\text{ALMA} = \frac{\sum^{n-1}_{i=0} w_i\text{price}_{t-i}}{\sum^{n-1}_{i=0} w_i}$$ n: 기간, 이동평균을 계산하기 위한 가격의 개수입니다. 일반적으로 9를 사용 price t-i : 현재로부터 i 번째 이전의 가격 w i : 가우시안 함수에 의해 결정되는 가중치 가우시안 가중치 $$w_i=\exp\left(-\frac{\left(i-\text{offset}\cdot (n-1)\right)^2}{2\sigma^2} \right)$$ offset: 부드러움과 반응성 사이의 균형을 조절하는 파라미터로 [0, 1]사이의 값입니다. 1에 가까울수록 최근가격에 더 가중치를 부여하고 0에 근접할 술록 과거 가격에 더큰 비중을 부여합니다. (다음 결과는 총 10개의 데이터에 offset을 변화시켰을 경우의 가중치의 변화를 나타낸 것입니다.) 일반적으로 0.85를 사용합니다. σ : 가우시안 분포의 폭을 결정하는 값으로 ALMA의 부드로움 정도를 조절합니다. 값이 클수록 분포가 넓어지고 부드러워 집니다. 기본적으로 6을 설정합니다. import numpy as np import pandas as pd import yfinance as yf import pandas_ta as ta import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'Malgun Gothic' plt.rcParams['axes.unicode_minus'] = False def weight(n, offset, sigma): result=[] for i in range(n): ...

[Pandas]rolling 통계량: 이동평균

rolling 통계량: 이동평균 날짜 또는 시간 차이에 따른 통계량을 계산하기 위해 pd.DataFrame 클래스이 메서드인 pd객체.rolling(widnow, …) 메서드를 적용합니다. 메서드의 인수 window 는 날짜 또는 시간 차이입니다. 이 메서드는 하위 메서드인 mean(), var(), min(), max() 등과 함께 사용합니다. 다음은 yfinance 패키지를 적용하여 kospi 지수의 일일자료를 호출하여 사용합니다. import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler import yfinance as yf import matplotlib as mpl import matplotlib.pyplot as plt plt.rcParams['font.family'] ='NanumGothic' plt.rcParams['axes.unicode_minus'] =False import seaborn as sns %matplotlib inline fontdict={"fontsize":12, 'fontweight': "bold"} st=pd.Timestamp(2023, 10, 17) et=pd.Timestamp(2024, 10, 26) kos=yf.download("^KS11",st, et) kos=kos.drop('Adj Close', axis=1) kos.index=pd.DatetimeIndex(kos.index.date) kos.columns=kos.columns.levels[0][1:] kos.tail(3) Price Close High Low Open Volume 2024-10-23 ...