diff --git a/agents/stock/workspace/scripts/behive_web.py b/agents/stock/workspace/scripts/behive_web.py index b16c7be..cbf05fe 100644 --- a/agents/stock/workspace/scripts/behive_web.py +++ b/agents/stock/workspace/scripts/behive_web.py @@ -2592,6 +2592,18 @@ def _render_holding_row(r: dict, total_value: int, show_day_change: bool = False star = ''.join(star_parts) day_change = r.get('day_change', 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 = '' 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: ohlc_krx_for_render['prev_close'] = _krx_prev ohlc_nxt_for_render = r.get('ohlc_nxt') - _snap_prev = r.get('pred_close', 0) or 0 - if ohlc_nxt_for_render and _snap_prev > 0: + if 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 - ohlc_nxt_for_render['change'] = _nxt_px - _snap_prev - ohlc_nxt_for_render['change_pct'] = ((_nxt_px - _snap_prev) / _snap_prev * 100) if _snap_prev else 0.0 + # NXT 전일종가도 ka10095(현재가−전일대비)로 — 스냅샷(pred_close)과 갈려 등락이 어긋나던 것 통일. + _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) 후에만 그 시장 종가 표시. _now_ohlc = datetime.now(KST) _hm_ohlc = _now_ohlc.hour * 60 + _now_ohlc.minute