diff --git a/xchange-simulated/src/main/java/org/knowm/xchange/simulated/SimulatedTradeService.java b/xchange-simulated/src/main/java/org/knowm/xchange/simulated/SimulatedTradeService.java index 0bb114c9e1e..27d159b8bc1 100644 --- a/xchange-simulated/src/main/java/org/knowm/xchange/simulated/SimulatedTradeService.java +++ b/xchange-simulated/src/main/java/org/knowm/xchange/simulated/SimulatedTradeService.java @@ -122,7 +122,7 @@ public boolean cancelOrder(CancelOrderParams orderParams) throws IOException { String orderId = ((CancelOrderByIdParams) orderParams).getOrderId(); Order.OrderType type = ((CancelOrderByOrderTypeParams) orderParams).getOrderType(); - engine.cancelOrder(orderId, getApiKey(), type); + engine.cancelOrder(getApiKey(), orderId, type); return true; } diff --git a/xchange-simulated/src/test/java/org/knowm/xchange/simulated/TestSimulatedExchange.java b/xchange-simulated/src/test/java/org/knowm/xchange/simulated/TestSimulatedExchange.java index 6394394abad..5894ac2534b 100644 --- a/xchange-simulated/src/test/java/org/knowm/xchange/simulated/TestSimulatedExchange.java +++ b/xchange-simulated/src/test/java/org/knowm/xchange/simulated/TestSimulatedExchange.java @@ -19,6 +19,7 @@ import org.knowm.xchange.Exchange; import org.knowm.xchange.ExchangeFactory; import org.knowm.xchange.ExchangeSpecification; +import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.Order; import org.knowm.xchange.dto.account.Balance; import org.knowm.xchange.dto.marketdata.OrderBook; @@ -29,6 +30,9 @@ import org.knowm.xchange.dto.trade.UserTrades; import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.exceptions.FundsExceededException; +import org.knowm.xchange.service.trade.params.CancelOrderByCurrencyPair; +import org.knowm.xchange.service.trade.params.CancelOrderByIdParams; +import org.knowm.xchange.service.trade.params.CancelOrderByOrderTypeParams; import org.knowm.xchange.service.trade.params.TradeHistoryParamCurrencyPair; import org.knowm.xchange.service.trade.params.orders.OpenOrdersParamCurrencyPair; @@ -360,6 +364,59 @@ public void testBalanceIsReleasedOnCancel() throws IOException { assertThat(baseBalance.getAvailable()).isEqualTo(INITIAL_BALANCE); } + @Test + public void testCancelByCurrencyPairIdAndOrderType() throws IOException { + // When + String orderId = + exchange + .getTradeService() + .placeLimitOrder( + new LimitOrder.Builder(BID, BTC_USD) + .limitPrice(new BigDecimal(10)) + .originalAmount(new BigDecimal("0.7")) + .build()); + exchange + .getTradeService() + .cancelOrder(new CancelByCurrencyPairIdAndType(BTC_USD, orderId, BID)); + Balance counterBalance = + exchange.getAccountService().getAccountInfo().getWallet().getBalance(USD); + + // Then + assertThat(getOpenOrders().getOpenOrders()).isEmpty(); + assertThat(counterBalance.getFrozen()).isEqualByComparingTo(ZERO); + assertThat(counterBalance.getAvailable()).isEqualByComparingTo(INITIAL_BALANCE); + } + + private static final class CancelByCurrencyPairIdAndType + implements CancelOrderByCurrencyPair, CancelOrderByIdParams, CancelOrderByOrderTypeParams { + + private final CurrencyPair currencyPair; + private final String orderId; + private final Order.OrderType orderType; + + private CancelByCurrencyPairIdAndType( + CurrencyPair currencyPair, String orderId, Order.OrderType orderType) { + this.currencyPair = currencyPair; + this.orderId = orderId; + this.orderType = orderType; + } + + @Override + public CurrencyPair getCurrencyPair() { + return currencyPair; + } + + @Override + public String getOrderId() { + return orderId; + } + + @Override + public Order.OrderType getOrderType() { + return orderType; + } + } + private OpenOrders getOpenOrders() throws IOException { OpenOrdersParamCurrencyPair params = exchange.getTradeService().createOpenOrdersParams(); params.setCurrencyPair(BTC_USD);