Interface TradeService

All Superinterfaces:
BaseService
All Known Implementing Classes:
AscendexTradeService, BankeraTradeService, BiboxTradeService, BinanceTradeService, BitbayTradeService, BitbayTradeService, BitcoindeTradeService, BitcoindeTradeService, BitcointoyouTradeService, BitfinexTradeService, BitflyerTradeService, BithumbTradeService, BitmexTradeService, BitsoTradeService, BitstampTradeService, BittrexTradeService, BityTradeService, BitZTradeService, Bl3pTradeService, BleutradeTradeService, BlockchainTradeService, BTCMarketsTradeService, BTCTurkTradeService, BybitTradeService, CCEXTradeService, CexIOTradeService, CoinbaseProTradeService, CoinbaseTradeService, CoinbaseTradeService, CoindealTradeService, CoindirectTradeService, CoinEggTradeService, CoinfloorTradeService, CoingiTradeService, CoinjarTradeService, CoinmateTradeService, CoinoneTradeService, CryptowatchTradeService, DeribitTradeService, DVChainTradeService, EnigmaTradeService, ExmoTradeService, FtxTradeService, GateioTradeService, GeminiTradeService, GlobitexTradeService, HitbtcTradeService, HuobiTradeService, IdexTradeService, IndependentReserveTradeService, ItBitTradeService, KrakenFuturesTradeService, KrakenTradeService, KucoinTradeService, KunaTradeService, LatokenTradeService, LgoTradeService, LivecoinTradeService, LunoTradeService, LykkeTradeService, MercadoBitcoinTradeService, MEXCTradeService, OkCoinFuturesTradeService, OkCoinTradeService, OkexTradeService, OkexTradeService, PaymiumTradeService, PoloniexTradeService, QuoineTradeService, RippleTradeService, SimulatedTradeService, TheRockTradeService, TradeOgreTradeService, UpbitTradeService, VaultoroTradeService, YoBitTradeService, YoBitTradeServiceRaw

public interface TradeService extends BaseService
Interface to provide the following to Exchange:
  • Retrieve the user's open orders on the exchange
  • Cancel user's open orders on the exchange
  • Place market orders on the exchange
  • Place limit orders on the exchange
  • Change limit orders on the exchange

The implementation of this service is expected to be based on a client polling mechanism of some kind

  • Method Details

    • getOpenOrders

      default OpenOrders getOpenOrders() throws IOException
      Gets the open orders
      Returns:
      the open orders, null if some sort of error occurred. Implementers should log the error.
      Throws:
      ExchangeException - - Indication that the exchange reported some kind of error with the request or response
      NotAvailableFromExchangeException - - Indication that the exchange does not support the requested function or data
      NotYetImplementedForExchangeException - - Indication that the exchange supports the requested function or data, but it has not yet been implemented
      IOException - - Indication that a networking error occurred while fetching JSON data
    • getOpenOrders

      default OpenOrders getOpenOrders(OpenOrdersParams params) throws IOException
      Gets the open orders
      Parameters:
      params - The parameters describing the filter. Note that OpenOrdersParams is an empty interface. Exchanges should implement its own params object. Params should be create with createOpenOrdersParams().
      Returns:
      the open orders, null if some sort of error occurred. Implementers should log the error.
      Throws:
      ExchangeException - - Indication that the exchange reported some kind of error with the request or response
      NotAvailableFromExchangeException - - Indication that the exchange does not support the requested function or data
      NotYetImplementedForExchangeException - - Indication that the exchange supports the requested function or data, but it has not yet been implemented
      IOException - - Indication that a networking error occurred while fetching JSON data
    • getRequiredCancelOrderParamClasses

      default Class[] getRequiredCancelOrderParamClasses()
      Returns required cancel order parameter as classes

      Different trading services requires different parameters for order cancellation. To provide generic operation of the trade service interface. This method returns Class of the parameter objects as an array. This class information can be utilized by the caller of cancelOrder(CancelOrderParams) to create instances of the required parameters such as CancelOrderByIdParams, CancelOrderByInstrument etc...

      Returns:
      Class types for the required parameter classes. Default implementation returns an array with a single CancelOrderByIdParams element
    • getOpenPositions

      default OpenPositions getOpenPositions() throws IOException
      Get all openPositions of the exchange
      Throws:
      IOException
    • placeMarketOrder

      default String placeMarketOrder(MarketOrder marketOrder) throws IOException
      Place a market order

      If your orders amount does to meet the restrictions dictated by InstrumentMetaData then the exchange will reject your order. Use OrderValuesHelper to validate and / or adjust it while you'r building an order.

      Parameters:
      marketOrder -
      Returns:
      the order ID
      Throws:
      ExchangeException - - Indication that the exchange reported some kind of error with the request or response
      NotAvailableFromExchangeException - - Indication that the exchange does not support the requested function or data
      NotYetImplementedForExchangeException - - Indication that the exchange supports the requested function or data, but it has not yet been implemented
      IOException - - Indication that a networking error occurred while fetching JSON data
      See Also:
    • placeLimitOrder

      default String placeLimitOrder(LimitOrder limitOrder) throws IOException
      Place a limit order

      If your orders amount or limit price does to meet the restrictions dictated by InstrumentMetaData then the exchange will reject your order. Use OrderValuesHelper to validate and / or adjust those values while you'r building an order.

      Parameters:
      limitOrder -
      Returns:
      the order ID
      Throws:
      ExchangeException - - Indication that the exchange reported some kind of error with the request or response
      NotAvailableFromExchangeException - - Indication that the exchange does not support the requested function or data
      NotYetImplementedForExchangeException - - Indication that the exchange supports the requested function or data, but it has not yet been implemented
      IOException - - Indication that a networking error occurred while fetching JSON data
      See Also:
    • placeStopOrder

      default String placeStopOrder(StopOrder stopOrder) throws IOException
      Place a stop order

      If your orders amount or spot price does to meet the restrictions dictated by InstrumentMetaData then the exchange will reject your order. Use OrderValuesHelper to validate and / or adjust those values while you'r building an order.

      Parameters:
      stopOrder -
      Returns:
      the order ID
      Throws:
      ExchangeException - - Indication that the exchange reported some kind of error with the request or response
      NotAvailableFromExchangeException - - Indication that the exchange does not support the requested function or data
      NotYetImplementedForExchangeException - - Indication that the exchange supports the requested function or data, but it has not yet been implemented
      IOException - - Indication that a networking error occurred while fetching JSON data
      See Also:
    • changeOrder

      default String changeOrder(LimitOrder limitOrder) throws IOException
      Modify or cancel/replace an existing limit order
      Parameters:
      limitOrder - Order's data to change
      Returns:
      Order ID
      Throws:
      ExchangeException - Indication that the exchange reported some kind of error with the request or response
      NotAvailableFromExchangeException - Indication that the exchange does not support the requested function or data
      NotYetImplementedForExchangeException - Indication that the exchange supports the requested function or data, but it has not yet been implemented
      IOException - Indication that a networking error occurred while fetching JSON data
    • cancelOrder

      default boolean cancelOrder(String orderId) throws IOException
      cancels order with matching orderId (conveniance method, typical just delegate to cancelOrder(CancelOrderByIdParams))
      Parameters:
      orderId -
      Returns:
      true if order was successfully cancelled, false otherwise.
      Throws:
      ExchangeException - - Indication that the exchange reported some kind of error with the request or response
      NotAvailableFromExchangeException - - Indication that the exchange does not support the requested function or data
      NotYetImplementedForExchangeException - - Indication that the exchange supports the requested function or data, but it has not yet been implemented
      IOException - - Indication that a networking error occurred while fetching JSON data
    • cancelOrder

      default boolean cancelOrder(CancelOrderParams orderParams) throws IOException
      cancels order with matching orderParams
      Parameters:
      orderParams -
      Returns:
      true if order was successfully cancelled, false otherwise.
      Throws:
      ExchangeException - - Indication that the exchange reported some kind of error with the request or response
      NotAvailableFromExchangeException - - Indication that the exchange does not support the requested function or data
      NotYetImplementedForExchangeException - - Indication that the exchange supports the requested function or data, but it has not yet been implemented
      IOException - - Indication that a networking error occurred while fetching JSON data
    • cancelAllOrders

      default Collection<String> cancelAllOrders(CancelAllOrders orderParams) throws IOException
      Throws:
      IOException
    • getTradeHistory

      default UserTrades getTradeHistory(TradeHistoryParams params) throws IOException
      Fetch the history of user trades.

      If you are calling this method for single exchange, known at the development time, you may pass an object of specific *TradeHistoryParam class that is nested it that exchange's trade service.

      If, however, you are fetching user trade history from many exchanges using the same code, you will find useful to create the parameter object with createTradeHistoryParams() and check which parameters are required or supported using instanceof operator. See subinterfaces of TradeHistoryParams. Note that whether an interface is required or supported will vary from exchange to exchange and it's described only through the javadoc.

      There is also implementation of all the common interfaces, TradeHistoryParamsAll , that, with all properties set non-null, should work with any exchange.

      Some exchanges allow extra parameters, not covered by any common interface. To access them, you will have to use the object returned by createTradeHistoryParams() and cast it to the exchange-specific type.

      Parameters:
      params - The parameters describing the filter. Note that TradeHistoryParams is an empty interface. Exact set of interfaces that are required or supported by this method is described by the type of object returned from createTradeHistoryParams() and the javadoc of the method.
      Returns:
      UserTrades as returned by the exchange API
      Throws:
      ExchangeException - - Indication that the exchange reported some kind of error with the request or response
      NotAvailableFromExchangeException - - Indication that the exchange does not support the requested function or data
      NotYetImplementedForExchangeException - - Indication that the exchange supports the requested function or data, but it has not yet been implemented
      IOException - - Indication that a networking error occurred while fetching JSON data
      See Also:
    • createTradeHistoryParams

      default TradeHistoryParams createTradeHistoryParams()
      Create TradeHistoryParams object specific to this exchange. Object created by this method may be used to discover supported and required getTradeHistory(TradeHistoryParams) parameters and should be passed only to the method in the same class as the createTradeHistoryParams that created the object.
    • createOpenOrdersParams

      default OpenOrdersParams createOpenOrdersParams()
      Create OpenOrdersParams object specific to this exchange. Object created by this method may be used to discover supported and required getOpenOrders(OpenOrdersParams) parameters and should be passed only to the method in the same class as the createOpenOrdersParams that created the object.
    • verifyOrder

      default void verifyOrder(LimitOrder limitOrder)
      Verify the order against the exchange meta data. Most implementations will require that Exchange.remoteInit() be called before this method
    • verifyOrder

      default void verifyOrder(MarketOrder marketOrder)
      Verify the order against the exchange meta data. Most implementations will require that Exchange.remoteInit() be called before this method
    • getOrder

      default Collection<Order> getOrder(String... orderIds) throws IOException
      get's the latest order form the order book that with matching orderId
      Returns:
      the order as it is on the exchange.
      Throws:
      ExchangeException - - Indication that the exchange reported some kind of error with the request or response
      NotAvailableFromExchangeException - - Indication that the exchange does not support the requested function or data
      NotYetImplementedForExchangeException - - Indication that the exchange supports the requested function or data, but it has not yet been implemented
      IOException - - Indication that a networking error occurred while fetching JSON data
    • toOrderQueryParams

      static OrderQueryParams[] toOrderQueryParams(String... orderIds)
    • toOrderIds

      static String[] toOrderIds(OrderQueryParams... orderQueryParams)
    • getRequiredOrderQueryParamClass

      default Class getRequiredOrderQueryParamClass()
      Returns required get order parameter as classes

      Different trading services requires different parameters for order querying. To provide generic operation of the trade service interface, This method returns Class of the parameter objects as an array. This class information can be utilized by the caller of getOrder(OrderQueryParams...) to create instances of the required parameter such as OrderQueryParamCurrencyPair, OrderQueryParamInstrument etc...

      Returns:
      Class type for the required parameter class. Default implementation returns an instance of OrderQueryParams element
    • getOrder

      default Collection<Order> getOrder(OrderQueryParams... orderQueryParams) throws IOException
      get's the latest order form the order book that with matching orderQueryParams
      Returns:
      the order as it is on the exchange.
      Throws:
      ExchangeException - - Indication that the exchange reported some kind of error with the request or response
      NotAvailableFromExchangeException - - Indication that the exchange does not support the requested function or data
      NotYetImplementedForExchangeException - - Indication that the exchange supports the requested function or data, but it has not yet been implemented
      IOException - - Indication that a networking error occurred while fetching JSON data