use of org.ta4j.core.TimeSeries in project ta4j by ta4j.
the class RecursiveCachedIndicator method getValue.
@Override
public T getValue(int index) {
TimeSeries series = getTimeSeries();
if (series != null) {
final int seriesEndIndex = series.getEndIndex();
if (index <= seriesEndIndex) {
// We are not after the end of the series
final int removedBarsCount = series.getRemovedBarsCount();
int startIndex = Math.max(removedBarsCount, highestResultIndex);
if (index - startIndex > RECURSION_THRESHOLD) {
// Calculating the previous values iteratively
for (int prevIdx = startIndex; prevIdx < index; prevIdx++) {
super.getValue(prevIdx);
}
}
}
}
return super.getValue(index);
}
use of org.ta4j.core.TimeSeries in project ta4j by ta4j.
the class CashFlowTest method reallyLongCashFlow.
@Test
public void reallyLongCashFlow() {
int size = 1000000;
TimeSeries sampleTimeSeries = new MockTimeSeries(Collections.nCopies(size, new MockBar(10)));
TradingRecord tradingRecord = new BaseTradingRecord(Order.buyAt(0, sampleTimeSeries), Order.sellAt(size - 1, sampleTimeSeries));
CashFlow cashFlow = new CashFlow(sampleTimeSeries, tradingRecord);
assertDecimalEquals(cashFlow.getValue(size - 1), 1);
}
use of org.ta4j.core.TimeSeries in project ta4j by ta4j.
the class CashFlowTest method cashFlowSize.
@Test
public void cashFlowSize() {
TimeSeries sampleTimeSeries = new MockTimeSeries(1d, 2d, 3d, 4d, 5d);
CashFlow cashFlow = new CashFlow(sampleTimeSeries, new BaseTradingRecord());
assertEquals(5, cashFlow.getSize());
}
use of org.ta4j.core.TimeSeries in project ta4j by ta4j.
the class CashFlowTest method cashFlowValueWithOnlyOneTradeAndAGapAfter.
@Test
public void cashFlowValueWithOnlyOneTradeAndAGapAfter() {
TimeSeries sampleTimeSeries = new MockTimeSeries(1d, 2d, 2d);
TradingRecord tradingRecord = new BaseTradingRecord(Order.buyAt(0, sampleTimeSeries), Order.sellAt(1, sampleTimeSeries));
CashFlow cashFlow = new CashFlow(sampleTimeSeries, tradingRecord);
assertEquals(3, cashFlow.getSize());
assertDecimalEquals(cashFlow.getValue(0), 1);
assertDecimalEquals(cashFlow.getValue(1), 2);
assertDecimalEquals(cashFlow.getValue(2), 2);
}
use of org.ta4j.core.TimeSeries in project ta4j by ta4j.
the class CashFlowTest method cashFlowSell.
@Test
public void cashFlowSell() {
TimeSeries sampleTimeSeries = new MockTimeSeries(1, 2, 4, 8, 16, 32);
TradingRecord tradingRecord = new BaseTradingRecord(Order.sellAt(2, sampleTimeSeries), Order.buyAt(3, sampleTimeSeries));
CashFlow cashFlow = new CashFlow(sampleTimeSeries, tradingRecord);
assertDecimalEquals(cashFlow.getValue(0), 1);
assertDecimalEquals(cashFlow.getValue(1), 1);
assertDecimalEquals(cashFlow.getValue(2), 1);
assertDecimalEquals(cashFlow.getValue(3), "0.5");
assertDecimalEquals(cashFlow.getValue(4), "0.5");
assertDecimalEquals(cashFlow.getValue(5), "0.5");
}
Aggregations