이 섹션에서는 자동매매 시스템의 핵심인 실시간 데이터 수신과 전략 판단 로직 통합을 다룹니다. 백테스팅에서 검증된 전략을 실제 시장에 적용하기 위한 중요한 단계입니다. 실시간 데이터는 시장 상황을 즉각적으로 반영합니다. 이 데이터를 기반으로 전략 판단 로직이 작동합니다. 효율적인 통합은 시스템의 반응 속도와 정확성을 높입니다.
단계 1: 실시간 데이터 스트리밍 연결
가장 먼저, 가상화폐 거래소의 실시간 데이터 스트리밍 API에 연결해야 합니다. 업비트와 바이낸스는 각각 Websocket API를 제공합니다. pyupbit 또는 ccxt 라이브러리를 사용하여 연결할 수 있습니다. Websocket은 실시간으로 데이터를 주고받는 데 효과적입니다.
예시 (pyupbit):
import pyupbit
import time
# 업비트 Websocket 연결
upbit = pyupbit.WebSocketClient(codes=["KRW-BTC"])
while True:
data = upbit.get()
print(data)
time.sleep(0.1)
위 코드는 KRW-BTC (비트코인)의 실시간 체결 데이터를 수신합니다. upbit.get()
함수는 데이터를 수신할 때까지 기다립니다. 수신된 데이터는 딕셔너리 형태로 제공됩니다.
단계 2: 데이터 정제 및 전처리
수신된 데이터는 바로 전략 판단 로직에 사용할 수 없습니다. 필요한 정보만 추출하고, 데이터 타입을 변환해야 합니다. 예를 들어, 체결 가격, 체결량, 시간 정보 등을 추출합니다. Pandas DataFrame 형태로 변환하면 데이터 처리가 용이합니다.
예시:
import pandas as pd
# 데이터 정제 및 DataFrame 변환
def process_data(data):
timestamp = data['trade_timestamp']
price = data['trade_price']
volume = data['trade_volume']
df = pd.DataFrame({
'timestamp': [timestamp],
'price': [price],
'volume': [volume]
})
return df
while True:
data = upbit.get()
df = process_data(data)
print(df)
time.sleep(0.1)
단계 3: 전략 판단 로직 통합
정제된 데이터를 기반으로 매매 전략을 판단하는 로직을 통합합니다. 이전에 백테스팅에서 사용했던 전략을 그대로 사용할 수 있습니다. 전략은 일반적으로 기술적 지표를 활용합니다. 이동평균선, RSI, MACD 등이 대표적인 예시입니다.
예시 (이동평균선):
# 이동평균선 계산 및 매매 신호 생성
def generate_signal(df, window=20):
df['ma'] = df['price'].rolling(window=window).mean()
df['signal'] = 0.0
df['signal'][window:] = np.where(df['ma'][window:] < df['price'][window:], 1.0, 0.0)
df['positions'] = df['signal'].diff()
return df
# 데이터프레임에 전략 적용
df = generate_signal(df)
# 매수/매도 신호 확인
if df['positions'].iloc[-1] == 1:
print("매수 신호 발생!")
elif df['positions'].iloc[-1] == -1:
print("매도 신호 발생!")
위 코드는 20일 이동평균선을 계산하고, 가격이 이동평균선을 상회하면 매수 신호를, 하회하면 매도 신호를 발생시킵니다.
단계 4: 매매 신호 전달 및 주문 실행
전략 판단 로직에서 생성된 매매 신호를 주문 실행 시스템에 전달합니다. 주문 실행 시스템은 거래소 API를 통해 실제 주문을 넣습니다. (4.9.2 섹션에서 자세히 다룸)
단계 5: 예외 처리 및 로깅
실시간 데이터 수신 및 전략 판단 과정에서 발생할 수 있는 예외 상황을 처리해야 합니다. 네트워크 오류, API 응답 지연, 데이터 오류 등이 발생할 수 있습니다. 오류 발생 시 로그를 기록하여 문제 해결에 도움을 줍니다.
이 단계를 통해 실시간 데이터가 전략 판단 로직에 통합됩니다. 이는 자동매매 시스템의 핵심 기능입니다. 다음 단계에서는 주문 실행 시스템을 구축하여 실제 거래를 수행합니다.