com.xeiam.xchange.kraken.service.polling.KrakenTradeServiceRaw Maven / Gradle / Ivy
/**
* Copyright (C) 2012 - 2014 Xeiam LLC http://xeiam.com
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
* of the Software, and to permit persons to whom the Software is furnished to do
* so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package com.xeiam.xchange.kraken.service.polling;
import java.io.IOException;
import java.util.Map;
import com.xeiam.xchange.ExchangeSpecification;
import com.xeiam.xchange.dto.trade.LimitOrder;
import com.xeiam.xchange.dto.trade.MarketOrder;
import com.xeiam.xchange.kraken.KrakenAuthenticated;
import com.xeiam.xchange.kraken.dto.trade.KrakenOpenPosition;
import com.xeiam.xchange.kraken.dto.trade.KrakenOrder;
import com.xeiam.xchange.kraken.dto.trade.KrakenOrderResponse;
import com.xeiam.xchange.kraken.dto.trade.KrakenStandardOrder;
import com.xeiam.xchange.kraken.dto.trade.KrakenStandardOrder.KrakenOrderBuilder;
import com.xeiam.xchange.kraken.dto.trade.KrakenTrade;
import com.xeiam.xchange.kraken.dto.trade.KrakenType;
import com.xeiam.xchange.kraken.dto.trade.results.KrakenCancelOrderResult;
import com.xeiam.xchange.kraken.dto.trade.results.KrakenCancelOrderResult.KrakenCancelOrderResponse;
import com.xeiam.xchange.kraken.dto.trade.results.KrakenClosedOrdersResult;
import com.xeiam.xchange.kraken.dto.trade.results.KrakenOpenOrdersResult;
import com.xeiam.xchange.kraken.dto.trade.results.KrakenOpenPositionsResult;
import com.xeiam.xchange.kraken.dto.trade.results.KrakenOrderResult;
import com.xeiam.xchange.kraken.dto.trade.results.KrakenQueryOrderResult;
import com.xeiam.xchange.kraken.dto.trade.results.KrakenQueryTradeResult;
import com.xeiam.xchange.kraken.dto.trade.results.KrakenTradeHistoryResult;
public class KrakenTradeServiceRaw extends KrakenBasePollingService {
public KrakenTradeServiceRaw(ExchangeSpecification exchangeSpecification) {
super(KrakenAuthenticated.class, exchangeSpecification);
}
public Map getKrakenOpenOrders() throws IOException {
return getKrakenOpenOrders(false, null);
}
public Map getKrakenOpenOrders(boolean includeTrades, String userRef) throws IOException {
KrakenOpenOrdersResult result = kraken.openOrders(includeTrades, userRef, exchangeSpecification.getApiKey(), signatureCreator, nextNonce());
return checkResult(result).getOrders();
}
public Map getKrakenClosedOrders() throws IOException {
return getKrakenClosedOrders(false, null, null, null, null, null);
}
public Map getKrakenClosedOrders(boolean includeTrades, String userRef, String start, String end, String offset, String closeTime) throws IOException {
KrakenClosedOrdersResult result = kraken.closedOrders(includeTrades, userRef, start, end, offset, closeTime, exchangeSpecification.getApiKey(), signatureCreator, nextNonce());
return checkResult(result).getOrders();
}
public Map queryKrakenOrders(String... transactionIds) throws IOException {
return queryKrakenOrders(false, null, transactionIds);
}
public Map queryKrakenOrders(boolean includeTrades, String userRef, String... transactionIds) throws IOException {
KrakenQueryOrderResult result = kraken.queryOrders(includeTrades, userRef, createDelimitedString(transactionIds), exchangeSpecification.getApiKey(), signatureCreator, nextNonce());
return checkResult(result);
}
public Map getKrakenTradeHistory() throws IOException {
return getKrakenTradeHistory(null, false, null, null, null);
}
public Map getKrakenTradeHistory(String type, boolean includeTrades, String start, String end, String offset) throws IOException {
KrakenTradeHistoryResult result = kraken.tradeHistory(type, includeTrades, start, end, offset, exchangeSpecification.getApiKey(), signatureCreator, nextNonce());
return checkResult(result).getTrades();
}
public Map queryKrakenTrades(String... transactionIds) throws IOException {
return queryKrakenTrades(false, transactionIds);
}
public Map queryKrakenTrades(boolean includeTrades, String... transactionIds) throws IOException {
KrakenQueryTradeResult result = kraken.queryTrades(includeTrades, createDelimitedString(transactionIds), exchangeSpecification.getApiKey(), signatureCreator, nextNonce());
return checkResult(result);
}
public Map getOpenPositions() throws IOException {
return getOpenPositions(false);
}
public Map getOpenPositions(boolean doCalcs, String... transactionIds) throws IOException {
KrakenOpenPositionsResult result = kraken.openPositions(createDelimitedString(transactionIds), doCalcs, exchangeSpecification.getApiKey(), signatureCreator, nextNonce());
return checkResult(result);
}
public KrakenOrderResponse placeKrakenMarketOrder(MarketOrder marketOrder) throws IOException {
KrakenType type = KrakenType.fromOrderType(marketOrder.getType());
KrakenOrderBuilder orderBuilder = KrakenStandardOrder.getMarketOrderBuilder(marketOrder.getCurrencyPair(), type, marketOrder.getTradableAmount());
return placeKrakentOrder(orderBuilder.buildOrder());
}
public KrakenOrderResponse placeKrakenLimitOrder(LimitOrder limitOrder) throws IOException {
KrakenType type = KrakenType.fromOrderType(limitOrder.getType());
KrakenOrderBuilder orderBuilder = KrakenStandardOrder.getLimitOrderBuilder(limitOrder.getCurrencyPair(), type, limitOrder.getLimitPrice().toString(), limitOrder.getTradableAmount());
return placeKrakentOrder(orderBuilder.buildOrder());
}
public KrakenOrderResponse placeKrakentOrder(KrakenStandardOrder order) throws IOException {
KrakenOrderResult result = null;
if (!order.isValidateOnly()) {
result =
kraken.addOrder(createKrakenCurrencyPair(order.getAssetPair()), order.getType().toString(), order.getOrderType().toString(), order.getPrice(), order.getSecondaryPrice(), order.getVolume()
.toString(), order.getLeverage(), order.getPositionTxId(), delimitSet(order.getOrderFlags()), order.getStartTime(), order.getExpireTime(), order.getUserRefId(), order.getCloseOrder(),
exchangeSpecification.getApiKey(), signatureCreator, nextNonce());
}
else {
result =
kraken.addOrderValidateOnly(createKrakenCurrencyPair(order.getAssetPair()), order.getType().toString(), order.getOrderType().toString(), order.getPrice(), order.getSecondaryPrice(), order
.getVolume().toString(), order.getLeverage(), order.getPositionTxId(), delimitSet(order.getOrderFlags()), order.getStartTime(), order.getExpireTime(), order.getUserRefId(), true, order
.getCloseOrder(), exchangeSpecification.getApiKey(), signatureCreator, nextNonce());
}
return checkResult(result);
}
public KrakenCancelOrderResponse cancelKrakenOrder(String orderId) throws IOException {
KrakenCancelOrderResult result = kraken.cancelOrder(exchangeSpecification.getApiKey(), signatureCreator, nextNonce(), orderId);
return checkResult(result);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy