추세선 전략추가
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user