Python

SBI증권 API와 Python을 이용한 자동매매툴 구축하기

지오준 2024. 12. 27.
반응형

안녕하세요! 이번 포스트에서는 SBI증권의 API와 Python을 이용해 자동매매툴을 만드는 방법을 자세히 설명드리겠습니다. Python과 Selenium을 활용하여 SBI증권 웹사이트를 자동으로 조작하는 방법을 중심으로 설명하겠습니다.

1. 준비물

  • Python 설치: Python을 설치합니다. Python 공식 사이트에서 다운로드할 수 있습니다.
  • 필요한 라이브러리 설치: Selenium, pandas, requests 등의 라이브러리를 설치합니다.
  pip install selenium pandas requests
  • SBI증권 계좌 개설: SBI증권 계좌가 필요합니다. SBI증권 공식 사이트에서 계좌를 개설하세요.

2. Selenium 설정

Selenium은 웹 브라우저를 자동으로 조작할 수 있게 해주는 도구입니다. ChromeDriver를 설치하여 Chrome 브라우저를 제어할 수 있습니다.

  • ChromeDriver 다운로드: ChromeDriver 다운로드 페이지에서 ChromeDriver를 다운로드합니다.
  • ChromeDriver 설정: 다운로드한 ChromeDriver를 시스템 경로에 추가합니다.

3. 자동 로그인 구현

SBI증권 웹사이트에 자동으로 로그인하는 코드를 작성합니다.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# ChromeDriver 경로 설정
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

# SBI증권 로그인 페이지로 이동
driver.get('https://www.sbisec.co.jp/ETGate')

# 로그인 정보 입력
username = driver.find_element_by_name('user_id')
password = driver.find_element_by_name('user_password')
username.send_keys('your_username')
password.send_keys('your_password')

# 로그인 버튼 클릭
login_button = driver.find_element_by_name('ACT_login')
login_button.click()

4. 매매 주문 구현

로그인 후, 특정 주식을 매수하거나 매도하는 코드를 작성합니다.

# 매수 주문 예시
def place_buy_order(stock_code, quantity, price):
    driver.get(f'https://www.sbisec.co.jp/ETGate/?_ControlID=WPLETstT002Control&_PageID=WPLETstT002Mdtl20&_DataStoreID=DSWPLETstT002Control&_ActionID=DefaultAID&stock_code={stock_code}')

    # 매수 정보 입력
    quantity_input = driver.find_element_by_name('quantity')
    price_input = driver.find_element_by_name('price')
    quantity_input.send_keys(quantity)
    price_input.send_keys(price)

    # 매수 버튼 클릭
    buy_button = driver.find_element_by_name('buy_button')
    buy_button.click()

# 매도 주문 예시
def place_sell_order(stock_code, quantity, price):
    driver.get(f'https://www.sbisec.co.jp/ETGate/?_ControlID=WPLETstT002Control&_PageID=WPLETstT002Mdtl20&_DataStoreID=DSWPLETstT002Control&_ActionID=DefaultAID&stock_code={stock_code}')

    # 매도 정보 입력
    quantity_input = driver.find_element_by_name('quantity')
    price_input = driver.find_element_by_name('price')
    quantity_input.send_keys(quantity)
    price_input.send_keys(price)

    # 매도 버튼 클릭
    sell_button = driver.find_element_by_name('sell_button')
    sell_button.click()

5. 포트폴리오 및 거래 내역 조회

현재 보유 중인 주식 포트폴리오와 거래 내역을 조회하는 코드를 작성합니다.

# 포트폴리오 조회
def get_portfolio():
    driver.get('https://www.sbisec.co.jp/ETGate/?_ControlID=WPLETstT002Control&_PageID=WPLETstT002Mdtl20&_DataStoreID=DSWPLETstT002Control&_ActionID=DefaultAID')
    portfolio = driver.find_element_by_id('portfolio_table')
    print(portfolio.text)

# 거래 내역 조회
def get_trade_history():
    driver.get('https://www.sbisec.co.jp/ETGate/?_ControlID=WPLETstT002Control&_PageID=WPLETstT002Mdtl20&_DataStoreID=DSWPLETstT002Control&_ActionID=DefaultAID')
    trade_history = driver.find_element_by_id('trade_history_table')
    print(trade_history.text)

6. 결론

이제 Python과 Selenium을 이용해 SBI증권의 자동매매툴을 구축하는 방법을 배웠습니다. 이 코드를 기반으로 다양한 기능을 추가하여 더욱 발전된 자동매매 시스템을 만들어보세요. Happy coding!

이 포스트가 도움이 되셨다면, 댓글로 피드백을 남겨주세요! 추가적인 질문이 있다면 언제든지 환영합니다. 😊

반응형

댓글