[2026-05-27] 포맷 후 복구 설치 스크립트 추가
This commit is contained in:
@@ -264,6 +264,45 @@ class KISClient:
|
||||
# 주문
|
||||
# ─────────────────────────────────────────
|
||||
|
||||
async def get_ohlcv_minute(self, ticker: str, hour: str = "153000") -> list:
|
||||
"""Domestic stock intraday minute bars from KIS."""
|
||||
data = await self._request(
|
||||
method="GET",
|
||||
path="/uapi/domestic-stock/v1/quotations/inquire-time-itemchartprice",
|
||||
tr_id="FHKST03010200",
|
||||
params={
|
||||
"FID_ETC_CLS_CODE": "",
|
||||
"FID_COND_MRKT_DIV_CODE": "J",
|
||||
"FID_INPUT_ISCD": ticker,
|
||||
"FID_INPUT_HOUR_1": hour,
|
||||
"FID_PW_DATA_INCU_YN": "Y",
|
||||
},
|
||||
)
|
||||
|
||||
def _num(row: dict, *keys: str, default=0):
|
||||
for key in keys:
|
||||
value = row.get(key)
|
||||
if value not in (None, ""):
|
||||
try:
|
||||
return int(float(str(value).replace(",", "")))
|
||||
except (TypeError, ValueError):
|
||||
return default
|
||||
return default
|
||||
|
||||
result = []
|
||||
for row in data.get("output2", []) or data.get("output", []):
|
||||
result.append({
|
||||
"date": row.get("stck_bsop_date") or row.get("bsop_date") or datetime.now().strftime("%Y%m%d"),
|
||||
"time": row.get("stck_cntg_hour") or row.get("stck_bsop_hour") or row.get("cntg_hour") or "",
|
||||
"ticker": ticker,
|
||||
"open": _num(row, "stck_oprc", "oprc"),
|
||||
"high": _num(row, "stck_hgpr", "hgpr"),
|
||||
"low": _num(row, "stck_lwpr", "lwpr"),
|
||||
"close": _num(row, "stck_prpr", "prpr", "stck_clpr", "clpr"),
|
||||
"volume": _num(row, "cntg_vol", "acml_vol", "vol"),
|
||||
})
|
||||
return sorted(result, key=lambda r: (r["date"], r["time"]))
|
||||
|
||||
async def order_buy(
|
||||
self,
|
||||
ticker : str,
|
||||
|
||||
Reference in New Issue
Block a user