보조지표 소수점 추가, cci 수정

This commit is contained in:
Macbook
2026-05-30 00:13:22 +09:00
parent 6332d198b1
commit ad92dace28
11 changed files with 286 additions and 20 deletions
@@ -599,10 +599,11 @@ public class StrategyDslToTa4jAdapter {
// CCI — 기간 접미사(CCI_VALUE_13) 또는 기본 CCI_VALUE
if (field.startsWith("CCI_VALUE_")) {
int period = parseTrailingInt(field, "CCI_VALUE_", intP(p, "length", 13));
return new CCIIndicator(s, period);
return new CciOnSourceIndicator(resolvePriceSource(s, p), period);
}
if (field.equals("CCI_VALUE") || indType.equals("CCI"))
return new CCIIndicator(s, periodOverride > 0 ? periodOverride : intP(p, "length", 13));
return new CciOnSourceIndicator(resolvePriceSource(s, p),
periodOverride > 0 ? periodOverride : intP(p, "length", 13));
// RSI — 기간 접미사(RSI_VALUE_9) 또는 기본 RSI_VALUE
if (field.startsWith("RSI_VALUE_")) {
int period = parseTrailingInt(field, "RSI_VALUE_", intP(p, "length", 14));
@@ -865,6 +866,17 @@ public class StrategyDslToTa4jAdapter {
// ── TRIX 헬퍼 ─────────────────────────────────────────────────────────────
private Indicator<Num> resolvePriceSource(BarSeries s, Map<String, Object> p) {
return switch (p.getOrDefault("src", "close").toString()) {
case "open" -> new OpenPriceIndicator(s);
case "high" -> new HighPriceIndicator(s);
case "low" -> new LowPriceIndicator(s);
case "hl2" -> new MedianPriceIndicator(s);
case "hlc3" -> new TypicalPriceIndicator(s);
default -> new ClosePriceIndicator(s);
};
}
private EMAIndicator tripleEma(ClosePriceIndicator close, int len) {
return new EMAIndicator(new EMAIndicator(new EMAIndicator(close, len), len), len);
}