class CoinEggTradeService extends CoinEggTradeServiceRaw implements TradeService {

  public CoinEggTradeService(Exchange exchange) {
    super(exchange);
  }

  @Override
  public String placeLimitOrder(LimitOrder limitOrder) throws IOException {<FILL_FUNCTION_BODY>}

  @Override
  public boolean cancelOrder(CancelOrderParams orderParams) throws IOException {

    if ((orderParams instanceof CancelOrderByIdParams)
        && (orderParams instanceof CancelOrderByCurrencyPair)) {

      String id = ((CancelOrderByIdParams) orderParams).getOrderId();
      String coin =
          ((CancelOrderByCurrencyPair) orderParams)
              .getCurrencyPair()
              .base
              .getCurrencyCode()
              .toLowerCase();

      return CoinEggAdapters.adaptTradeCancel(getCoinEggTradeCancel(id, coin));
    }

    throw new ExchangeException("Incorrect CancelOrderParams!");
  }

  @Override
  public TradeHistoryParams createTradeHistoryParams() {
    return new TradeHistoryParamsAll();
  }

  @Override
  public UserTrades getTradeHistory(TradeHistoryParams params)
      throws IOException, ExchangeException {

    if ((params instanceof TradeHistoryParamCurrency)
        && (params instanceof TradeHistoryParamTransactionId)) {

      String tradeID = ((TradeHistoryParamTransactionId) params).getTransactionId();
      String coin =
          ((TradeHistoryParamCurrency) params).getCurrency().getCurrencyCode().toLowerCase();

      return CoinEggAdapters.adaptTradeHistory(getCoinEggTradeView(tradeID, coin));
    }

    throw new ExchangeException("Incorrect TradeHistoryParams!");
  }

  @Override
  public String placeMarketOrder(MarketOrder marketOrder) throws IOException {
    throw new NotAvailableFromExchangeException();
  }

  @Override
  public boolean cancelOrder(String orderId) throws IOException {
    throw new NotAvailableFromExchangeException();
  }

  @Override
  public void verifyOrder(MarketOrder marketOrder) {
    throw new NotAvailableFromExchangeException();
  }
}


    BigDecimal amount = limitOrder.getOriginalAmount();
    BigDecimal price = limitOrder.getAveragePrice();
    String type = limitOrder.getType() == OrderType.ASK ? "buy" : "sell";
    String coin = limitOrder.getCurrencyPair().base.getCurrencyCode().toLowerCase();

    return CoinEggAdapters.adaptTradeAdd(getCoinEggTradeAdd(amount, price, type, coin));
  
<methods>public void <init>(org.knowm.xchange.Exchange) ,public org.knowm.xchange.coinegg.dto.trade.CoinEggTradeAdd getCoinEggTradeAdd(java.math.BigDecimal, java.math.BigDecimal, java.lang.String, java.lang.String) throws java.io.IOException,public org.knowm.xchange.coinegg.dto.trade.CoinEggTradeCancel getCoinEggTradeCancel(java.lang.String, java.lang.String) throws java.io.IOException,public org.knowm.xchange.coinegg.dto.trade.CoinEggTradeView getCoinEggTradeView(java.lang.String, java.lang.String) throws java.io.IOException<variables>private java.lang.String apiKey,private org.knowm.xchange.coinegg.CoinEggAuthenticated coinEggAuthenticated,private SynchronizedValueFactory<java.lang.Long> nonceFactory,private org.knowm.xchange.coinegg.service.CoinEggDigest signer,private java.lang.String tradePassword