@Test
  @UsingDataSet("datasets/it_test_dataset_28.xml")
  public void testMacdPositiveChange() {

    // Arrange
    final TradingSite tradingSite = new TradingSite("KRAKEN", "Kraken", "www.kraken.com");
    final Currency currency = new Currency("EUR", "Euro", "&euro");
    final CryptoCurrency cryptoCurrency = new CryptoCurrency("BTC", "Bitcoin", "BTC");
    final TradePair tradePair = new TradePair(1, tradingSite, currency, cryptoCurrency, 0.01F);
    final Trading trading = new Trading();
    trading.setTradePair(tradePair);

    final TradeRule tradeRule = new TradeRule();
    final Trend trend = new Trend(1, TrendType.MA, 2, null);
    final Macd macd = new Macd(1, trend, trend);

    final TradeCondition tradeCondition =
        new TradeCondition(
            1,
            tradeRule,
            TradeConditionType.POS_MACD_CHANGE,
            macd,
            null,
            null,
            null,
            0F,
            0F,
            0F,
            1,
            LogicalOperator.AND,
            true);

    signalBulkDataHandler.setMacd(macd);
    signalBulkDataHandler.setTrading(trading);

    final MacdPosChange macdPosChange = new MacdPosChange(signalBulkDataHandler);

    macdPosChange.setTrading(trading);
    macdPosChange.setTradeCondition(tradeCondition);

    // Index = 1, period = 1
    macdPosChange.setIndex(1);
    tradeCondition.setPeriod(1);

    // Act
    assertFalse(macdPosChange.evaluate());

    // Index = 3, period = 1
    macdPosChange.setIndex(3);
    tradeCondition.setPeriod(1);

    // Act
    assertTrue(macdPosChange.evaluate());

    // Index = 4, period = 1
    macdPosChange.setIndex(4);
    tradeCondition.setPeriod(1);

    // Act
    assertFalse(macdPosChange.evaluate());

    // Index = 3, period = 3
    macdPosChange.setIndex(3);
    tradeCondition.setPeriod(3);

    // Act
    assertTrue(macdPosChange.evaluate());
  }