/** * Open a new trade * @param trade */ public void openTrade(final Trade trade) { if(! bitfinexApiBroker.isAuthenticated()) { logger.error("Unable to execute trade {} on marketplace, conecction is not authenticated", trade); return; } final double amount = trade.getAmount(); final BitfinexOrder order = BitfinexOrderBuilder .create(trade.getSymbol(), BitfinexOrderType.EXCHANGE_MARKET, amount) .build(); try { trade.setTradeState(TradeState.OPENING); trade.addOpenOrder(order); bitfinexApiBroker.getOrderManager().placeOrder(order); trade.setTradeState(TradeState.OPEN); } catch (APIException e) { logger.error("Got an exception while opening trade {}", trade); trade.setTradeState(TradeState.ERROR); } finally { persistTrade(trade); } }
/** * Close a trade * @param trade */ public void closeTrade(final Trade trade) { if(! bitfinexApiBroker.isAuthenticated()) { logger.error("Unable to execute trade {} on marketplace, conecction is not authenticated", trade); return; } final double amount = trade.getAmount() * -1.0; final BitfinexOrder order = BitfinexOrderBuilder .create(trade.getSymbol(), BitfinexOrderType.EXCHANGE_MARKET, amount) .build(); try { trade.setTradeState(TradeState.CLOSING); trade.addCloseOrder(order); bitfinexApiBroker.getOrderManager().placeOrder(order); trade.setTradeState(TradeState.CLOSED); } catch (APIException e) { logger.error("Got an exception while closing trade {}", trade); trade.setTradeState(TradeState.ERROR); } finally { persistTrade(trade); } }