보조지표 소수점 추가, 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
@@ -0,0 +1,45 @@
package com.goldenchart.service;
import org.ta4j.core.BarSeries;
import org.ta4j.core.Indicator;
import org.ta4j.core.indicators.CachedIndicator;
import org.ta4j.core.indicators.averages.SMAIndicator;
import org.ta4j.core.indicators.statistics.MeanDeviationIndicator;
import org.ta4j.core.num.Num;
/**
* TradingView/업비트 CCI — 임의 가격 소스에 대해
* (src - SMA) / (0.015 × MeanDeviation) 계산.
*/
public class CciOnSourceIndicator extends CachedIndicator<Num> {
private final Indicator<Num> price;
private final SMAIndicator sma;
private final MeanDeviationIndicator meanDeviation;
private final Num factor;
private final int barCount;
public CciOnSourceIndicator(Indicator<Num> price, int barCount) {
super(price);
this.price = price;
this.barCount = barCount;
this.factor = getBarSeries().numFactory().numOf(0.015);
this.sma = new SMAIndicator(price, barCount);
this.meanDeviation = new MeanDeviationIndicator(price, barCount);
}
@Override
protected Num calculate(int index) {
final Num meanDeviation = this.meanDeviation.getValue(index);
if (meanDeviation.isZero()) {
return getBarSeries().numFactory().zero();
}
return price.getValue(index).minus(sma.getValue(index))
.dividedBy(meanDeviation.multipliedBy(factor));
}
@Override
public int getCountOfUnstableBars() {
return barCount - 1;
}
}