이번 포스팅에서는 간단하게 현재가 기준으로 국내 주식의 매수/매도1호가를 구하는 함수를 구현해볼겁니다.
예전에 ETF 매매시스템을 개발할 때, 호가 단위에 대해서는 그렇게 중요하게 생각하지 않았습니다. 어차피 전부 5원이니까 그걸 굳이 어렵게 찾아야할 필요가 없었죠.
2021.10.31 - [트레이딩] - [기타] ETF 주문을 위한 최소 호가 단위 변환
여기서 문제는 23년부터 이제 호가 단위 개편이 되면서 이전과 또 달라지게 됐습니다. 예전보다 호가가 더 촘촘해졌습니다. 이로 인해서 주가의 변동성이 이전보다는 죽게된 것 같습니다. 아무래도 주가를 부양시키기에는 돈이 예전보단 조금 더 많이 필요하게 되었습니다.
사실 이렇게 표로 보는 것보다 실제 예시로 보는게 더 편하죠. 최근 장에서 단타꾼들이 가장 좋아하는 가격대인 2만원대 종목을 하나 살펴보시죠. 예시로는 (336260)두산퓨어셀입니다. 현재가 기준으로 20,050원입니다. 이렇게 호가가 뛰는 구간을 말합니다. 이전에는 호가 단위가 50원이었던 예전 장과 비교하면 최근에는 10원 단위 호가에서는 단타하기 어려운건 사실입니다. 세력 입장에선 호가가 촘촘해져서 주가를 끌어올리기 어려울테니깐요.
암튼 그건 저하고는 크게 중요한 부분은 아닙니다만, 어쨌든 저는 이제 현재가 기준으로 위아래 매수/매도호가가 얼마인지를 구하는 함수를 Python으로 구현해보고자 하는게 이번 포스팅의 목표입니다. 요즘 ChatGPT나 Claude3와 같은 인공지능 서비스가 많아서 대신 좀 편하게 개발해보려고 했는데 너무 아쉽게도 결과물들이 마음에 들지 않네요. 확실히 호가가 변하는 가격대에서 제대로 동작하지 않습니다. 저 그림을 줬는데 제대로 반영 못하고 결과가 안 나오는게 신기하긴 하네요.
솔직히 저는 어렵게 짜는걸 좋아하는 편이 아니라, 간단하게 IF-ELSE로 처리해봤습니다. 어차피 제 시스템은 저 혼자 만들기 때문에 복잡하면 나중에 큰일납니다.
def get_fisrt_bid_ask_price(price):
if price < 2_000:
return price - 1, price + 1
elif price == 2_000:
return price - 1, price + 5
elif 2_000 < price < 5_000:
return price - 5, price + 5
elif price == 5_000:
return price - 5, price + 10
elif 5_000 < price < 20_000:
return price - 10, price + 10
elif price == 20_000:
return price - 10, price + 50
elif 20_000 < price < 50_000:
return price - 50, price + 50
elif price == 50_000:
return price - 50, price + 100
elif 50_000 < price < 200_000:
return price - 100, price + 100
elif price == 200_000:
return price - 100, price + 500
elif 200_000 < price:
return price - 500, price + 500
if __name__ == '__main__':
for price in [2_000,20_000,30_000, 50_000,200_000,500_000]:
bid_price, ask_price = get_fisrt_bid_ask_price(price)
print(f"매수1호가: {bid_price:8,} / 현재가: {price:8,} / 매도1호가: {ask_price:8,}")
위 코드를 돌려보면 각각의 엣지 케이스마다 확인해보면 무리없이 잘 나옵니다. 저는 무식해서 IF-ELSE 문으로 경계가 되는 가격대를 처리해서 깔끔하게 가격이 나옵니다.
여전히 간단한 코드를 줘도 ChatGPT 4.0는 정말 현학적으로 리팩토링을 하는군요. 저는 코딩을 그렇게 잘하진 못하는데 저놈의 brackets을 정말 좋아하네요. 한시간 내내 물어봐도 저 로직으로 뭔가를 해결하려고 하는데 학습 데이터를 정말 고른 것 같네요. 도대체 누구의 코드였을까... (이번 달 구독료를 환불해줘라 OpenAI야...)
참고자료
https://www.mk.co.kr/news/stock/10545467
'트레이딩' 카테고리의 다른 글
Python으로 종목별 증거금률에 따른 시장가 풀미수 진입수량 계산하기 (0) | 2024.04.16 |
---|---|
다가올 대체거래소를 어떻게 준비해야할까? (1) | 2024.04.16 |
[전략] 현재 내 종가 베팅 시스템의 약점 1차 분석 (24.03.18) (0) | 2024.03.18 |
[전략] 고가놀이 - 스윙 눌림목 매매 기법 (0) | 2024.03.14 |
[주식] 돌파고의 스캘핑 자동매매 시스템에 대한 질의응답 (3) | 2024.03.10 |