From 443ec91d5b6ad293fc477ac1af6015d6087c724f Mon Sep 17 00:00:00 2001 From: b00lean Date: Mon, 17 Aug 2015 00:14:03 +0200 Subject: [PATCH] Added Bitfinex sell functionality --- .../libs/xchange-bitfinex-2.2.0-SNAPSHOT.jar | Bin 61010 -> 63152 bytes .../exchanges/bitfinex/BitfinexExchange.java | 207 +++++++++++++++++- 2 files changed, 200 insertions(+), 7 deletions(-) diff --git a/server_extensions_extra/libs/xchange-bitfinex-2.2.0-SNAPSHOT.jar b/server_extensions_extra/libs/xchange-bitfinex-2.2.0-SNAPSHOT.jar index f7636e6618dadd1fd1500f24e8fb25c865d38244..f7d47fd225576c4f07d37e51c565585b0f4cb73e 100644 GIT binary patch delta 7459 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 checkTillTime) { + log.debug("Giving up on waiting for trade " + orderId + " to complete"); + finished = true; + return false; + } + + log.debug("Open orders:"); + boolean orderFound = false; + try { + OpenOrders openOrders = tradeService.getOpenOrders(); + for (LimitOrder openOrder : openOrders.getOpenOrders()) { + log.debug("openOrder = " + openOrder); + if (orderId.equals(openOrder.getId())) { + orderFound = true; + break; + } + } + } catch (IOException e) { + e.printStackTrace(); + } + + if (orderFound) { + log.debug("Waiting for order to be processed."); + }else{ + orderProcessed = true; + } + + if (orderProcessed) { + result = orderId; + finished = true; + } + + return result != null; + } + + @Override + public boolean isFinished() { + return finished; + } + + @Override + public String getResult() { + return result; + } + + @Override + public boolean isFailed() { + return finished && result == null; + } + + @Override + public void onFinish() { + log.debug("Sell task finished."); + } + + @Override + public long getShortestTimeForNexStepInvocation() { + return 5 * 1000; //it doesn't make sense to run step sooner than after 5 seconds + } + } + }