본문 바로가기
Python Code

파이썬 자동매매 기초 : 조건검색식 가져오기

by quantWhale 2024. 5. 28.
반응형

안녕하세요. 인천고래입니다.

 

우리는 매수할 종목을 고르기 위해 2,000여 종목을 매일매일 확인할 수도 있지만 제일 쉽게 매수종목을 필터링할 수 있는  방법 중 하나로 조건검색식을 사용하기도 합니다.

 

그런데 HTS에서 활용하는 조건검색식(종목명 리스트)도 자동매매에서 활용할 수 있다는 것 아실 거예요.

그래서 오늘은 간단하게 조건검색식 목록을 불러오고 특정 검색식을 통해서 해당 검색 조건에 맞는 종목들이 출력되는 코드를 제공할까 합니다.

 

from pykiwoom.kiwoom import Kiwoom
import time

# Kiwoom 객체 생성 및 로그인
kiwoom = Kiwoom()
kiwoom.CommConnect(block=True)
kiwoom.GetConditionLoad()

# 조건식 목록 가져오기
conditions = kiwoom.GetConditionNameList()
print("조건식 목록:", conditions, len(conditions))

# 아래와 같이 직접 인덱스를 지정해서 가져올 수도 있습니다.
condition_index = conditions[0][0]
condition_name = conditions[0][1]
print(f"첫번째 조건검색 => 인덱스: {condition_index}, 종목명: {condition_name}")

# 실시간 조건검색 결과 처리 (예: 종목 코드와 이름 출력)
for num, name in conditions:
    print(f"조건식 번호: {num}, 종목명: {name}")

for num, name in conditions:
    # 실시간 조건검색 결과 받기
    codes = kiwoom.SendCondition("0", name, num, 0)

    # 실시간 조건검색 결과 처리 (예: 종목 코드와 이름 출력)
    print("=================================")
    print(f"{num, name}조건식 갯수", len(codes))
    for idx, code in enumerate(codes):
        name = kiwoom.GetMasterCodeName(code)
        print(f"인덱스: {idx}, 종목코드: {code}, 종목명: {name}")

    # 각 조건식 간의 지연을 위해 잠시 대기 (예: 1초)
    time.sleep(1)

 

 

그냥 바로 위의 코드를 복사해서 사용하시면 됩니다.

 

결과는 아래와 같이 2가지로 나뉩니다. (조건검색식 리스트와 각 조건검색식에 해당하는 종목 리스트)

 

1. 조건검색식 리스트 가져오기

GetConditionLoad()함수를 사용한 이후에 GetConditionNameList() 함수를 사용하면 조건식 목록을 가져오게 됩니다.

# 조건식 목록 가져오기
conditions = kiwoom.GetConditionNameList()
print("조건식 목록:", conditions, len(conditions))

# 아래와 같이 직접 인덱스를 지정해서 가져올 수도 있습니다.
condition_index = conditions[0][0]
condition_name = conditions[0][1]
print(f"첫번째 조건검색 => 인덱스: {condition_index}, 종목명: {condition_name}")

# 실시간 조건검색 결과 처리 (예: 종목 코드와 이름 출력)
for num, name in conditions:
    print(f"조건식 번호: {num}, 종목명: {name}")

 

그리고 위 코드의 맨 마지막과 같이 conditions에 저장된 목록을 하나씩 출력하면 아래와 같은 이미지의 결과를 얻으실 수 있습니다. (물론 각자가 저장한 조건검색식 리스트가 나오게 됩니다.)

 

여기에서 중요한 것은 조건검색식이 어떻게 이루어져 있는지는 알 수 없고 단지 조건검색식 리스트만 나오게 된다는 것입니다. 보안이 아주 잘되어 있다는 거죠. ^^

키움 조건검색식 목록 가져오기 결과

 

2. 조건검색식 별 종목 리스트 가져오기

개별 조건검색식에 속하는 종목 리스트를 가져오기 위해서는 SendCondition() 함수를 사용합니다.

아래의 코드는 conditions에 저장된 모든 조건검색식 리스트를 for문을 돌면서 조건식 번호, 조건식 이름을 매개변수로 전달해서 종목 리스트, 여기에서는 codes라고 되어 있는데 codes에 해당 조건검색식에 해당하는 종목 리스트가 코드로 저장이 되게 됩니다.

for num, name in conditions:
    # 실시간 조건검색 결과 받기
    codes = kiwoom.SendCondition("0", name, num, 0)

    # 실시간 조건검색 결과 처리 (예: 종목 코드와 이름 출력)
    print("조건검색 결과 종목코드:", codes)
    for idx, code in enumerate(codes):
        name = kiwoom.GetMasterCodeName(code)
        print(f"인덱스: {idx}, 종목코드: {code}, 종목명: {name}")

    # 각 조건식 간의 지연을 위해 잠시 대기 (예: 1초)
    time.sleep(1)

 

코드만 전달된 리스트를 GetMasterCodeName() 함수를 통해서 이름을 가져오게 한 후 출력하게 됩니다.

아래는 관련 로그입니다.

조건검색식 별 종목리스트

 

반응형
-

댓글