이 시스템은 서로 독립된 두 개의 파이썬 프로세스로 구성됩니다. 하나만 켜져 있으면 매매/모니터링 중 한쪽만 동작합니다.
trading_agent.py — 실제 매매 루프(10초 주기 스캔/진입/청산/정합성
검사). 이게 꺼져 있으면 대시보드 숫자는 갱신되지만 실제 매수·매도·손절은
전혀 일어나지 않습니다.dashboard/server.py — 읽기 전용 조회 웹서버(포트 8070). 매매 로직에
전혀 관여하지 않으며, 꺼도 매매 루프에는 영향 없음.터미널 탭 1 — 매매 에이전트:
cd ~/kis_auto_trader source venv/bin/activate python3 trading_agent.py
터미널 탭 2 — 대시보드:
cd ~/kis_auto_trader source venv/bin/activate python3 dashboard/server.py
이후 이 페이지(http://127.0.0.1:8070, GCP 배포 후에는
https://<VM_IP_DASHED>.sslip.io)를 새로고침하면 최신 상태가
15초마다 자동 갱신됩니다.
각 터미널에서 Control + C 한 번. trading_agent.py는
종료 시그널을 받으면 현재 포지션 상태를 positions_state.json에 안전하게
저장(원자적 쓰기)한 뒤 종료되므로, 매매 도중 꺼도 다음 실행 시 상태가 유실되지
않습니다.
[정합성 경고] ... 관리 대상(1차 취급)으로 자동 편입이 뜨면
정상 동작 중인 것입니다..token_cache/에 캐시된 토큰이 아직
유효하면 재발급 없이 재사용합니다(로그: 캐시된 KIS 토큰 재사용)..env의 KIS_MODE를 REAL로 바꾸는 순간
실제 자금으로 매수·매도 주문이 나갑니다. 반드시 VIRTUAL(모의투자)로
최소 며칠 이상 관찰한 뒤에만 전환하세요. 상단 배지가 항상 모의투자(VIRTUAL)
인지 매 실행 시 확인하는 것을 권장합니다.
# ~/kis_auto_trader/.env KIS_MODE=VIRTUAL # 모의투자(기본, 권장) / REAL로 바꾸면 실전투자
모드를 바꾼 뒤에는 두 프로세스를 모두 재시작해야 반영됩니다.
| 전략 | 익절 | 손절/청산 |
|---|---|---|
| StrategyC | +2.0% | -1.8% 칼손절, 45분 타임아웃 |
| StrategyA | +2.0% | 4차 소진 후 하드손절(기본 -3.0%) |
| StrategyB | 단계적(+3%/+5%, 트레일링) | 4차 소진 후 하드손절(기본 -3.0%) |
| SplitBuild(기본) | 차수별 +2.5% | 4차 소진 후 하드손절(기본 -3.0%) |
| Rescue | 마이크로 반등 15% 분할매도 | 없음(물린계좌 복구 전용) |
하드손절 비율은 config.py의 TradingSettings.max_tiers_hard_stop_pct
(기본 -3.0%)에서 조정 가능. 계좌 단위 일일 손실 한도/킬스위치는 아직 없습니다.
tail -f ~/kis_auto_trader/logs/trading_agent.log
파일 로테이션 적용(5MB 단위, 최대 5개 보관). 이 대시보드 하단의 "최근 로그" 패널에도 최신 80줄이 자동으로 표시됩니다.
배포 절차 전체는 deploy/gcp/DEPLOY.md 참고. 배포 후에는 systemd로
상시 운영되며, 아래 명령을 VM에 SSH 접속해서 사용합니다.
\ # 상태 확인 sudo systemctl status kis-auto-trader@$USER.service --no-pager sudo systemctl status kis-auto-trader-dashboard@$USER.service --no-pager # 재시작 (코드 수정 후 등) sudo systemctl restart kis-auto-trader@$USER.service sudo systemctl restart kis-auto-trader-dashboard@$USER.service # 실시간 로그 journalctl -u kis-auto-trader@$USER.service -f
폰이나 PC 브라우저에서 https://<VM_IP_DASHED>.sslip.io로
접속하면 이 화면을 그대로 볼 수 있습니다(Caddy가 자동 HTTPS 처리).