72 lines
4.8 KiB
Markdown
72 lines
4.8 KiB
Markdown
|
|
[계획 문서 경로]
|
||
|
|
- common-docs/improvement/plans/dev-plan-2026-03-06-autotrade-ai-signal-context.md
|
||
|
|
|
||
|
|
[요구사항 요약]
|
||
|
|
- 자동매매에서 AI에 넘기는 신호 생성 입력값이 신규 프롬프트 요구사항을 만족하는지 점검한다.
|
||
|
|
- 부족한 데이터가 있으면 실제 신호 요청 payload에 추가한다.
|
||
|
|
- 변경 후 검증 결과까지 남긴다.
|
||
|
|
|
||
|
|
[가정]
|
||
|
|
- 신규 프롬프트의 핵심 요구는 `직전 강한 움직임 + 최근 1분봉 압축 구간` 판단이다.
|
||
|
|
- 현재 전달 중인 최근 체결/호가 파생값만으로는 캔들 구조 판단이 부족하다.
|
||
|
|
- 실시간 주문 루프는 유지하되, 추가 데이터는 기존 KIS 차트 API를 재사용해 보강한다.
|
||
|
|
|
||
|
|
[영향 범위]
|
||
|
|
- 수정: features/autotrade/hooks/useAutotradeEngine.ts
|
||
|
|
- 수정: features/autotrade/apis/autotrade.api.ts
|
||
|
|
- 수정: features/autotrade/types/autotrade.types.ts
|
||
|
|
- 수정: app/api/autotrade/signals/generate/route.ts
|
||
|
|
- 수정: lib/autotrade/openai.ts
|
||
|
|
- 수정: lib/autotrade/cli-provider.ts
|
||
|
|
- 수정: common-docs/improvement/plans/dev-plan-2026-03-06-autotrade-ai-signal-context.md
|
||
|
|
- 추가: 없음
|
||
|
|
- 삭제: 없음
|
||
|
|
|
||
|
|
[구현 단계]
|
||
|
|
- [x] 1. 현재 신호 생성 입력값과 신규 프롬프트 요구사항 차이를 정리한다.
|
||
|
|
- 근거: 기존 signal payload에는 틱/호가/체결 파생값만 있고, 최근 1분봉 OHLCV와 원본 사용자 prompt가 빠져 있었음.
|
||
|
|
- [x] 2. 최근 1분봉 OHLCV와 관련 파생값을 담을 타입/요청 스키마를 추가한다.
|
||
|
|
- 근거: `features/autotrade/types/autotrade.types.ts`, `app/api/autotrade/signals/generate/route.ts`
|
||
|
|
- [x] 3. 자동매매 훅에서 최근 1분봉 데이터를 조회/캐시하고 신호 요청 snapshot에 포함한다.
|
||
|
|
- 근거: `features/autotrade/hooks/useAutotradeEngine.ts`
|
||
|
|
- [x] 4. OpenAI/구독형 CLI 프롬프트가 새 입력값을 활용하도록 지시문을 보강한다.
|
||
|
|
- 근거: `lib/autotrade/openai.ts`, `lib/autotrade/cli-provider.ts`
|
||
|
|
- [x] 5. 로그 요약에 새 입력 데이터가 보이도록 정리한다.
|
||
|
|
- 근거: `features/autotrade/hooks/useAutotradeEngine.ts`
|
||
|
|
|
||
|
|
[사용할 MCP/Skills]
|
||
|
|
- MCP: next-devtools(init), update_plan
|
||
|
|
- Skills: dev-auto-pipeline, dev-plan-writer, dev-mcp-implementation, dev-refactor-polish, dev-test-gate, dev-plan-completion-checker, vercel-react-best-practices
|
||
|
|
|
||
|
|
[참조 문서(common-docs)]
|
||
|
|
- common-docs/api-reference/kis_api_reference.md
|
||
|
|
- common-docs/api-reference/kis-error-code-reference.md
|
||
|
|
- common-docs/features/trade-stock-sync.md
|
||
|
|
- common-docs/ui/GLOBAL_ALERT_SYSTEM.md
|
||
|
|
|
||
|
|
[주석/문서 반영 계획]
|
||
|
|
- 함수 주석: [목적]/[사용처]/[데이터 흐름] 유지
|
||
|
|
- 상태 주석: 값 변경 시 화면/주문 루프 영향 한 줄 설명
|
||
|
|
- 복잡 로직/핸들러: [Step 1], [Step 2], [Step 3] 구조 유지
|
||
|
|
- JSX 구역 주석: 기존 구조 유지, 필요 시 최소 보강
|
||
|
|
|
||
|
|
[리스크/회귀 포인트]
|
||
|
|
- 1분봉 조회를 신호 루프마다 과도하게 호출하면 응답 지연이 늘 수 있다.
|
||
|
|
- 차트 조회 실패 시 신호 생성 자체가 막히지 않도록 기존 snapshot fallback을 유지해야 한다.
|
||
|
|
- 타입 확장 후 route/request schema가 불일치하면 신호 요청이 400으로 실패할 수 있다.
|
||
|
|
|
||
|
|
[검증 계획]
|
||
|
|
- [x] 1. 타입/요청 스키마가 일치하는지 `npm run lint`로 확인한다.
|
||
|
|
- 결과: 통과
|
||
|
|
- [x] 2. OpenAI/CLI 프롬프트에 1분봉 데이터와 압축 구간 판단 지시가 반영됐는지 코드로 확인한다.
|
||
|
|
- 결과: `operatorPrompt`, `recentMinuteCandles`, `minutePatternContext` 활용 지시 반영 완료
|
||
|
|
- [x] 3. 신호 요청 snapshot 로그에 새 필드가 노출되는지 코드 기준으로 확인한다.
|
||
|
|
- 결과: `snapshotSummary`, `snapshot` 로그에 minutePattern/recentMinuteCandlesTail 반영 완료
|
||
|
|
|
||
|
|
[진행 로그]
|
||
|
|
- 2026-03-06: 기존 snapshot은 틱/호가/체결 파생값은 충분하지만, 1분봉 캔들 구조 데이터가 없어 신규 패턴 프롬프트 기준으로는 입력이 부족하다고 판단함.
|
||
|
|
- 2026-03-06: 신호 요청에 원본 사용자 prompt를 추가해, 전략 요약으로 축약되던 세부 규칙이 신호 생성 단계에도 직접 전달되도록 수정함.
|
||
|
|
- 2026-03-06: 최근 1분봉 OHLCV 24개와 minutePatternContext(직전 추세/압축 범위/압축 거래량비/박스 상하단)를 snapshot에 추가함.
|
||
|
|
- 2026-03-06: `npm run lint`, `npm run build` 통과. `nextjs_call(get_errors)` 기준 3001 개발 서버에서 브라우저 세션 오류 없음 확인. 브라우저 자동화 스모크는 로컬 Chrome 프로필 충돌로 미실행.
|
||
|
|
- 2026-03-06: BUY 신호인데 주문이 나가지 않는 원인을 추가 점검한 결과, `maxOrderAmountRatio`가 낮으면 전체 예산으로 1주를 살 수 있어도 주문 수량이 0주가 되는 문제가 확인됨. `lib/autotrade/risk.ts`에서 최소 1주 보정 로직을 추가하고 `npm run lint`, `npm run build` 재통과 확인.
|