use of org.ta4j.core.indicators.MACDIndicator in project crypto-bot by jnidzwetzki.
the class DonchianChannelStrategy method getStrategy.
@Override
public Strategy getStrategy() {
final MACDIndicator macd = new MACDIndicator(closePriceIndicator, 9, 26);
final EMAIndicator emaMacd = new EMAIndicator(macd, 9);
final Rule buyingRule = new AndRule(new IsRisingRule(donchianChannelUpper, 1), new OverIndicatorRule(macd, Decimal.valueOf(0)));
final // new OrRule(
Rule sellingRule = new IsFallingRule(donchianChannelLower, 1);
// new UnderIndicatorRule(macd, emaMacd));
final BaseStrategy strategy = new BaseStrategy(buyingRule, sellingRule);
return strategy;
}
use of org.ta4j.core.indicators.MACDIndicator 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);
}
Aggregations