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

org.knowm.xchange.examples.bithumb.trade.BithumbTradeDemo Maven / Gradle / Ivy

package org.knowm.xchange.examples.bithumb.trade;

import java.io.IOException;
import java.math.BigDecimal;
import org.knowm.xchange.Exchange;
import org.knowm.xchange.bithumb.BithumbException;
import org.knowm.xchange.bithumb.dto.account.BithumbOrder;
import org.knowm.xchange.bithumb.service.BithumbTradeServiceRaw;
import org.knowm.xchange.currency.Currency;
import org.knowm.xchange.currency.CurrencyPair;
import org.knowm.xchange.dto.Order;
import org.knowm.xchange.dto.trade.LimitOrder;
import org.knowm.xchange.examples.bithumb.BithumbDemoUtils;
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.DefaultTradeHistoryParamCurrencyPair;
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;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class BithumbTradeDemo {

  private static final Logger log = LoggerFactory.getLogger(BithumbTradeDemo.class);

  public static final CurrencyPair CURRENCY_PAIR = new CurrencyPair(Currency.XRP, Currency.KRW);

  public static void main(String[] args) throws IOException, InterruptedException {

    final Exchange exchange = BithumbDemoUtils.createExchange();
    final TradeService tradeService = exchange.getTradeService();

    generic(tradeService);
    raw((BithumbTradeServiceRaw) tradeService);
  }

  public interface CancelOrderByPairAndIdParams
      extends CancelOrderByIdParams, CancelOrderByCurrencyPair {}

  private static void generic(TradeService tradeService) throws IOException, InterruptedException {

    log.debug("{}", "----------GENERIC----------");

    final OpenOrdersParams openOrders = new DefaultOpenOrdersParamCurrencyPair(CURRENCY_PAIR);
    try {
      log.debug("{}", tradeService.getOpenOrders(openOrders));
    } catch (ExchangeException e) {
      log.debug("", e);
    }

    final TradeHistoryParams tradeHistoryParams =
        new DefaultTradeHistoryParamCurrencyPair(CURRENCY_PAIR);
    log.debug("{}", tradeService.getTradeHistory(tradeHistoryParams));

    final LimitOrder limitOrderBuy =
        new LimitOrder.Builder(Order.OrderType.BID, CURRENCY_PAIR)
            .originalAmount(BigDecimal.valueOf(10))
            .limitPrice(BigDecimal.valueOf(100))
            .build();
    log.debug("{}", tradeService.placeLimitOrder(limitOrderBuy));

    Thread.sleep(3000); // wait for order to propagate

    final LimitOrder limitOrderSell =
        new LimitOrder.Builder(Order.OrderType.ASK, CURRENCY_PAIR)
            .originalAmount(BigDecimal.valueOf(10))
            .limitPrice(BigDecimal.valueOf(600))
            .build();
    log.debug("{}", tradeService.placeLimitOrder(limitOrderSell));

    Thread.sleep(3000); // wait for order to propagate

    tradeService.getOpenOrders(openOrders).getOpenOrders().stream()
        .map(Order::getId)
        .map(
            orderId ->
                new CancelOrderByPairAndIdParams() {
                  @Override
                  public String getOrderId() {
                    return orderId;
                  }

                  @Override
                  public CurrencyPair getCurrencyPair() {
                    return CURRENCY_PAIR;
                  }
                })
        .forEach(
            param -> {
              try {
                log.debug("{}", tradeService.cancelOrder(param));
              } catch (IOException ignored) {
              }
            });
    //        log.debug("{}",tradeService.placeMarketOrder(new MarketOrder(Order.OrderType.ASK,
    // BigDecimal.valueOf(10), CURRENCY_PAIR)));
  }

  private static void raw(BithumbTradeServiceRaw tradeServiceRaw)
      throws IOException, InterruptedException {

    log.debug("{}", "----------RAW----------");
    final OpenOrdersParams openOrders = new DefaultOpenOrdersParamCurrencyPair(CURRENCY_PAIR);
    try {
      log.debug("{}", tradeServiceRaw.getBithumbOrders(CURRENCY_PAIR));
    } catch (BithumbException e) {
      log.debug("", e);
    }

    log.debug("{}", tradeServiceRaw.getBithumbUserTransactions(CURRENCY_PAIR));

    final LimitOrder limitOrderBuy =
        new LimitOrder.Builder(Order.OrderType.BID, CURRENCY_PAIR)
            .originalAmount(BigDecimal.valueOf(10))
            .limitPrice(BigDecimal.valueOf(100))
            .build();
    log.debug("{}", tradeServiceRaw.placeBithumbLimitOrder(limitOrderBuy));

    Thread.sleep(3000); // wait for order to propagate

    final LimitOrder limitOrderSell =
        new LimitOrder.Builder(Order.OrderType.ASK, CURRENCY_PAIR)
            .originalAmount(BigDecimal.valueOf(10))
            .limitPrice(BigDecimal.valueOf(600))
            .build();
    log.debug("{}", tradeServiceRaw.placeBithumbLimitOrder(limitOrderSell));

    Thread.sleep(3000); // wait for order to propagate

    tradeServiceRaw.getBithumbOrders(CURRENCY_PAIR).getData().stream()
        .map(BithumbOrder::getOrderId)
        .forEach(
            orderId -> {
              try {
                log.debug("{}", tradeServiceRaw.cancelBithumbOrder(orderId, CURRENCY_PAIR));
              } catch (IOException ignored) {
              }
            });
    //        log.debug("{}", tradeServiceRaw.placeBithumbMarketOrder(new
    // MarketOrder(Order.OrderType.ASK, BigDecimal.valueOf(10), CURRENCY_PAIR)));
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy