반응형
SMALL

아래는 AI 기반 자동 트레이딩 봇을 위한 Python 코드 예제입니다. 이 코드는 머신러닝을 사용하여 주식 가격을 예측하고, 예측에 따라 거래를 실행합니다.



# AI 자동 트레이딩 봇: 예제 코드

import pandas as pd

import numpy as np

from sklearn.ensemble import RandomForestRegressor

from sklearn.model_selection import train_test_split

from sklearn.metrics import mean_squared_error

import yfinance as yf

import alpaca_trade_api as tradeapi  # 암호화폐 거래를 위한 ccxt로 대체 가능

 

 

# Step 1: 데이터 수집

def get_stock_data(ticker, start_date, end_date):

    """야후 금융에서 주식 데이터를 가져옵니다."""

    data = yf.download(ticker, start=start_date, end=end_date)

    data['Returns'] = data['Adj Close'].pct_change()

    data['Target'] = data['Adj Close'].shift(-1)  # 다음 날 종가를 예측

    data = data.dropna()

    return data

 

# Step 2: 피처 엔지니어링

def create_features(data):

    """모델에 사용할 피처를 생성합니다."""

    data['SMA_10'] = data['Adj Close'].rolling(window=10).mean()

    data['SMA_50'] = data['Adj Close'].rolling(window=50).mean()

    data['Volatility'] = data['Returns'].rolling(window=10).std()

    features = ['SMA_10', 'SMA_50', 'Volatility', 'Returns']

    return data[features], data['Target']

 

# Step 3: 머신러닝 모델

def train_model(X, y):

    """주식 가격을 예측하는 머신러닝 모델을 학습시킵니다."""

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

    model = RandomForestRegressor(n_estimators=100, random_state=42)

    model.fit(X_train, y_train)

    predictions = model.predict(X_test)

    error = np.sqrt(mean_squared_error(y_test, predictions))

    print(f"모델 RMSE(평균제곱근오차): {error:.2f}")

    return model

 

# Step 4: 거래 로직

def execute_trade(api, ticker, prediction, threshold=0.01):

    """예측에 따라 거래를 실행합니다."""

    current_price = float(api.get_last_trade(ticker).price)

    if prediction > current_price * (1 + threshold):

        print(f"{ticker} 구매 중: 현재 가격 {current_price}")

        api.submit_order(symbol=ticker, qty=1, side='buy', type='market', time_in_force='gtc')

    elif prediction < current_price * (1 - threshold):

        print(f"{ticker} 판매 중: 현재 가격 {current_price}")

        api.submit_order(symbol=ticker, qty=1, side='sell', type='market', time_in_force='gtc')

 

# Step 5: 브로커 API 통합

def main():

    # Alpaca API 설정 (여기에 본인의 API 키 입력)

    api = tradeapi.REST('YOUR_ALPACA_API_KEY', 'YOUR_ALPACA_SECRET_KEY', 'https://paper-api.alpaca.markets')

    

    # 예제: AAPL 주식 거래

    ticker = 'AAPL'

    start_date = '2020-01-01'

    end_date = '2023-01-01'

 

    # 데이터 수집 및 처리

    data = get_stock_data(ticker, start_date, end_date)

    X, y = create_features(data)

 

    # 모델 학습

    model = train_model(X, y)

 

    # 다음 날의 가격 예측

    latest_data = X.iloc[-1].values.reshape(1, -1)

    prediction = model.predict(latest_data)[0]

    print(f"{ticker}의 예측 가격: {prediction:.2f}")

 

    # 거래 실행

    execute_trade(api, ticker, prediction)

 

if __name__ == "__main__":

    main()




 

코드의 주요 구성 요소:

  1. 데이터 수집
  2. 모델 학습
  3. 거래 로직
  4. API 통합

추가 주의 사항:

  • 리스크 관리: 손절매(stop-loss)와 목표 수익선(take-profit)을 반드시 설정하세요.
  • 테스트: 실제 환경에 배포하기 전에 백테스트와 모의 거래를 철저히 진행하세요.
  • 규제 준수: 해당 지역의 거래 규정을 반드시 준수하세요.
  • 확장 가능성: 감정 분석, 뉴스 스크래핑, LSTM과 같은 고급 AI 모델을 추가하여 성능을 개선할 수 있습니다.


반응형

+ Recent posts