chore: 작업 중 발생한 부수적 변경 사항 및 누락된 파일 전체 커밋

- 프론트엔드 UI 업데이트 (backtest.html, backtest.js) 엔진 라디오 버튼 통합 관련 반영
- Rust 플러그인(kis_rust_core) 및 컴파일 소스코드 추가
- CLI 백테스트 스크립트 수정 및 최신화
- 기타 스크래치 테스트 스크립트, 로그 요약 마크다운(.md) 등 누락 파일 일괄 반영
- 추가적으로 아직 발견되지 않은 엣지 케이스나 렌더링 오류가 포함되어 있을 가능성이 있음
This commit is contained in:
Your Name
2026-09-06 17:04:50 +09:00
parent 4dbb1387a1
commit e1ac8d119b
181 changed files with 8371 additions and 503 deletions

View File

@@ -98,6 +98,8 @@ class TradeDBExt:
filled_at VARCHAR(30) DEFAULT NULL,
raw_json MEDIUMTEXT DEFAULT NULL,
is_mock TINYINT(1) NULL,
target_price DOUBLE DEFAULT NULL,
slippage_pct DOUBLE DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY uq_ord_no_ctx (ord_no, strategy_id, code, side, ord_date, is_mock),
INDEX idx_strategy_date (strategy_id, ord_date),
@@ -109,6 +111,7 @@ class TradeDBExt:
self._migrate_orders_pk_scope()
self._migrate_orders_is_mock()
self._migrate_orders_broker_debug_columns()
self._migrate_orders_slippage_columns()
logger.info("📊 orders 테이블 확인/생성 완료")
except Exception as e:
logger.warning("orders 테이블 생성 실패(무시·폴백): %s", e)
@@ -248,6 +251,23 @@ class TradeDBExt:
except Exception as e:
logger.warning("orders broker debug 마이그레이션 실패(무시·폴백): %s", e)
def _migrate_orders_slippage_columns(self) -> None:
"""orders — 실매매 vs 백테스트 슬리피지 갭 모니터링용 컬럼."""
specs = {
"target_price": "DOUBLE NULL",
"slippage_pct": "DOUBLE NULL",
}
try:
cols = self.conn.get_columns("orders")
for col, ddl in specs.items():
if col not in cols:
self.conn.execute(
f"ALTER TABLE orders ADD COLUMN `{col}` {ddl}"
)
logger.info("📌 orders.%s 컬럼 추가 (슬리피지 모니터링)", col)
except Exception as e:
logger.warning("orders slippage 마이그레이션 실패(무시·폴백): %s", e)
# ------------------------------------------------------------------
# orders CRUD
# ------------------------------------------------------------------
@@ -266,6 +286,7 @@ class TradeDBExt:
msg1: Optional[str] = None,
raw_json: Optional[str] = None,
is_mock=None,
target_price: Optional[float] = None,
) -> bool:
"""
주문 기록 INSERT.
@@ -283,8 +304,8 @@ class TradeDBExt:
"""
INSERT INTO orders (
ord_no, strategy_id, code, name, side, qty, price,
status, msg_cd, msg1, ord_date, submitted_at, raw_json, is_mock
) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
status, msg_cd, msg1, ord_date, submitted_at, raw_json, is_mock, target_price
) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
""",
(
ord_no, strategy_id, code, name, side, qty, price,
@@ -293,6 +314,7 @@ class TradeDBExt:
now.strftime("%Y-%m-%d %H:%M:%S"),
raw_json,
mock_flag,
target_price,
),
)
return True
@@ -334,11 +356,15 @@ class TradeDBExt:
self.conn.execute(
"""
UPDATE orders
SET filled_qty=%s, filled_avg_price=%s, status=%s, filled_at=%s
SET filled_qty=%s,
filled_avg_price=%s,
slippage_pct=IF(target_price IS NOT NULL AND target_price > 0, ((%s - target_price) / target_price) * 100, slippage_pct),
status=%s,
filled_at=%s
WHERE ord_no=%s AND strategy_id=%s AND code=%s AND ord_date=%s
AND is_mock=%s
""",
(filled_qty, filled_avg_price, status, now,
(filled_qty, filled_avg_price, filled_avg_price, status, now,
ord_no, strategy_id, code, od, mock_flag),
)
return True