io.fair_acc.sample.financial.service.consolidate.RangeBarsIncrementalOhlcvConsolidation Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of samples Show documentation
Show all versions of samples Show documentation
Small sample applications to showcase the features of the chart-fx library.
The newest version!
package io.fair_acc.sample.financial.service.consolidate;
import java.util.Calendar;
import io.fair_acc.sample.financial.dos.Interval;
import io.fair_acc.sample.financial.dos.OHLCVItem;
import io.fair_acc.sample.financial.service.period.IntradayPeriod;
/**
* Range-Bars based financial charts
*
* @author afischer
*/
public class RangeBarsIncrementalOhlcvConsolidation extends AbstractIncrementalOhlcvConsolidation {
private final double rangeBarsLength;
private boolean hasLength = true; // declare first bar
private double low;
private double high;
public RangeBarsIncrementalOhlcvConsolidation(OhlcvTimeframeConsolidation.OhlcvConsolidationComputation consolidationComputation,
IntradayPeriod period, double minMoveTick, Interval tt,
OhlcvConsolidationAddon[] ohlcvConsolidationAddons) {
super(consolidationComputation, period, tt, ohlcvConsolidationAddons);
this.rangeBarsLength = period.getPeriodValue() * minMoveTick;
}
@Override
protected void defineConsolidationConditionAfterAddition(OHLCVItem finalItem) {
defineConsolidationCondition(finalItem);
}
@Override
protected void defineConsolidationConditionAfterUpdate(OHLCVItem finalItem) {
defineConsolidationCondition(finalItem);
}
@Override
protected boolean checkConsolidationCondition(OHLCVItem lastItem, OHLCVItem incrementItem) {
return !hasLength || incrementItem.getLow() >= low && incrementItem.getHigh() <= high;
}
private void defineConsolidationCondition(OHLCVItem finalItem) {
low = finalItem.getLow();
high = finalItem.getHigh();
hasLength = rangeBarsLength <= (high - low);
}
}