추세검색기 기능 추가

This commit is contained in:
Macbook
2026-05-26 13:04:25 +09:00
parent ae8e96cef4
commit 7cf43609dc
9 changed files with 895 additions and 792 deletions
@@ -3,7 +3,7 @@ package com.goldenchart.dto;
import lombok.Data;
/**
* 추세검색 스캔 요청 — 좌측 필터 패널 (20개 조건).
* 추세검색 스캔 요청 — 정배열 / 상승세 / 거래량·유동성 / 보조지표 4개 카테고리.
*/
@Data
public class TrendSearchRequest {
@@ -15,46 +15,59 @@ public class TrendSearchRequest {
private int limit = 20;
/** 스캔 대상 종목 수 (거래대금 상위) */
private int scanLimit = 80;
private int scanLimit = 60;
/** 주 정렬 기준 (조건 id) */
private String sortBy = "near52wHigh";
/** 주 정렬 (matchRate 권장) */
private String sortBy = "matchRate";
/** 신고가 달성 횟수 산출 기간 (거래일) */
private int newHighDays = 20;
/** 결과 목록에 포함할 최소 일치율(%) — 0=전체 랭킹, 50=50% 이상만 */
private int minMatchRate = 0;
// ── 카테고리 ON/OFF ──
private boolean priceEnabled = true;
private boolean volumeEnabled = true;
private boolean flowEnabled = true;
private boolean fundamentalEnabled = false;
private boolean maAlignEnabled = true;
private boolean trendEnabled = true;
private boolean volumePowerEnabled = false;
private boolean indicatorEnabled = false;
// . 가격 및 탄력성
private boolean near52wHigh = true;
private boolean ret3m = false;
private boolean ret6m = false;
private boolean maDeviation = true;
private boolean maFullAlign = true;
private boolean stage2 = false;
private boolean relativeStrength = true;
private boolean newHighCount = false;
// . 정배열 (Moving Average Alignment)
/** 주가(종가) > 5·20·60일 이평 */
private boolean priceAboveMa = true;
/** 5 > 20 > 60 > 120 정배열 */
private boolean maAlignment = true;
/** 이평밀집도(5·20·60) 수렴 후 확산 (선택) */
private boolean maConvergence = false;
/** 이평밀집도 허용 % (기본 3) */
private double maConvergencePct = 3.0;
// Ⅱ. 거래량 및 대금
private boolean tradeAmount = false;
private boolean volVs5dAvg = true;
private boolean turnover = false;
private boolean bidAskRatio = false;
// Ⅱ. 상승세 (Trend & Momentum)
/** 20일 이평 연속 상승 봉 수 */
private boolean ma20SlopeUp = true;
private int ma20SlopeBars = 2;
/** N일 신고가 돌파 또는 고가 대비 -near% 이내 */
private boolean newHighBreakout = true;
private int newHighBreakoutDays = 20;
private double newHighNearPct = 5.0;
/** 일목 구름대(선행스팬) 상단 */
private boolean ichimokuAboveCloud = false;
// Ⅲ. 메이저 수급 및 심리
private boolean smartMoney = false;
private boolean instConsecutive = false;
private boolean rsiHigh = true;
private boolean macdPeak = false;
private boolean lightCredit = false;
// Ⅲ. 돈과 힘 (Volume & Liquidity)
/** 직전 봉 대비 거래량 % (일봉=전일, 분봉=직전 봉) */
private boolean volumeVsPrior200 = false;
private double volumeVsPriorPct = 150.0;
/** 최근 5일 평균 거래대금 하한 (KRW) */
private boolean minTurnover5dAvg = false;
private long minTurnover5dAvgKrw = 1_000_000_000L;
/** 5일 거래량 이평 > 20일 거래량 이평 */
private boolean volMa5Over20 = false;
// Ⅳ. 펀더멘털 (주식 전용 — 코인 미지원)
private boolean earningsGrowth = false;
private boolean roe = false;
private boolean opMargin = false;
private boolean pegBelow1 = false;
// Ⅳ. 보조지표
/** MACD Line > Signal 또는 MACD > 0 */
private boolean macdGoldenCross = false;
/** RSI 구간 (기본 50~70) */
private boolean rsiBand = false;
private double rsiMin = 50.0;
private double rsiMax = 75.0;
/** +DI > -DI AND ADX >= adxMin */
private boolean dmiBullish = false;
private double adxMin = 18.0;
}
File diff suppressed because it is too large Load Diff