import os import sys import finestock from finestock import APIProvider try: # 선택 의존성: 설치돼 있으면 .env 파일을 자동으로 읽어 os.environ에 채워준다. # pip install python-dotenv from dotenv import load_dotenv load_dotenv() except ImportError: pass #from loguru import logger finestock.print_version_info() #logging.basicConfig(level=logging.DEBUG) #logger.add(sys.stdout, level="DEBUG") #print(logger._core.handlers) # 내부 구조 접근이지만 확인용으로는 유용 #exit() # 실키/토큰은 절대 코드에 하드코딩하지 말 것. 환경변수로 주입한다. # 예 (PowerShell): $env:APP_KEY="..."; $env:APP_SECRET="..." app_key = os.environ.get("APP_KEY", "YOUR_APP_KEY") app_secret = os.environ.get("APP_SECRET", "YOUR_APP_SECRET") account_num = os.environ.get("ACCOUNT_NUM", "YOUR_ACCOUNT_NUM") account_num_sub = os.environ.get("ACCOUNT_NUM_SUB", "01") access_token = os.environ.get("ACCESS_TOKEN", "") api_type = "KISV" api = finestock.APIFactory.create_api(APIProvider.LS) api.set_oauth_info(app_key, app_secret) login = False if login: api.oauth() print(api.access_token) else: api.headers['authorization'] = f"Bearer {access_token}" #list = api.get_condition_list("shinalok") #print(list) #list = api.get_condition_price("shinalok0000") #print(list) # etf_list = ["069500", "229200", "292190", "156080"] # prices = api.get_multiple_ohlcv(etf_list) # print(prices) # exit() #api.set_account_info(account_num, account_num_sub) # ohlcvs = api.get_ohlcv("233740") # print(ohlcvs) # exit() #ohlcvs = api.get_index_min("405", "20250514") ohlcvs = api.get_ohlcv_min("005930", "20250515") print(ohlcvs) print(len(ohlcvs)) exit() acc = api.get_balance() print(acc) #res = api.do_order("228790", finestock.ORDER_FLAG.BUY, 0, 1) #print(res) exit() orderbook = api.get_orderbook("233740") print(orderbook) #ohlcvs = api.get_ohlcv("233740", "20240806", "20240806") ohlcvs = api.get_ohlcv("233740") print(ohlcvs) exit() ''' ohlcvs = api.get_ohlcv("005930", "20200101", "20240328") for price in ohlcvs: print(price.workday) exit() ''' api.set_account_info(account_num, account_num_sub) acc = api.get_balance() print(acc) exit() #ohlcvs = api.get_index("405", "20200101", "20240328") ohlcvs = api.get_index("405", "20240802", "20240802") print(ohlcvs) print(len(ohlcvs)) print(ohlcvs) for price in ohlcvs: print(price.workday) exit() #Ebest만 사용 가능 #list = api.get_index_list() #print(list) #exit() #res = api.do_order("004410", finestock.ORDER_FLAG.SELL, 176, 1) #print(res) #res = api.do_order_cancle("19441", "004410", 1) #print(res) res = api.get_order_status("004410") print(res) exit() res = api.do_order("004410", finestock.ORDER_FLAG.BUY, 170, 1) print(res) exit() list = api.get_stock_list() print(api.stock_master) print(list) print(len(list)) #print(list.keys()) exit() #주식 ohlcv 가져오기 ohlcvs = api.get_ohlcv("005930", "20240101", "20240328") print(ohlcvs) logger.debug("Hihi") #지수정보 가져오기 #index = api.get_index("3003", "20240101", "20240328") #LS: 405, KIS: 3003 #print(index) #계좌정보 가져오기 api.set_account_info(account_num, account_num_sub) acc = api.get_balance() print(acc) #주문 #res = api.do_order("004410", finestock.ORDER_FLAG.BUY, 170, 1) #print(res) #주문상태 확인 res = api.get_order_status("004410") print(res) #주문취소 #res = api.do_order_cancle("13889", "004410", 1) #print(res) exit() #ohlcvs = api.get_ohlcv("005930", "20240101", "20240328") #print(ohlcvs) #api.get_index_list() #api.get_ohlcv("005930", count=20) #ohlcvs = api.get_index("3003", "20240101", "20240328") #print(ohlcvs) #orderbook = api.get_orderbook("005930") #print(orderbook) #res = api.do_order("004410", ORDER.BUY, 150, 1) #res = api.do_order_cancle("12788", "004410", 1)