변경 사항 ---- - _test_kiwoom_condition_list.py: 키움 웹소켓 조건검색 '목록조회' 기능을 단독으로 테스트하는 스크립트 추가 - _test_kiwoom_condition_realtime.py: 'momentum' 조건식을 실시간으로 등록하고 초기 매칭 종목 리스트 및 실시간 편입/이탈을 수신하는 테스트 스크립트 추가 - _verify_columnar_bitid.py, _verify_shared_e2e_breakout.py, _verify_shared_e2e.py: 공유 메모리 및 dict 간의 데이터 일관성을 검증하는 테스트 추가 영향 ---- - 신규 테스트 스크립트 추가로 키움 웹소켓 API의 기능 검증 및 안정성을 높임 - 기존 기능에 대한 영향 없음 Co-authored-by: Cursor <cursoragent@cursor.com>
72 lines
2.5 KiB
Python
72 lines
2.5 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
환경변수 DB 업데이트 스크립트 (간단 버전)
|
|
- 딕셔너리로 직접 값을 넣어서 업데이트
|
|
"""
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
SCRIPT_DIR = Path(__file__).resolve().parent
|
|
sys.path.insert(0, str(SCRIPT_DIR))
|
|
|
|
from database import TradeDB
|
|
|
|
def update_env(updates):
|
|
"""
|
|
환경변수 업데이트
|
|
|
|
Args:
|
|
updates: 업데이트할 환경변수 딕셔너리
|
|
예: {
|
|
"KIS_APP_KEY": "your_app_key",
|
|
"KIS_APP_SECRET": "your_app_secret",
|
|
"MM_BOT_TOKEN_": "your_token",
|
|
...
|
|
}
|
|
"""
|
|
db_path = SCRIPT_DIR / "quant_bot.db"
|
|
db = TradeDB(db_path=str(db_path))
|
|
|
|
# 기존 최신 설정 불러오기
|
|
latest = db.get_latest_env()
|
|
if latest and latest.get("snapshot"):
|
|
current = latest["snapshot"]
|
|
print(f"📋 기존 설정 불러옴 (ID: {latest['id']})")
|
|
else:
|
|
current = {}
|
|
print("⚠️ 기존 설정 없음 - 새로 생성")
|
|
|
|
# 기존 값과 병합
|
|
new_snapshot = {**current, **updates}
|
|
|
|
# 새 스냅샷 저장
|
|
env_id = db.insert_env_snapshot(new_snapshot)
|
|
if env_id:
|
|
print(f"✅ 환경변수 저장 완료! (새 스냅샷 ID: {env_id})")
|
|
print(f" 업데이트된 키: {', '.join(updates.keys())}")
|
|
else:
|
|
print("❌ 저장 실패!")
|
|
|
|
db.close()
|
|
return env_id
|
|
|
|
if __name__ == "__main__":
|
|
# 여기에 업데이트할 값들을 딕셔너리로 넣으세요
|
|
my_updates = {
|
|
# ── 시세/조회 = 항상 실키 정책 (코드 패치 B안과 짝) ──
|
|
# main.py 의 _build_market_client() 가 시세 전용 실키 KISClient 를 만들어
|
|
# ws/전략/조건/랭킹에 주입함. KIS_MOCK 은 매매·계좌(주문/잔고)에만 적용.
|
|
# "KIWOOM_MOCK": "false", # 키움도 시세만 받으니 실키
|
|
# # 키움이 죽어도 실키 KIS 로 안전 폴백 (모의 도메인 호출이 없으므로 500 안 남)
|
|
# "WS_GAP_FILL_KIS_FALLBACK": "true",
|
|
# 시장 급락 서킷브레이커 — 처음엔 false 로 두고 1~2주 모니터 후 true
|
|
"STRATEGY_UPDOW_ENABLED": "false", # ← 검증 끝나면 "true"
|
|
|
|
}
|
|
if not my_updates:
|
|
print("⚠️ 업데이트할 값이 없습니다.")
|
|
print(" update_env_simple.py 파일을 열어서 my_updates 딕셔너리에 값을 입력하세요.")
|
|
sys.exit(1)
|
|
|
|
update_env(my_updates)
|