트레이딩

Python으로 종목별 증거금률에 따른 시장가 풀미수 진입수량 계산하기

성민석 2024. 4. 16. 15:36

요즘 주식 전략 시스템 하나 개발하면서 미수 주문을 한번 해보고 싶어서 공부를 하고 있습니다.

 

키움API에서 풀미수 주문을 넣으려면 KOA Studio에서 알려주는 것처럼 최대주문가능수량은 상한가를 기준으로 계산되기 때문에 현재가가 아닌 상한가를 계산해야 합니다. (물론 시장가 주문이 아니면 상한가로 물량을 계산할 필요없습니다.)

 

 

또한 현재 증거금률은 GetMasterStockState 함수를 통해서 알아내면 됩니다. 해당 함수는 입력한 종목의 증거금 비율, 거래정지, 관리종목, 감리종목, 투자융의종목, 담보대출, 액면분할, 신용가능 여부를 전달합니다.

 

 

그러면 아래와 같이 각 종목별로 현재 종목과 관련된 상태를 주게 됩니다. 이 때, 수신된 데이터는 | (파이프라인)으로 split하면 됩니다. 증거금과 관련된 정보는 항상 구할 수 있고, 담보대출여부나 신용가능여부도 나오는 것 같습니다. 저희는 일단 증거금률만 알면 되니 해당 데이터만 가져오면 되겠죠?

 

 

현재 예시는 예수금 80,000원 정도 있는 상태에서 미수를 쓰는 경우입니다. 종목은 샌즈랩인데, 증거금률 40퍼에 상한가 18,300원인 상태에서 10주 주문이 가능하다고 나옵니다. 

 

 

잔고는 대략 80,000원이 있습니다. 여기서 좀 주의해야할 부분이 뒤에서 HTS와 비교하겠지만, HTS에서는 미수주문은 예수금이 아니라, 추정자산으로 미수금액을 계산하는 것 같습니다. 예수금으로만 세팅하시면 오히려 주문수량초과가 나올 것 같습니다. 

 

아래는 이제 시장가를 가정하고 증거금률에 따른 풀미수 주문을 위한 진입가능한 코드입니다.

 

# 예수금
CASH = 80_027

# 증거금률
MISU_RATE = 0.40

# 전일 종가
PREV_CLOSE_PRICE = 14_100

# 매도1호가 / 매수1호가
SELL1_PRICE = 14_270
BUY1_PRICE = 14_250

# 현재가 등락률 계산
SELL1_PRICE_RATE = (SELL1_PRICE - PREV_CLOSE_PRICE) / PREV_CLOSE_PRICE * 100
BUY1_PRICE_RATE = (BUY1_PRICE - PREV_CLOSE_PRICE) / PREV_CLOSE_PRICE * 100

# 전일 종가 대비 30% 상승한 진입 가격
# 시장가 주문시 진입가격을 상한가로 진입가능한 수량을 계산
ENTRY_PRICE = int(PREV_CLOSE_PRICE * 1.30)

# 진입 가격 기반의 현재 가격 등락률 계산
ENTRY_PRICE_RATE = (ENTRY_PRICE - PREV_CLOSE_PRICE) / PREV_CLOSE_PRICE * 100

# 총 증거금으로 구매 가능한 주식 수량 계산
ENTRY_VOLUME = int((CASH / MISU_RATE) // ENTRY_PRICE)

# 계산된 수량으로 진입 시 사용될 금액
ENTRY_AMOUNT = ENTRY_PRICE * ENTRY_VOLUME

print(f'매도1호가: {SELL1_PRICE:,}원 ({SELL1_PRICE_RATE:6.2f}%)')
print(f'매수1호가: {BUY1_PRICE:,}원 ({BUY1_PRICE_RATE:6.2f}%)')
print(f'진입가격: {ENTRY_PRICE:,}원 ({ENTRY_PRICE_RATE:6.2f}%) -> 상한가로 계산')
print(f"진입수량: {ENTRY_VOLUME:,}주 -> 상한가로 계산")
print(f'진입금액: {ENTRY_AMOUNT:,}원')

 

위 코드를 돌리면 아래와 같이 나옵니다.

 

 

다음은 키움HTS 8282창에서 미수 주문시 나오는 결과입니다. 

 

 

보시는 바와 같이 동일한 결과를 얻을 수 있는 걸 확인할 수 있습니다.

 

여기에서는 단순히 상한가를 단순히 1원 단위까지 계산했는데, 실매매에서는 상한가 가격을 호가단위에 맞게끔 다시 세팅해주시면 될 것 같습니다. 예컨대, 상한가가 2만원을 넘어가게 된다면, 50원 단위이기 때문에 단순히 저 코드만으로는 정확한 미수 주문이 들어가기 어렵습니다. 호가단위까지 구하는 방법은 이전 포스팅을 참고해주세요.

 

2024.03.25 - [트레이딩] - [개발] Python으로 국내 주식 호가 단위 불러오는 함수 구현하기

 

[개발] Python으로 국내 주식 호가 단위 불러오는 함수 구현하기

이번 포스팅에서는 간단하게 현재가 기준으로 국내 주식의 매수/매도1호가를 구하는 함수를 구현해볼겁니다. 예전에 ETF 매매시스템을 개발할 때, 호가 단위에 대해서는 그렇게 중요하게 생각하

minsuk-sung.tistory.com

 

실매매에서는 CASH처럼 고정된 값이 아닌 현재 예수금에 맡게끔 베팅금액이 바뀌어야 정상적인 시장가 풀미수가 가능하다는 부분만 체크하시면 될 것 같습니다. 혹은 예수금의 90퍼 정도만 미수로 쓰이게 세팅하면 될 것 같습니다. (손실도 있다고 가정하면 어느 정도 버퍼가 필요할 것 같습니다.) 사실 이렇게 하는게 가장 속편하게 매매를 할 수 있는 방법이라고 생각합니다. 이렇게 하면 위에서 말씀드린 주의사항들을 모두 커버할 수 있는 방법이긴 합니다.

728x90
반응형