package de.invesdwin.util.math.decimal.stream;
import javax.annotation.concurrent.NotThreadSafe;
import de.invesdwin.util.math.decimal.ADecimal;
import de.invesdwin.util.math.decimal.Decimal;
import de.invesdwin.util.math.decimal.scaled.Percent;
@NotThreadSafe
public class DecimalStreamProfitFactor<E extends ADecimal<E>> implements IDecimalStreamAlgorithm<E, Void> {
private double profitSum;
private double lossSum;
@Override
public Void process(final E value) {
final double doubleValue = value.doubleValueRaw();
if (doubleValue > 0) {
profitSum += doubleValue;
} else {
lossSum += doubleValue;
}
return null;
}
public Percent getProfitFactor() {
return new Percent(new Decimal(profitSum), new Decimal(Math.abs(lossSum)));
}
}