use of org.knowm.xchange.dto.trade.MarketOrder in project cassandre-trading-bot by cassandre-tech.
the class PositionServiceTestMock method getXChangeTradeServiceMock.
@Override
public TradeService getXChangeTradeServiceMock() throws IOException {
TradeService mock = mock(TradeService.class);
// No trades returned - they will be directly emitted by the test.
given(mock.getTradeHistory(any())).willReturn(new UserTrades(Collections.emptyList(), SortByTimestamp));
// Position 1 creation reply (order ORDER00010).
MarketOrder m = new MarketOrder(BID, new BigDecimal("0.0001"), XCHANGE_ETH_BTC, null, null);
given(mock.placeMarketOrder(m)).willReturn("ORDER00010");
// Position 2 creation reply (order ORDER00020).
m = new MarketOrder(BID, new BigDecimal("0.0002"), XCHANGE_ETH_USDT, null, null);
given(mock.placeMarketOrder(m)).willReturn("ORDER00020");
// Position 3 creation reply (order ORDER00030).
m = new MarketOrder(BID, new BigDecimal("0.0003"), XCHANGE_ETH_BTC, null, null);
given(mock.placeMarketOrder(m)).willThrow(new RuntimeException("Error exception"));
// For checkLowestHighestAndLatestGain().
// Position 1.
// Opening reply (order ORDER00010).
m = new MarketOrder(BID, new BigDecimal("10"), XCHANGE_ETH_BTC, null, null);
given(mock.placeMarketOrder(m)).willReturn("ORDER00010");
// Closing reply (order ORDER00011).
m = new MarketOrder(ASK, new BigDecimal("10"), XCHANGE_ETH_BTC, null, null);
given(mock.placeMarketOrder(m)).willReturn("ORDER00011");
return mock;
}
use of org.knowm.xchange.dto.trade.MarketOrder in project cassandre-trading-bot by cassandre-tech.
the class Issue863TestMock method getXChangeTradeServiceMock.
@Override
public TradeService getXChangeTradeServiceMock() throws IOException {
TradeService mock = mock(TradeService.class);
// No trades returned - they will be directly emitted by the test.
given(mock.getTradeHistory(any())).willReturn(new UserTrades(Collections.emptyList(), SortByTimestamp));
// Position 1 opening & closing reply (order ORDER00010).
MarketOrder m = new MarketOrder(Order.OrderType.BID, new BigDecimal("0.0001"), XCHANGE_ETH_BTC, null, null);
given(mock.placeMarketOrder(m)).willReturn("ORDER00010");
// Position 2 opening & closing reply (order ORDER00020).
m = new MarketOrder(Order.OrderType.BID, new BigDecimal("0.0002"), XCHANGE_ETH_BTC, null, null);
given(mock.placeMarketOrder(m)).willReturn("ORDER00020");
return mock;
}
use of org.knowm.xchange.dto.trade.MarketOrder in project cassandre-trading-bot by cassandre-tech.
the class OrderFluxTestMock method getXChangeTradeServiceMock.
@Override
public org.knowm.xchange.service.trade.TradeService getXChangeTradeServiceMock() throws IOException {
org.knowm.xchange.service.trade.TradeService mock = mock(org.knowm.xchange.service.trade.TradeService.class);
given(mock.getTradeHistory(any())).willReturn(new UserTrades(Collections.emptyList(), SortByTimestamp));
// =============================================================================================================
// Order creation mock.
// Order ORDER_000001 (ASK, 1, ETH/BTC).
MarketOrder m = new MarketOrder(Order.OrderType.ASK, new BigDecimal("1"), XCHANGE_ETH_BTC, null, null);
given(mock.placeMarketOrder(m)).willReturn("ORDER_000001");
// Order ORDER_000002 (BID, 2, ETH/USDT).
m = new MarketOrder(Order.OrderType.BID, new BigDecimal("2"), XCHANGE_ETH_USDT, null, null);
given(mock.placeMarketOrder(m)).willReturn("ORDER_000002");
// Order ORDER_000003 (ASK, 3, ETH/BTC).
m = new MarketOrder(Order.OrderType.ASK, new BigDecimal("3"), XCHANGE_ETH_BTC, null, null);
given(mock.placeMarketOrder(m)).willReturn("ORDER_000003");
// Order ORDER_000004 (BID, 4, ETH/USDT).
m = new MarketOrder(Order.OrderType.BID, new BigDecimal("4"), XCHANGE_ETH_USDT, null, null);
given(mock.placeMarketOrder(m)).willReturn("ORDER_000004");
// =============================================================================================================
// Order creation mock.
given(mock.getOpenOrders()).willReturn(// - Order ORDER_000003.
getReply01(), // - Order ORDER_000004 : new order (but not yet created in database).
getReply02(), // - Order ORDER_000004 : original Amount changed.
getReply03());
return mock;
}
use of org.knowm.xchange.dto.trade.MarketOrder in project cassandre-trading-bot by cassandre-tech.
the class PositionLongFluxTestMock method getXChangeTradeServiceMock.
@Override
public org.knowm.xchange.service.trade.TradeService getXChangeTradeServiceMock() throws IOException {
org.knowm.xchange.service.trade.TradeService mock = mock(org.knowm.xchange.service.trade.TradeService.class);
// No trades or orders returned - they will be directly emitted during the test.
given(mock.getTradeHistory(any())).willReturn(new UserTrades(Collections.emptyList(), SortByTimestamp));
given(mock.getOpenOrders()).willReturn(new OpenOrders(Collections.emptyList()));
// Position 1.
// Opening order creation result.
MarketOrder m = new MarketOrder(Order.OrderType.BID, new BigDecimal("10"), XCHANGE_ETH_BTC, null, null);
given(mock.placeMarketOrder(m)).willReturn("ORDER00010");
// Closing order creation result.
m = new MarketOrder(Order.OrderType.ASK, new BigDecimal("10"), XCHANGE_ETH_BTC, null, null);
given(mock.placeMarketOrder(m)).willReturn("ORDER00011");
// Position 2.
// Opening order creation result.
m = new MarketOrder(Order.OrderType.BID, new BigDecimal("0.0002"), XCHANGE_ETH_USDT, null, null);
given(mock.placeMarketOrder(m)).willReturn("ORDER00020");
// Closing order creation result.
m = new MarketOrder(Order.OrderType.ASK, new BigDecimal("0.0002"), XCHANGE_ETH_USDT, null, null);
given(mock.placeMarketOrder(m)).willReturn("ORDER00021");
return mock;
}
use of org.knowm.xchange.dto.trade.MarketOrder in project XChange by knowm.
the class BitfinexAdapters method adaptOrders.
public static OpenOrders adaptOrders(BitfinexOrderStatusResponse[] activeOrders) {
List<LimitOrder> limitOrders = new ArrayList<>();
List<Order> hiddenOrders = new ArrayList<>();
for (BitfinexOrderStatusResponse order : activeOrders) {
OrderType orderType = order.getSide().equalsIgnoreCase("buy") ? OrderType.BID : OrderType.ASK;
OrderStatus status = adaptOrderStatus(order);
CurrencyPair currencyPair = adaptCurrencyPair(order.getSymbol());
Date timestamp = convertBigDecimalTimestampToDate(order.getTimestamp());
Supplier<MarketOrder> marketOrderCreator = () -> new MarketOrder(orderType, order.getOriginalAmount(), currencyPair, String.valueOf(order.getId()), timestamp, order.getAvgExecutionPrice(), order.getExecutedAmount(), null, status);
Supplier<LimitOrder> limitOrderCreator = () -> new LimitOrder(orderType, order.getOriginalAmount(), currencyPair, String.valueOf(order.getId()), timestamp, order.getPrice(), order.getAvgExecutionPrice(), order.getExecutedAmount(), null, status);
Supplier<StopOrder> stopOrderCreator = () -> new StopOrder(orderType, order.getOriginalAmount(), currencyPair, String.valueOf(order.getId()), timestamp, order.getPrice(), null, order.getAvgExecutionPrice(), order.getExecutedAmount(), status);
LimitOrder limitOrder = null;
StopOrder stopOrder = null;
MarketOrder marketOrder = null;
Optional<BitfinexOrderType> bitfinexOrderType = Arrays.stream(BitfinexOrderType.values()).filter(v -> v.getValue().equals(order.getType())).findFirst();
if (bitfinexOrderType.isPresent()) {
switch(bitfinexOrderType.get()) {
case FILL_OR_KILL:
limitOrder = limitOrderCreator.get();
limitOrder.addOrderFlag(BitfinexOrderFlags.FILL_OR_KILL);
break;
case MARGIN_FILL_OR_KILL:
limitOrder = limitOrderCreator.get();
limitOrder.addOrderFlag(BitfinexOrderFlags.FILL_OR_KILL);
limitOrder.addOrderFlag(BitfinexOrderFlags.MARGIN);
break;
case MARGIN_LIMIT:
limitOrder = limitOrderCreator.get();
limitOrder.addOrderFlag(BitfinexOrderFlags.MARGIN);
break;
case MARGIN_STOP:
stopOrder = stopOrderCreator.get();
stopOrder.addOrderFlag(BitfinexOrderFlags.STOP);
stopOrder.addOrderFlag(BitfinexOrderFlags.MARGIN);
break;
case MARGIN_STOP_LIMIT:
stopLimitWarning();
stopOrder = stopOrderCreator.get();
stopOrder.addOrderFlag(BitfinexOrderFlags.STOP);
stopOrder.addOrderFlag(BitfinexOrderFlags.MARGIN);
break;
case MARGIN_TRAILING_STOP:
limitOrder = limitOrderCreator.get();
limitOrder.addOrderFlag(BitfinexOrderFlags.TRAILING_STOP);
limitOrder.addOrderFlag(BitfinexOrderFlags.MARGIN);
break;
case STOP:
stopOrder = stopOrderCreator.get();
stopOrder.addOrderFlag(BitfinexOrderFlags.STOP);
break;
case STOP_LIMIT:
stopLimitWarning();
stopOrder = stopOrderCreator.get();
stopOrder.addOrderFlag(BitfinexOrderFlags.STOP);
break;
case TRAILING_STOP:
limitOrder = limitOrderCreator.get();
limitOrder.addOrderFlag(BitfinexOrderFlags.TRAILING_STOP);
break;
case LIMIT:
limitOrder = limitOrderCreator.get();
break;
case MARGIN_MARKET:
case MARKET:
marketOrder = marketOrderCreator.get();
break;
default:
log.warn("Unhandled Bitfinex order type [{}]. Defaulting to limit order", order.getType());
limitOrder = limitOrderCreator.get();
break;
}
} else {
log.warn("Unknown Bitfinex order type [{}]. Defaulting to limit order", order.getType());
limitOrder = limitOrderCreator.get();
}
if (limitOrder != null) {
limitOrders.add(limitOrder);
} else if (stopOrder != null) {
hiddenOrders.add(stopOrder);
} else if (marketOrder != null) {
hiddenOrders.add(marketOrder);
}
}
return new OpenOrders(limitOrders, hiddenOrders);
}
Aggregations