Files
goldenChart/backend/src/main/java/com/goldenchart/dto/BacktestRequest.java
T
Macbook dafb1e49af fix: 백테스팅 시 인디케이터 파라미터를 DB에서 자동 로드
BacktestingService에 IndicatorSettingsService를 주입하여 백테스팅
실행 시 deviceId 기반으로 DB 저장 인디케이터 설정을 자동으로 로드한다.

- 프론트엔드가 indicatorParams를 전달하지 않아도 DB 저장값 사용 보장
- 요청에 포함된 indicatorParams는 DB값 위에 override로 적용(우선순위 높음)
- 어떠한 경우에도 백엔드 하드코딩 기본값만으로 테스트되는 상황 방지
- mergeIndicatorParams() 헬퍼로 DB+요청 파라미터 내부 필드 단위 병합

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-11 17:48:21 +09:00

61 lines
1.8 KiB
Java

package com.goldenchart.dto;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.*;
import java.util.List;
import java.util.Map;
/**
* 백테스팅 요청 DTO.
*
* <pre>
* {
* "strategyId": 1, // DB 전략 ID (선택 — 없으면 dsl 직접 전송)
* "buyCondition": { ...LogicNode }, // 매수 조건 DSL
* "sellCondition": { ...LogicNode }, // 매도 조건 DSL
* "bars": [ {time, open, high, low, close, volume}, ... ],
* "timeframe": "1D",
* "indicatorParams": { "CCI": {"length":13}, ... } // 사용자 설정 파라미터 (선택)
* }
* </pre>
*/
@Data @Builder @NoArgsConstructor @AllArgsConstructor
public class BacktestRequest {
/** DB 저장 전략 ID (선택 — 설정 시 buyCondition/sellCondition 무시) */
private Long strategyId;
/** 매수 조건 DSL */
private JsonNode buyCondition;
/** 매도 조건 DSL */
private JsonNode sellCondition;
/** OHLCV 캔들 데이터 */
private List<OhlcvBar> bars;
/** 타임프레임 (1m/5m/15m/30m/1h/4h/1D/1W/1M) */
private String timeframe;
/**
* 지표 파라미터 오버라이드 (선택).
* key = indicatorType (e.g. "CCI"), value = {length:13, ...}
* BacktestingService 가 deviceId 기반으로 DB 저장값을 자동 로드하므로
* 보통 생략해도 되며, 명시 시 DB 값 위에 덮어쓴다(우선 적용).
*/
private Map<String, Map<String, Object>> indicatorParams;
/** 백테스팅 설정 옵션 (선택 — 없으면 기본값 사용) */
private BacktestSettingsDto settings;
/** 종목 코드 (결과 저장용, e.g. "KRW-BTC") */
private String symbol;
/** 전략 이름 (결과 저장용) */
private String strategyName;
/** 디바이스 ID (결과 저장용) */
private String deviceId;
}