fix: 보유탭 등락 기준을 ka10095 전일종가로 통일 — 감시탭 미리보기와 일치
보유종목 표시 등락이 스냅샷(어제 NXT 종가) 기준이라 감시탭 미리보기(ka10095 실시간 전일종가)와 50원 차이로 어긋났다(예: SK이터닉스 23.83% vs 23.64%). 보유행 표시 등락(미리보기·당일등락·평가금액변동·data-rt-prevclose)과 NXT OHLC 전일종가를 마크된 시장의 ka10095(현재가−전일대비) 기준으로 통일. 원본 r은 copy로 보존(KPI·잔고 계산 영향 없음). 잔고 KPI는 prev_net 기반이라 개별 일손익 합과 50원×수량 수준 미세 괴리는 감수(관리자 승인). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -2592,6 +2592,18 @@ def _render_holding_row(r: dict, total_value: int, show_day_change: bool = False
|
|||||||
star = ''.join(star_parts)
|
star = ''.join(star_parts)
|
||||||
day_change = r.get('day_change', 0)
|
day_change = r.get('day_change', 0)
|
||||||
day_change_pct = r.get('day_change_pct', 0.0)
|
day_change_pct = r.get('day_change_pct', 0.0)
|
||||||
|
# 표시 등락 기준을 마크된 시장의 ka10095 전일종가(현재가−전일대비)로 통일 — 감시탭과 일치.
|
||||||
|
# (스냅샷 rebase 값과 50원 단위로 갈려 미리보기·당일종가 등락이 어긋나던 것 해소. 원본 r은 보존.)
|
||||||
|
_ok = r.get('ohlc_krx') or {}
|
||||||
|
_on = r.get('ohlc_nxt') or {}
|
||||||
|
_kp = _ok.get('price', 0) or 0
|
||||||
|
_np = _on.get('price', 0) or 0
|
||||||
|
_md = _on if (_np and _np == price and _np != _kp) else _ok
|
||||||
|
_md_prev = (_md.get('price', 0) or 0) - (_md.get('change', 0) or 0)
|
||||||
|
if _md_prev > 0 and price:
|
||||||
|
day_change = price - _md_prev
|
||||||
|
day_change_pct = (price - _md_prev) / _md_prev * 100.0
|
||||||
|
r = {**r, 'day_change': day_change, 'day_change_pct': day_change_pct}
|
||||||
|
|
||||||
candle_summary = ''
|
candle_summary = ''
|
||||||
ohlc = r.get('ohlc') or {}
|
ohlc = r.get('ohlc') or {}
|
||||||
@@ -2667,14 +2679,18 @@ def _render_holding_row(r: dict, total_value: int, show_day_change: bool = False
|
|||||||
if _krx_prev > 0:
|
if _krx_prev > 0:
|
||||||
ohlc_krx_for_render['prev_close'] = _krx_prev
|
ohlc_krx_for_render['prev_close'] = _krx_prev
|
||||||
ohlc_nxt_for_render = r.get('ohlc_nxt')
|
ohlc_nxt_for_render = r.get('ohlc_nxt')
|
||||||
_snap_prev = r.get('pred_close', 0) or 0
|
if ohlc_nxt_for_render:
|
||||||
if ohlc_nxt_for_render and _snap_prev > 0:
|
|
||||||
ohlc_nxt_for_render = dict(ohlc_nxt_for_render)
|
ohlc_nxt_for_render = dict(ohlc_nxt_for_render)
|
||||||
ohlc_nxt_for_render['open'] = _snap_prev
|
|
||||||
ohlc_nxt_for_render['prev_close'] = _snap_prev
|
|
||||||
_nxt_px = ohlc_nxt_for_render.get('price', 0) or 0
|
_nxt_px = ohlc_nxt_for_render.get('price', 0) or 0
|
||||||
ohlc_nxt_for_render['change'] = _nxt_px - _snap_prev
|
# NXT 전일종가도 ka10095(현재가−전일대비)로 — 스냅샷(pred_close)과 갈려 등락이 어긋나던 것 통일.
|
||||||
ohlc_nxt_for_render['change_pct'] = ((_nxt_px - _snap_prev) / _snap_prev * 100) if _snap_prev else 0.0
|
_nxt_prev = _nxt_px - (ohlc_nxt_for_render.get('change', 0) or 0)
|
||||||
|
if _nxt_prev <= 0:
|
||||||
|
_nxt_prev = r.get('pred_close', 0) or 0
|
||||||
|
if _nxt_prev > 0:
|
||||||
|
ohlc_nxt_for_render['open'] = _nxt_prev
|
||||||
|
ohlc_nxt_for_render['prev_close'] = _nxt_prev
|
||||||
|
ohlc_nxt_for_render['change'] = _nxt_px - _nxt_prev
|
||||||
|
ohlc_nxt_for_render['change_pct'] = ((_nxt_px - _nxt_prev) / _nxt_prev * 100) if _nxt_prev else 0.0
|
||||||
# 당일종가: KRX는 정규장 마감(15:30) 후, NXT는 마감(20:00) 후에만 그 시장 종가 표시.
|
# 당일종가: KRX는 정규장 마감(15:30) 후, NXT는 마감(20:00) 후에만 그 시장 종가 표시.
|
||||||
_now_ohlc = datetime.now(KST)
|
_now_ohlc = datetime.now(KST)
|
||||||
_hm_ohlc = _now_ohlc.hour * 60 + _now_ohlc.minute
|
_hm_ohlc = _now_ohlc.hour * 60 + _now_ohlc.minute
|
||||||
|
|||||||
Reference in New Issue
Block a user