MA 크로스는 두 개의 이동 평균을 계산하여 표시하고 교차하는 바를 강조 표시합니다.
단기적으로 추세가 약해지거나 강해지는 시점을 보여주는 지표입니다.
골든크로스 – 단기 이동평균선이 장기 이동평균선을 상향 돌파할 때 발생합니다. 이는 매수 신호로 해석되며, 일반적으로 상승 추세가 시작될 가능성을 나타냅니다.
데드크로스 – 단기 이동평균선이 장기 이동평균선을 하향 돌파할 때 발생합니다. 이는 매도 신호로 해석되며, 일반적으로 하락 추세가 시작될 가능성을 나타냅니다.
MA Cross 구현
골든크로스는 up, 데드크로스는 down, SMA 크로스를 구현하겠습니다.
pip install pandas ccxt numpy
import pandas as pd
import ccxt
import numpy as np
# 예시) 바이낸스 선물 BTCUSDT, 1시간 봉
bnb = ccxt.binance({'options': { 'defaultType': 'future' }})
def MA_CROSS(short_length=9, long_length=21):
ohlcv = bnb.fetch_ohlcv(symbol="BTC/USDT", timeframe="1h", limit=500)
df = pd.DataFrame(ohlcv, columns=['time', 'open', 'high', 'low', 'close', 'volume'])
# Y-m-d H:is로 변환
df['time'] = pd.to_datetime(df['time'], unit='ms').dt.tz_localize('UTC')
df['time'] = df['time'].dt.tz_convert('Asia/Seoul').dt.strftime('%Y-%m-%d %H:%M:%S')
_df = df.copy()
_df['short'] = _df['close'].rolling(window=short_length).mean()
_df['long'] = _df['close'].rolling(window=long_length).mean()
df['MA_Cross'] = np.where((_df['short'] > _df['long']) & (_df['short'].shift(1) <= _df['long'].shift(1)), 'up',
np.where((_df['short'] < _df['long']) & (_df['short'].shift(1) >= _df['long'].shift(1)), 'down', ''))
# MA_Cross가 빈 값이 아닌 것만 필터링
cross = df[df['MA_Cross'] != '']
return cross
print(MA_CROSS(short_length=9, long_length=21)) # 트레이딩뷰 디폴트 값
Check
트레이딩뷰 차트와 비교

해당 시간 단기 이동평균(9일), 장기 이동평균(21일) 기준으로 골든크로스가 발생했습니다.
