๐ก kiwoom-rest-trade ํ๋ก์ ํธ ๊ธฐํ์
1. ๊ธฐํ ๋ฐฐ๊ฒฝ (Why?)
- ๊ธฐ์กด ํ๊ฒฝ์ ํ๊ณ: ๊ธฐ์กด ํค์์ฆ๊ถ OpenAPI(OCX ๋ฐฉ์)๋ Windows 32๋นํธ ํ๊ฒฝ์ ๋ฌถ์ฌ ์์ด, ์ต์ ๊ฐ๋ฐ ํธ๋ ๋(Mac/Linux ํ์ฉ, 64๋นํธ ํ๊ฒฝ)๋ ํด๋ผ์ฐ๋ ์๋ฒ ๋ฐฐํฌ๊ฐ ๋ถ๊ฐ๋ฅํ์ต๋๋ค.
- ์ฐจ์ธ๋ API์ ๋ฑ์ฅ: ํค์์ฆ๊ถ์์ OS ์ ์ฝ์ด ์๋ REST API๋ฅผ ์ถ์ํ์ง๋ง, ์ผ๋ฐ ํฌ์์๊ฐ ๋ ๊ฒ(Raw)์ HTTP ์์ฒญ๊ณผ ๋ณด์ ํ ํฐ ๊ด๋ฆฌ๋ฅผ ์ง์ ๊ตฌํํ๋ฉฐ ์ฐ๊ธฐ์๋ ์ง์
์ฅ๋ฒฝ์ด ๋์ต๋๋ค.
- ๋ณด์ ๋ถ์๊ฐ: PyPI์ ์ฌ๋ผ์ ์๋ ๊ธฐ์กด ์๋ํํฐ ํจํค์ง๋ค์ ์์ค ์ฝ๋๊ฐ ๋ถํฌ๋ช
ํ๊ฑฐ๋, ๋ด ์์คํ API Key๊ฐ ์์ ํ๊ฒ ๊ด๋ฆฌ๋๋์ง ์ ๋ขฐํ๊ธฐ ์ด๋ ต์ต๋๋ค.
- ๊ฒฐ๋ก : ํ๋์ ์ธ ํํธ/์๋๋งค๋งค ๊ฐ๋ฐ์๋ค์ด โ๋ฏฟ๊ณ ์ธ ์ ์๋, ์์ ํ๊ณ ๋น ๋ฅธ ํฌ๋ก์ค ํ๋ซํผ(Mac/Linux/Win) ํค์์ฆ๊ถ ๋งค๋งค ๋ผ์ด๋ธ๋ฌ๋ฆฌโ๊ฐ ์ ๋์ ์ผ๋ก ํ์ํ ์์ ์
๋๋ค.
2. ์ ํ ์ ์ ๋ฐ ํ๊น ์ฌ์ฉ์ (Who & What)
- ์ ํ ์ ์: ํค์์ฆ๊ถ ์ ํ REST API๋ฅผ ํ์ด์ฌ์์ ๋จ ๋ช ์ค๋ก ๋ค๋ฃฐ ์ ์๊ฒ ํด์ฃผ๋ ๊ฐ๋ฐ์์ฉ ์คํ์์ค ๋๊ตฌ(SDK)
- ํ๊น ์ฌ์ฉ์
- Mac์ด๋ Linux ํ๊ฒฝ์์ ์ฃผ์ ์๋๋งค๋งค ํ๋ก๊ทธ๋จ์ ๋๋ฆฌ๊ณ ์ถ์ ๊ฐ์ธ ํฌ์์
- ๊ทธ๋ฆฌ๋ ๋งค๋งค, ์๊ณ ๋ฆฌ์ฆ ๋งค๋งค ๋ฑ ๋ถ์ด๋ฅผ ๋คํฌ๋ ์ค์ ๋น๋๊ธฐ ํํธ ํธ๋ ์ด๋
- ๊ธฐ์กด 32๋นํธ Windows ํ๊ฒฝ์ ๊ตฌํ ํ๋ก๊ทธ๋จ์์ ํ์ถํ๊ณ ์ถ์ ๊ฐ๋ฐ์
3. ํต์ฌ ์ฐจ๋ณํ ๊ฐ์น (Core Values)
- 100% ํฌ๋ช
ํ ๋ณด์: ์์ค ์ฝ๋๋ฅผ ์์ ํ ๊ณต๊ฐํ์ฌ, ์ฌ์ฉ์์ ์์ฐ๊ณผ Key๋ฅผ ์ธ๋ถ๋ก ์ ๋ ๋นผ๋๋ฆฌ์ง ์๋๋ค๋ ์์ ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ํฌ๋ก์ค ํ๋ซํผ & ์ด๊ณ ์: Windows๋ ๋ฌผ๋ก , Mac(M1/M2/M4 ๋ฑ)๊ณผ Linux ํ๊ฒฝ์์๋ ์๋ฌด๋ฐ ์ ์ฝ ์์ด ์๋ํฉ๋๋ค.
- ์์ธ ์ ์ด๊ถ ๋ณด์ฅ (Trader-First): ์์คํ
์ด ๋จนํต ๋์์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์๋ก ๋๊ธฐํ๋ ๋ต๋ตํจ ์์ด, ์๋ฌ๋ฅผ ์ฆ์ ํฌ์์(๊ฐ๋ฐ์)์๊ฒ ๋์ ธ์ฃผ์ด ์ค์ ๋งค๋งค์์ ์ ์ฐํ ์๊ธฐ ๋์ฒ๊ฐ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
4. ์๋น์ค ๊ธฐ๋ฅ ๋ช
์ธ (What it does)
๐ 1) ์ค๋งํธ ์ธ์ฆ (Auth)
- ์ฌ์ฉ์๋ App Key์ Secret Key๋ง ์
๋ ฅํ๋ฉด ๋.
- ์ ํจ ์๊ฐ ๋ถ ๋จ์ ์ฒดํฌ ํ, ๋ง๋ฃ๋๊ธฐ ์ ์ ํ ํฐ์ ์์์ ๊ฐฑ์ ํด ์ฃผ๋ ๋๋ํ ์ธ์ฆ ์์คํ
.
๐ฐ๐ท๐บ๐ธ 2) ๊ธ๋ก๋ฒ ํตํฉ ๋งค๋งค (Global Trading)
- ๊ตญ๋ด ์ฃผ์๊ณผ ํด์ธ(๋ฏธ๊ตญ) ์ฃผ์์ ํ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ.
- ์์ธ ์กฐํ (ํ์ฌ๊ฐ, ํธ๊ฐ, ์ฐจํธ ๋ฐ์ดํฐ ์์ง)
- ์์ฐ ์กฐํ (๋ด ๊ณ์ข ์๊ณ , ์์๊ธ, ๋ณด์ ์ข
๋ชฉ ๋ฐ ์์ต๋ฅ ํํฉ)
- ์ฃผ๋ฌธ ๊ธฐ๋ฅ (๋งค์, ๋งค๋, ์ ์ , ์ทจ์ ์ฃผ๋ฌธ ์ ์ก)
โก 3) ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ (Real-time Stream)
- ์น์์ผ(WebSocket) ๊ธฐ์ ์ ํ์ฉํด ์ค์๊ฐ ํธ๊ฐ ๋ณํ ๋ฐ ์ฒด๊ฒฐ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ฐ์๋ณด๋ ๊ธฐ๋ฅ.
- ๋ด ์ฃผ๋ฌธ์ด ์ฒด๊ฒฐ๋๋ ์๊ฐ ์ฆ์ ํ๋ก๊ทธ๋จ์ ์๋ฆผ์ ์ฃผ๋ โ๊ณ์ข ์ฒด๊ฒฐ ํต๋ณดโ ๊ธฐ๋ฅ.
๐ 4) ํ์ด์ฌ ์นํ์ ์๋ฌ ๊ฐ์ด๋ (Error Handling)
- ํค์ ์๋ฒ๊ฐ ์ฃผ๋ ์ ์ ์๋ ์๋ฌธ/์ซ์ ์๋ฌ ์ฝ๋ ๋์ ,
KiwoomOrderError(์ฃผ๋ฌธ ์๋ฌ), KiwoomRateLimitError(ํธ์ถ ์ ํ ์ด๊ณผ) ๋ฑ ์ง๊ด์ ์ธ ํ๊ธ/ํ์ด์ฌ ์์ธ๋ก ๋ฒ์ญํด์ ์ ๊ณต.
5. ์ต์ข
๊ธฐ๋ ํจ๊ณผ
- ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๋ ๋ณต์กํ ํต์ ์ด๋ ๋ณด์ ์ฒ๋ฆฌ์ ์๊ฐ์ ๋ญ๋นํ์ง ์๊ณ , ์ค์ง ์์ ๋ง์ โ๋งค๋งค ์ ๋ต(์๊ณ ๋ฆฌ์ฆ)โ ๊ฐ๋ฐ์๋ง ์ง์คํ ์ ์๊ฒ ๋ฉ๋๋ค.
6. ๊ธฐ์ ์๊ตฌ์ฌํญ (Technical Requirements)
- ์ง์ Python ๋ฒ์ : Python 3.10 ์ด์
- ๋น๋๊ธฐ ์ ๋ต:
asyncio ๊ธฐ๋ฐ ์์ ๋น๋๊ธฐ ์ค๊ณ (๋๊ธฐ ๋ํผ ๋ณ๋ ์ ๊ณต)
- ํต์ฌ ์์กด์ฑ:
- HTTP ํด๋ผ์ด์ธํธ:
httpx (๋๊ธฐ/๋น๋๊ธฐ ํตํฉ ์ง์)
- WebSocket:
websockets
- ์ค์ ๊ด๋ฆฌ:
pydantic (ํ์
์์ ์ฑ ๋ณด์ฅ)
- API ํธ์ถ ์ ํ (ํค์ ๊ณต์ ๊ธฐ์ค):
- ๊ตญ๋ด์ฃผ์ ์ฃผ๋ฌธ/์กฐํ TR: 1์ด๋น 5ํ
- ๋ฏธ๊ตญ์ฃผ์ ์ฃผ๋ฌธ TR: 1์ด๋น 10ํ (ํผํฌํ์ 3ํ)
- ๋ฏธ๊ตญ์ฃผ์ ์กฐํ TR: 1์ด๋น 5ํ (ํผํฌํ์ 3ํ)
- ๋ชจ์ํฌ์: 1์ด๋น 1ํ
7. ๋ฒ์ ๋ณ ๊ธฐ๋ฅ ๋ฒ์ (Milestone Scope)
๐ v0.1.0 โ MVP (ํต์ฌ ๊ธฐ๋ฅ ์ฐ์ )
๐ v0.2.0 โ ๊ธ๋ก๋ฒ & ์์ฐ ์กฐํ
โก v0.3.0 โ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ
๐ v1.0.0 โ ์์ ํ & ์์ฑ