All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.knowm.xchange.coinsuper.service.CoinsuperTradeService Maven / Gradle / Ivy

package org.knowm.xchange.coinsuper.service;

import java.io.IOException;
import java.util.*;
import org.knowm.xchange.Exchange;
import org.knowm.xchange.coinsuper.CoinsuperAdapters;
import org.knowm.xchange.coinsuper.dto.CoinsuperResponse;
import org.knowm.xchange.coinsuper.dto.trade.CoinsuperOrder;
import org.knowm.xchange.coinsuper.dto.trade.OrderDetail;
import org.knowm.xchange.coinsuper.dto.trade.OrderList;
import org.knowm.xchange.dto.Order;
import org.knowm.xchange.dto.trade.LimitOrder;
import org.knowm.xchange.dto.trade.MarketOrder;
import org.knowm.xchange.dto.trade.OpenOrders;
import org.knowm.xchange.dto.trade.UserTrades;
import org.knowm.xchange.exceptions.ExchangeException;
import org.knowm.xchange.service.trade.TradeService;
import org.knowm.xchange.service.trade.params.CancelOrderByCurrencyPair;
import org.knowm.xchange.service.trade.params.CancelOrderByIdParams;
import org.knowm.xchange.service.trade.params.CancelOrderParams;
import org.knowm.xchange.service.trade.params.TradeHistoryParams;
import org.knowm.xchange.service.trade.params.orders.DefaultOpenOrdersParamCurrencyPair;
import org.knowm.xchange.service.trade.params.orders.OpenOrdersParams;

public class CoinsuperTradeService extends CoinsuperTradeServiceRaw implements TradeService {
  public CoinsuperTradeService(Exchange exchange) {
    super(exchange);
  }

  @Override
  public OpenOrders getOpenOrders() throws IOException {
    return getOpenOrders(createOpenOrdersParams());
  }

  @Override
  public OpenOrders getOpenOrders(OpenOrdersParams params) throws ExchangeException, IOException {
    List limitOrders = new ArrayList<>();
    Map parameters = new HashMap();

    CoinsuperResponse> openOrders = orderOpenList(parameters);

    for (String orderNo : openOrders.getData().getResult()) {
      limitOrders.add(new LimitOrder(null, null, null, orderNo, new Date(), null));
    }

    return new OpenOrders(limitOrders);
  }

  @Override
  public String placeMarketOrder(MarketOrder marketOrder) throws IOException {

    Map parameters = new HashMap();
    parameters.put("side", marketOrder.getType().toString());
    parameters.put("orderType", "MKT");
    parameters.put("symbol", marketOrder.getCurrencyPair().toString());
    parameters.put("priceLimit", "0");
    parameters.put("amount", marketOrder.getOriginalAmount().toString());
    parameters.put("quantity", "0");

    CoinsuperResponse coinsuperCreateOrder = createOrder(parameters);
    if (coinsuperCreateOrder.getCode() == 1000) {
      return coinsuperCreateOrder.getData().getResult().getOrderNo();
    } else {
      return "false";
    }
  }

  @Override
  public String placeLimitOrder(LimitOrder limitOrder) throws IOException {

    Map parameters = new HashMap();
    parameters.put("side", limitOrder.getType().toString());
    parameters.put("orderType", "LMT");
    parameters.put("symbol", limitOrder.getCurrencyPair().toString());
    parameters.put("priceLimit", limitOrder.getLimitPrice().toString());
    parameters.put("amount", "0");
    parameters.put("quantity", limitOrder.getOriginalAmount().toString());

    CoinsuperResponse coinsuperCreateOrder = createOrder(parameters);
    if (coinsuperCreateOrder.getCode() == 1000) {
      return coinsuperCreateOrder.getData().getResult().getOrderNo();
    } else {
      return "false";
    }
  }

  @Override
  public boolean cancelOrder(String orderId) throws IOException {
    Map parameters = new HashMap();
    parameters.put("orderNo", orderId);

    return cancelCoinsuperOrder(parameters);
  }

  @Override
  public boolean cancelOrder(CancelOrderParams orderParams) throws IOException {
    if (!(orderParams instanceof CancelOrderByCurrencyPair)
        && !(orderParams instanceof CancelOrderByIdParams)) {
      throw new ExchangeException(
          "You need to provide the currency pair and the order id to cancel an order.");
    }
    // CancelOrderByCurrencyPair currencyPair = (CancelOrderByCurrencyPair) orderParams;
    CancelOrderByIdParams orderIdParam = (CancelOrderByIdParams) orderParams;

    //	    String orderId =
    //	        super.cancelOrder(
    //	            CoinsuperAdapters.toMarket(currencyPair.getCurrencyPair()),
    // orderIdParam.getOrderId());

    Map parameters = new HashMap();
    parameters.put("orderNo", orderIdParam.getOrderId());

    return cancelCoinsuperOrder(parameters);
  }

  private int getLimit(Object... args) {
    int limitDepth = 0;
    if (args != null && args.length == 1) {
      Object arg0 = args[0];
      if (!(arg0 instanceof Integer)) {
        throw new ExchangeException("Argument 0 must be an Integer!");
      } else {
        limitDepth = (Integer) arg0;
      }
    }
    return limitDepth;
  }

  @Override
  public OpenOrdersParams createOpenOrdersParams() {
    return new DefaultOpenOrdersParamCurrencyPair();
  }

  @Override
  public Collection getOrder(String... orderIds) throws IOException {

    Collection orders = new ArrayList<>(orderIds.length);

    Map parameters = new HashMap();
    StringBuilder builder = new StringBuilder();
    int k = 1;
    for (String orderId : orderIds) {
      builder.append(orderId);
      if (k > orderIds.length) builder.append(",");
    }
    parameters.put("orderNoList", builder.toString());
    // without transation
    CoinsuperResponse> ordersList = orderList(parameters);
    for (OrderList orderList : ordersList.getData().getResult()) {
      System.out.println(orderList.getOrderNo());
      System.out.println(orderList.getSymbol());

      orders.add(CoinsuperAdapters.adaptOrder(Long.toString(orderList.getOrderNo()), orderList));
    }

    return orders;
  }

  /** Required parameter types: {@link TradeHistoryParamPaging#getPageLength()} */
  @Override
  public UserTrades getTradeHistory(TradeHistoryParams params) throws IOException {

    CoinsuperTradeHistoryParams coinsuperTradeHistoryParams = (CoinsuperTradeHistoryParams) params;
    Map parameters = new HashMap();
    parameters.put("orderNoList", coinsuperTradeHistoryParams.getOrderNoList());

    CoinsuperResponse> orderDetails = orderDetails(parameters);
    // System.out.println(data);

    // CoinsuperUserTransaction[] coinsuperUserTransaction = null;

    return CoinsuperAdapters.adaptTradeHistory(orderDetails);
  }

  @Override
  public TradeHistoryParams createTradeHistoryParams() {

    return new CoinsuperTradeHistoryParams(null, null);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy