use of org.ta4j.core.indicators.helpers.ClosePriceIndicator in project ta4j by ta4j.
the class MovingMomentumStrategy method buildStrategy.
/**
* @param series a time series
* @return a moving momentum strategy
*/
public static Strategy buildStrategy(TimeSeries series) {
if (series == null) {
throw new IllegalArgumentException("Series cannot be null");
}
ClosePriceIndicator closePrice = new ClosePriceIndicator(series);
// The bias is bullish when the shorter-moving average moves above the longer moving average.
// The bias is bearish when the shorter-moving average moves below the longer moving average.
EMAIndicator shortEma = new EMAIndicator(closePrice, 9);
EMAIndicator longEma = new EMAIndicator(closePrice, 26);
StochasticOscillatorKIndicator stochasticOscillK = new StochasticOscillatorKIndicator(series, 14);
MACDIndicator macd = new MACDIndicator(closePrice, 9, 26);
EMAIndicator emaMacd = new EMAIndicator(macd, 18);
// Entry rule
Rule entryRule = // Trend
new OverIndicatorRule(shortEma, longEma).and(// Signal 1
new CrossedDownIndicatorRule(stochasticOscillK, Decimal.valueOf(20))).and(// Signal 2
new OverIndicatorRule(macd, emaMacd));
// Exit rule
Rule exitRule = // Trend
new UnderIndicatorRule(shortEma, longEma).and(// Signal 1
new CrossedUpIndicatorRule(stochasticOscillK, Decimal.valueOf(80))).and(// Signal 2
new UnderIndicatorRule(macd, emaMacd));
return new BaseStrategy(entryRule, exitRule);
}
use of org.ta4j.core.indicators.helpers.ClosePriceIndicator in project ta4j by ta4j.
the class RSI2Strategy method buildStrategy.
/**
* @param series a time series
* @return a 2-period RSI strategy
*/
public static Strategy buildStrategy(TimeSeries series) {
if (series == null) {
throw new IllegalArgumentException("Series cannot be null");
}
ClosePriceIndicator closePrice = new ClosePriceIndicator(series);
SMAIndicator shortSma = new SMAIndicator(closePrice, 5);
SMAIndicator longSma = new SMAIndicator(closePrice, 200);
// We use a 2-period RSI indicator to identify buying
// or selling opportunities within the bigger trend.
RSIIndicator rsi = new RSIIndicator(closePrice, 2);
// Entry rule
// The long-term trend is up when a security is above its 200-period SMA.
Rule entryRule = // Trend
new OverIndicatorRule(shortSma, longSma).and(// Signal 1
new CrossedDownIndicatorRule(rsi, Decimal.valueOf(5))).and(// Signal 2
new OverIndicatorRule(shortSma, closePrice));
// Exit rule
// The long-term trend is down when a security is below its 200-period SMA.
Rule exitRule = // Trend
new UnderIndicatorRule(shortSma, longSma).and(// Signal 1
new CrossedUpIndicatorRule(rsi, Decimal.valueOf(95))).and(// Signal 2
new UnderIndicatorRule(shortSma, closePrice));
return new BaseStrategy(entryRule, exitRule);
}
use of org.ta4j.core.indicators.helpers.ClosePriceIndicator in project ta4j by ta4j.
the class VarianceIndicatorTest method varianceUsingTimeFrame4UsingClosePrice.
@Test
public void varianceUsingTimeFrame4UsingClosePrice() {
VarianceIndicator var = new VarianceIndicator(new ClosePriceIndicator(data), 4);
assertDecimalEquals(var.getValue(0), 0);
assertDecimalEquals(var.getValue(1), 0.25);
assertDecimalEquals(var.getValue(2), 2.0 / 3);
assertDecimalEquals(var.getValue(3), 1.25);
assertDecimalEquals(var.getValue(4), 0.5);
assertDecimalEquals(var.getValue(5), 0.25);
assertDecimalEquals(var.getValue(6), 0.5);
assertDecimalEquals(var.getValue(7), 0.5);
assertDecimalEquals(var.getValue(8), 0.5);
assertDecimalEquals(var.getValue(9), 3.5);
assertDecimalEquals(var.getValue(10), 10.5);
}
use of org.ta4j.core.indicators.helpers.ClosePriceIndicator in project ta4j by ta4j.
the class VarianceIndicatorTest method firstValueShouldBeZero.
@Test
public void firstValueShouldBeZero() {
VarianceIndicator var = new VarianceIndicator(new ClosePriceIndicator(data), 4);
assertDecimalEquals(var.getValue(0), 0);
}
use of org.ta4j.core.indicators.helpers.ClosePriceIndicator in project ta4j by ta4j.
the class VarianceIndicatorTest method varianceUsingTimeFrame2UsingClosePrice.
@Test
public void varianceUsingTimeFrame2UsingClosePrice() {
VarianceIndicator var = new VarianceIndicator(new ClosePriceIndicator(data), 2);
assertDecimalEquals(var.getValue(0), 0);
assertDecimalEquals(var.getValue(1), 0.25);
assertDecimalEquals(var.getValue(2), 0.25);
assertDecimalEquals(var.getValue(3), 0.25);
assertDecimalEquals(var.getValue(9), 2.25);
assertDecimalEquals(var.getValue(10), 20.25);
}
Aggregations