추세선 전략추가

This commit is contained in:
Macbook
2026-06-25 02:45:39 +09:00
parent ee8cd50781
commit f9447ea52f
31 changed files with 1793 additions and 49 deletions
@@ -0,0 +1,51 @@
package com.goldenchart.service;
import com.goldenchart.dto.TrendLineConfig;
import com.goldenchart.dto.TrendLineKind;
import org.ta4j.core.BarSeries;
import org.ta4j.core.Indicator;
import org.ta4j.core.indicators.AbstractIndicator;
import org.ta4j.core.num.Num;
import static org.ta4j.core.num.NaN.NaN;
/** bar index 에서 N봉 추세선 Y값 — left 지표·종가와 CROSS 비교용 */
public class TrendLineValueIndicator extends AbstractIndicator<Num> {
private final Indicator<Num> source;
private final BarSeries series;
private final int lookback;
private final TrendLineConfig config;
private final TrendLineKind kind;
private final boolean priceScale;
public TrendLineValueIndicator(
Indicator<Num> source,
BarSeries series,
int lookback,
TrendLineConfig config,
TrendLineKind kind,
boolean priceScale) {
super(series);
this.source = source;
this.series = series;
this.lookback = Math.max(2, lookback);
this.config = config != null ? config : TrendLineConfig.defaults();
this.kind = kind != null ? kind : TrendLineKind.DOWN;
this.priceScale = priceScale;
}
@Override
public Num getValue(int index) {
double v = TrendLineMath.valueAt(series, source, index, lookback, config, kind, priceScale);
if (!Double.isFinite(v)) {
return NaN;
}
return series.numFactory().numOf(v);
}
@Override
public int getCountOfUnstableBars() {
return lookback + 1;
}
}