dafb1e49af
BacktestingService에 IndicatorSettingsService를 주입하여 백테스팅 실행 시 deviceId 기반으로 DB 저장 인디케이터 설정을 자동으로 로드한다. - 프론트엔드가 indicatorParams를 전달하지 않아도 DB 저장값 사용 보장 - 요청에 포함된 indicatorParams는 DB값 위에 override로 적용(우선순위 높음) - 어떠한 경우에도 백엔드 하드코딩 기본값만으로 테스트되는 상황 방지 - mergeIndicatorParams() 헬퍼로 DB+요청 파라미터 내부 필드 단위 병합 Co-authored-by: Cursor <cursoragent@cursor.com>
61 lines
1.8 KiB
Java
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;
|
|
}
|