MFClientBase (3.14.0 600 API)
Date: 2025-11-24

com.marketfactory.api

## Class MFClientBase

- java.lang.Object
- - com.marketfactory.api.MFClientBase

- Direct Known Subclasses:
    MFAdmin, MFClient, MFMarketMaker

      public abstract class MFClientBase
      extends java.lang.Object

  An API client, which processes a single network connection. There may be more than one client instance, one for each network connection. A client dispatches callbacks on a _handler interface which the client implements. @see MFHandler.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `MFClientBase.OrderArgs`
    `class` | `MFClientBase.PingTime`
    `static class` | `MFClientBase.RiskLimit` Admin interface: group limit, optionally for a specific feed and market.
    `static class` | `MFClientBase.RiskMarketPosition` Admin interface: Use this if interested in market position rather than RiskUsage's net open position.
    `static class` | `MFClientBase.RiskUsage` Admin interface: user state.
    `class` | `MFClientBase.TimeStats`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected MFClientBase.RiskLimit[]` | `_riskLimits`
    `protected long` | `_riskTimestamp`
    `protected MFClientBase.RiskUsage[]` | `_riskUsages`
    `protected java.util.List<com.marketfactory.api.TradeLimitDataMessage>` | `_tradeLimitDataQueue`
    `protected java.util.Map<java.lang.String,java.lang.String[]>` | `_userGroupChains`
    `static int` | `FEED_ALL`
    `static int` | `FEED_NULL` Pair with marketID to reference individual currencies.
    `static int` | `MARKET_ALL`
    `static long` | `SETTL_DATE_CASH`
    `static long` | `SETTL_DATE_SUM`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected APIResult` | `allowClientsToConnect()` Admin interface: Call this method to allow monitored API clients to connect.
    `protected APIResult` | `cancelAll(int feedID, java.lang.String cxlID)` Cancel all the orders on a feed.
    `protected APIResult` | `cancelAll(java.lang.String cxlID)` Cancel all the orders, on all feeds.
    `protected APIResult` | `cancelOrder(java.lang.String cxlID, long orderID)` Cancel a previously placed order by internal 'orderID'.
    `protected APIResult` | `cancelOrder(java.lang.String cxlID, long orderID, java.lang.String clOrdID)` Cancel a previously placed order by providing both internal 'orderID' and clOrdID.
    `protected APIResult` | `cancelOrder(java.lang.String cxlID, java.lang.String clOrdID)` Cancel a previously placed order by client order id ('clOrdID').
    `APIResult` | `close()` Close the connection.
    `APIResult` | `connect()` Connect to the first available server with user credentials.
    `protected APIResult` | `connectOne(java.lang.String host, int port)`
    `void` | `enableDebugMetrics(boolean flag)`
    `APIFeed` | `getFeedByID(int id)` After a successful connection is established, you may access the server's list of _feeds, markets.
    `APIFeed` | `getFeedByName(java.lang.String name)` After a successful connection is established, you may access the server's list of _feeds, markets.
    `APIFeed[]` | `getFeeds()`
    `java.lang.String` | `getHostname()`
    `java.util.Queue<MFClientBase.PingTime>` | `getLastPingTimes()`
    `APIMarket` | `getMarketByID(APIFeed feed, int marketID)` After a successful connection is established, you may access the server's list of _feeds, markets.
    `APIMarket` | `getMarketByName(APIFeed feed, java.lang.String name)` After a successful connection is established, you may access the server's list of _feeds, markets.
    `int` | `getPort()`
    `protected MFClientBase.RiskLimit[]` | `getRiskLimits()` Admin interface: limits registered by server process.
    `protected MFClientBase.RiskMarketPosition[]` | `getRiskMarketPositions()` Admin interface:
    `protected long` | `getRiskTimestamp()`
    `protected MFClientBase.RiskUsage[]` | `getRiskUsage()`
    `int` | `getSequenceID(int feedID)` Get the last received sequenceID after successful subscription.
    `java.lang.String` | `getSignature()`
    `protected java.util.Map<java.lang.String,java.lang.String[]>` | `getUserGroupChains()`
    `protected void` | `handle(com.marketfactory.api.AcceptOrderMessage msg)`
    `protected void` | `handle(com.marketfactory.api.BatchesCompletedMessage msg)`
    `protected void` | `handle(com.marketfactory.api.BatchRegisterMessage msg)`
    `protected void` | `handle(com.marketfactory.api.BatchUnregisterMessage msg)`
    `protected void` | `handle(com.marketfactory.api.CancelAllOrderMessage msg)`
    `protected void` | `handle(com.marketfactory.api.CancelOrderMessage msg)`
    `protected void` | `handle(com.marketfactory.api.CancelQuoteMessage msg)`
    `protected void` | `handle(com.marketfactory.api.ClientConnectMessage msg)`
    `protected void` | `handle(com.marketfactory.api.ClientDisconnectMessage msg)`
    `protected void` | `handle(com.marketfactory.api.ConfigMessage msg)`
    `protected void` | `handle(com.marketfactory.api.ConnectResponseMessage msg)`
    `protected void` | `handle(com.marketfactory.api.DateRolloverMessage msg)`
    `protected void` | `handle(com.marketfactory.api.DropCopyMessage msg)`
    `protected void` | `handle(com.marketfactory.api.EventReportMessage msg)`
    `protected void` | `handle(com.marketfactory.api.HeartbeatMessage msg)`
    `protected void` | `handle(com.marketfactory.api.ImHereMessage msg)`
    `protected void` | `handle(com.marketfactory.api.InsertLogMessage msg)`
    `protected void` | `handle(com.marketfactory.api.JsonFromClient msg)`
    `protected void` | `handle(com.marketfactory.api.JsonFromServer msg)`
    `protected void` | `handle(com.marketfactory.api.LastSequenceIDMessage msg)`
    `protected void` | `handle(com.marketfactory.api.LockResponseMessage msg)`
    `protected void` | `handle(com.marketfactory.api.LockUserMessage msg)`
    `protected void` | `handle(com.marketfactory.api.MassQuoteAckMessage msg)`
    `protected void` | `handle(com.marketfactory.api.MassQuoteMessage msg)`
    `protected void` | `handle(com.marketfactory.api.MktDataMessage msg)`
    `protected void` | `handle(com.marketfactory.api.ModifyOrderMessage msg)`
    `protected void` | `handle(com.marketfactory.api.NewOrderMessage msg)`
    `protected void` | `handle(com.marketfactory.api.OrderCanceledMessage msg)`
    `protected void` | `handle(com.marketfactory.api.OrderCancelRejectedMessage msg)`
    `protected void` | `handle(com.marketfactory.api.OrderDoneMessage msg)`
    `protected void` | `handle(com.marketfactory.api.OrderReceivedMessage msg)`
    `protected void` | `handle(com.marketfactory.api.OrderRejectedMessage msg)`
    `protected void` | `handle(com.marketfactory.api.OrderSubmittedMessage msg)`
    `protected void` | `handle(com.marketfactory.api.OrderTimeoutMessage msg)`
    `protected void` | `handle(com.marketfactory.api.QuoteRequestMessage msg)`
    `protected void` | `handle(com.marketfactory.api.RejectOrderMessage msg)`
    `protected void` | `handle(com.marketfactory.api.RejectQuoteRequestMessage msg)`
    `protected void` | `handle(com.marketfactory.api.ReplayDoneMessage msg)`
    `protected void` | `handle(com.marketfactory.api.ReplayMessage msg)`
    `protected void` | `handle(com.marketfactory.api.RequestSnapshotMessage msg)`
    `protected void` | `handle(com.marketfactory.api.RiskResponseMessage msg)`
    `protected void` | `handle(com.marketfactory.api.RuThereMessage msg)`
    `protected void` | `handle(com.marketfactory.api.SubmitOrderMessage msg)`
    `protected void` | `handle(com.marketfactory.api.SubscribeMessage msg)`
    `protected void` | `handle(com.marketfactory.api.SubscriptionEventMessage msg)`
    `protected void` | `handle(com.marketfactory.api.TestMessage msg)`
    `protected void` | `handle(com.marketfactory.api.TradeCaptureAckMessage msg)`
    `protected void` | `handle(com.marketfactory.api.TradeCaptureMessage msg)`
    `protected void` | `handle(com.marketfactory.api.TradeLimitDataMessage msg)`
    `protected void` | `handle(com.marketfactory.api.UnsubscribeAllMessage msg)`
    `protected void` | `handle(com.marketfactory.api.UnsubscribeMessage msg)`
    `protected void` | `handle(com.marketfactory.api.VersionMessage msg)`
    `protected void` | `init(java.lang.String _username, java.lang.String _password, java.lang.String _hostname1, int _port1, java.lang.String _hostname2, int _port2)`
    `boolean` | `isConnected()`
    `boolean` | `isRunning()`
    `boolean` | `isStopRequested()`
    `APIResult` | `join()` Block until the client has exited the dispatch loop.
    `protected APIResult` | `lockUser(java.lang.String clRequestID, java.lang.String username, boolean locked)` Admin interface: Lock / unlock user accounts.
    `void` | `log(java.lang.String message)` Logs a debug message into the Whisperer server _log file.
    `void` | `log(java.lang.String message, LogLevel level)`
    `Pair<APIResult,java.lang.Long>` | `modifyOrder(java.lang.String clOrdID, java.lang.String clNewID, MFFloat amount, MFFloat price)` Submit modification without minAmount (kept for backward compatibility).
    `protected Pair<APIResult,java.lang.Long>` | `modifyOrder(java.lang.String clOrdID, java.lang.String clNewID, MFFloat amount, MFFloat minAmount, MFFloat price)` Submit modification to an existing order.
    `protected Pair<APIResult,java.lang.Long>` | `modifyOrder(java.lang.String clOrdID, java.lang.String clNewID, MFFloat amount, MFFloat minAmount, MFFloat price, java.util.List<KeyValue> parameters)`
    `protected void` | `onBatchComplete(int batchDefID, MFClientBase client)`
    `protected void` | `onConnect(MFClientBase client)`
    `protected void` | `onDateRollover(DateRollover dateRollover, MFClientBase client)`
    `protected void` | `onDisconnect(MFClientBase client)`
    `protected void` | `onDropCopy(DropCopy dropCopy, MFClientBase client)`
    `protected void` | `onEventReport(EventReport eventReport, MFClientBase client)`
    `protected void` | `onHeartbeat(Heartbeat heartbeat, MFClientBase client)`
    `protected void` | `onJsonFromServer(com.marketfactory.api.JsonFromServer msg, MFClientBase client)`
    `protected void` | `onLockResponse(LockResponse lockResponse, MFClientBase client)`
    `protected void` | `onMarketData(MarketView marketData, MFClientBase client)`
    `protected void` | `onMassQuoteAck(MassQuoteAck msg, MFClientBase client)`
    `protected void` | `onNewOrder(NewOrder msg, MFClientBase client)`
    `protected void` | `onOrderCanceled(OrderCanceled orderCanceled, MFClientBase client)`
    `protected void` | `onOrderCancelRejected(OrderCancelRejected orderCancelRejected, MFClientBase client)`
    `protected void` | `onOrderDone(OrderDone orderDone, MFClientBase client)`
    `protected void` | `onOrderReceived(OrderReceived orderReceived, MFClientBase client)`
    `protected void` | `onOrderRejected(OrderRejected orderRejected, MFClientBase client)`
    `protected void` | `onOrderSubmitted(OrderSubmitted orderSubmitted, MFClientBase client)`
    `protected void` | `onOrderTimeout(OrderTimeout msg, MFClientBase client)`
    `protected void` | `onQuoteRequest(QuoteRequest msg, MFClientBase client)`
    `protected void` | `onReplayDone(ReplayDone replayDone, MFClientBase client)`
    `protected void` | `onRiskResponse(RiskResponse riskResponse, MFClientBase client)`
    `protected void` | `onStart(MFClientBase client)`
    `protected void` | `onStop(MFClientBase client)`
    `protected void` | `onSubscriptionEvent(SubscriptionEvent subscriptionEvent, MFClientBase client)`
    `protected void` | `onTradeCapture(TradeCapture tradeCapture, MFClientBase client)`
    `protected void` | `onTradeCaptureAck(TradeCaptureAck msg, MFClientBase client)`
    `APIResult` | `processEvents(MFHandler _handler)` Process all pending events in the reactor, and return as soon as reads/writes have been flushed.
    `protected Pair<APIResult,java.lang.Integer>` | `registerMarketComb(int feedID, int[] marketIds)` Register for a given list of markets on a given feed.
    `APIResult` | `replay(int feedID, int fromSequenceID, int toSequenceID)` Request replay of order flow events in the range [fromSequenceID, toSequenceID=-1].
    `protected APIResult` | `requestSnapshot(int feedID, int marketID)` Request a market data snapshot for the feed and market ID.
    `protected void` | `resetAdminMembers()`
    `protected APIResult` | `run(java.lang.Object _handler, boolean loop)`
    `protected APIResult` | `send(IMessage msg)`
    `void` | `setDebug(boolean debug)` Deprecated. MF devs only - set the mode using a JVM arg - `Options.MF_DEV_LOG_DEBUG_MESSAGES_JVM_ARG`
    `protected APIResult` | `setRisk(java.lang.String clRequestID, boolean doReplace, MFClientBase.RiskUsage... usages)`
    `protected APIResult` | `setRisk(java.lang.String clRequestID, MFClientBase.RiskLimit... limits)` Admin interface: publish incremental set of limits.
    `protected APIResult` | `setRisk(java.lang.String clRequestID, MFClientBase.RiskLimit[] limits, MFClientBase.RiskUsage[] usages, boolean isSnapshot)` Admin interface: publish incremental/snapshot set of limits and usage.
    `protected APIResult` | `setRisk(java.lang.String clRequestID, MFClientBase.RiskLimit[] limits, MFClientBase.RiskUsage[] usages, boolean isSnapshot, boolean doReplace)`
    `protected APIResult` | `setRisk(java.lang.String clRequestID, MFClientBase.RiskUsage... usages)` Admin interface: publish incremental set of risk usage.
    `void` | `setStickySubscriptions(boolean sticky)` Enable/Disable sticky subscriptions.
    `void` | `setStickySubscriptions(boolean sticky, boolean clearSubscriptionsOnStop)`
    `void` | `setUseHeartbeat(boolean use)`
    `APIResult` | `stop()` Request to stop the event dispatch loop.
    `protected Pair<APIResult,java.lang.Long>` | `submitOrder(java.lang.String clOrdID, int feedID, int marketID, Side side, MFFloat amount, MFFloat price, MFFloat stopPrice, MFFloat maxShowAmt, MFFloat minAmount, OrderType ordType, TimeInForce tif)` Submit an order.
    `Pair<APIResult,java.lang.Long>` | `submitOrder(java.lang.String clOrdID, int feedID, int marketID, Side side, MFFloat amount, MFFloat price, MFFloat stopPrice, MFFloat maxShowAmt, MFFloat minAmount, OrderType ordType, TimeInForce tif, java.lang.String modelID, java.util.ArrayList<KeyValue> parameters)` Submit an order.
    `protected Pair<APIResult,java.lang.Long>` | `submitOrder(java.lang.String clOrdID, int feedID, int marketID, Side side, MFFloat amount, MFFloat price, MFFloat stopPrice, MFFloat maxShowAmt, OrderType ordType, TimeInForce tif)` Submit an order without minAmount (kept for backward compatibility).
    `protected Pair<APIResult,java.lang.Long>` | `submitOrder(java.lang.String clOrdID, int feedID, int marketID, Side side, MFFloat amount, MFFloat price, OrderType ordType, TimeInForce tif)` Submit an order.
    `protected Pair<APIResult,java.lang.Long>` | `submitOrder(java.lang.String clOrdID, int feedID, int marketID, Side side, MFFloat amount, MFFloat price, OrderType ordType, TimeInForce tif, MFClientBase.OrderArgs args)` Submit an order.
    `protected APIResult` | `subscribeAllMD()` Subscribe to all the market data feeds.
    `protected APIResult` | `subscribeMD(int feedID, int marketID)` Subscribe to market data updates for a specific feed.
    `protected APIResult` | `subscribeMD(int feedID, int marketID, java.lang.String clSubID)` Subscribe to market data updates for a specific feed.
    `protected APIResult` | `subscribeOF(int feedID)` Subscribe to trading for a specific feed.
    `protected APIResult` | `subscribeOF(int feedID, java.lang.String clSubID)` Subscribe to trading for a specific feed.
    `protected APIResult` | `subscribePricing(int feedID, java.lang.String clSubID)`
    `protected APIResult` | `subscribeTrading(int feedID, java.lang.String clSubID)`
    `void` | `test(APITest test)` Internal testing function.
    `protected APIResult` | `unregisterMarketComb(int batchDefID)` Unregister for a given list of markets on a given feed using the id provided in onBatchEvent callback.
    `protected APIResult` | `unsubscribeAll()` Unsubscribe all market data and trading subscriptions.
    `protected APIResult` | `unsubscribeMD(int feedID, int marketID)` Unsubscribe to market data updates for a specific feed.
    `protected APIResult` | `unsubscribeMD(int feedID, int marketID, java.lang.String clSubID)` Unsubscribe to market data updates for a specific feed.
    `protected APIResult` | `unsubscribeOF(int feedID)` Unsubscribe to trading for a specific feed.
    `protected APIResult` | `unsubscribeOF(int feedID, java.lang.String clSubID)` Unsubscribe to trading for a specific feed.
    `protected APIResult` | `unsubscribePricing(int feedID, java.lang.String clSubID)`
    `protected APIResult` | `unsubscribeTrading(int feedID, java.lang.String clSubID)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### _userGroupChains

          protected java.util.Map<java.lang.String,java.lang.String[]> _userGroupChains

    - #### _riskLimits

          protected MFClientBase.RiskLimit[] _riskLimits

    - #### _riskUsages

          protected MFClientBase.RiskUsage[] _riskUsages

    - #### _riskTimestamp

          protected long _riskTimestamp

    - #### _tradeLimitDataQueue

          protected java.util.List<com.marketfactory.api.TradeLimitDataMessage> _tradeLimitDataQueue

    - #### FEED_NULL

          public static final int FEED_NULL

      Pair with marketID to reference individual currencies.
      See Also:
        Constant Field Values

    - #### FEED_ALL

          public static final int FEED_ALL

      See Also:
        Constant Field Values

    - #### MARKET_ALL

          public static final int MARKET_ALL

      See Also:
        Constant Field Values

    - #### SETTL_DATE_SUM

          public static final long SETTL_DATE_SUM

      See Also:
        Constant Field Values

    - #### SETTL_DATE_CASH

          public static final long SETTL_DATE_CASH

      See Also:
        Constant Field Values

  - ### Method Detail

    - #### init

          protected void init(java.lang.String _username,
                              java.lang.String _password,
                              java.lang.String _hostname1,
                              int _port1,
                              java.lang.String _hostname2,
                              int _port2)

    - #### setUseHeartbeat

          public void setUseHeartbeat(boolean use)

    - #### setDebug

          public void setDebug(boolean debug)

      Deprecated. MF devs only - set the mode using a JVM arg - `Options.MF_DEV_LOG_DEBUG_MESSAGES_JVM_ARG`
      Sets debug mode. Intended for Internal MF Devs only.
      Parameters:
        `debug` - debug mode true or false.

    - #### enableDebugMetrics

          public void enableDebugMetrics(boolean flag)

    - #### setStickySubscriptions

          public void setStickySubscriptions(boolean sticky)

      Enable/Disable sticky subscriptions. Set clearSubscriptionsOnStop=false if subscriptions should persist on disconnect/stop/start.
      Parameters:
        `sticky` - -- the toggle switch

    - #### setStickySubscriptions

          public void setStickySubscriptions(boolean sticky,
                                             boolean clearSubscriptionsOnStop)

    - #### isConnected

          public boolean isConnected()

      Returns:
        true if the _channel is _connected.

    - #### connect

          public APIResult connect()

      Connect to the first available server with user credentials.
      Returns:
        APIResult.OK if the connection attempt succeeded. Note: this should not be invoked by _handler.

    - #### connectOne

          protected APIResult connectOne(java.lang.String host,
                                         int port)

    - #### close

          public APIResult close()

      Close the connection. (This can only be called this when you're not dispatching.) Note: this should not be invoked by _handler.
      Returns:
        the result of the close call.

    - #### isRunning

          public boolean isRunning()

      Returns:
        true if the client is currently dispatching events (i.e., you called run()).

    - #### stop

          public APIResult stop()

      Request to stop the event dispatch loop. Does not disconnect the client from the server.
      Returns:
        the result of the stop attempt.

    - #### isStopRequested

          public boolean isStopRequested()

    - #### join

          public APIResult join()

      Block until the client has exited the dispatch loop. Note: this should not be invoked by _handler.
      Returns:
        the result of the join attempt.

    - #### processEvents

          public APIResult processEvents(MFHandler _handler)

      Process all pending events in the reactor, and return as soon as reads/writes have been flushed. This can be used to integrate our API within a GUI toolkit's event processing loop without having to create a secondary thread.
      Parameters:
        `_handler` - -- the handler to be processed
      Returns:
        the result of running the handler

    - #### run

          protected APIResult run(java.lang.Object _handler,
                                  boolean loop)

    - #### send

          protected APIResult send(IMessage msg)

    - #### getSignature

          public java.lang.String getSignature()

      Returns:
        Get protocol api signature.

    - #### getSequenceID

          public int getSequenceID(int feedID)

      Get the last received sequenceID after successful subscription.
      Parameters:
        `feedID` - -- feed id
      Returns:
        -2 if not subscribed.

    - #### getFeeds

          public APIFeed[] getFeeds()

      Returns:
        After a successful connection is established, you may access the server's list of _feeds, markets. If you have not yet _connected to the server this will return empty.

    - #### getFeedByName

          public APIFeed getFeedByName(java.lang.String name)

      After a successful connection is established, you may access the server's list of _feeds, markets. This method will return a pointer to the feed of a given name if it exists and NULL if it does not. (this class maintains ownership to the object so do not delete it).
      Parameters:
        `name` - -- the feed name
      Returns:
        a pointer to the Feed of the given name or NULL if it does not exist.

    - #### getFeedByID

          public APIFeed getFeedByID(int id)

      After a successful connection is established, you may access the server's list of _feeds, markets. This method will return a pointer to the feed of a given id if it exists and NULL if it does not. (this class maintains ownership to the object so do not delete it).
      Parameters:
        `id` - -- the feed id
      Returns:
        a pointer to the Feed of the given id or NULL if it does not exist.

    - #### getMarketByName

          public APIMarket getMarketByName(APIFeed feed,
                                           java.lang.String name)

      After a successful connection is established, you may access the server's list of _feeds, markets. This method will return a pointer to the market with a given name within the specified feed if such market exists or NULL if there is no market with the same name.
      Parameters:
        `feed` - -- the feed
        `name` - -- the market name
      Returns:
        a pointer to the Market with the given name within the given feed or NULL if it does not exist.

    - #### getMarketByID

          public APIMarket getMarketByID(APIFeed feed,
                                         int marketID)

      After a successful connection is established, you may access the server's list of _feeds, markets. This method will return a pointer to the market with a given id within the specified feed if such market exists or NULL if there is no market with the same id.
      Parameters:
        `feed` - -- the feed
        `marketID` - -- the market id
      Returns:
        a pointer to the Market with the given market id within the given feed or NULL if it does not exist.

    - #### getHostname

          public java.lang.String getHostname()

      Returns:
        the primary/secondary server hostname (whichever one is being used). Does not indicate whether a connection is in progress or successfully established.

    - #### getPort

          public int getPort()

      Returns:
        the primary/secondary server port (whichever one is being used). Does not indicate whether a connection is in progress or successfully established.

    - #### handle

          protected void handle(com.marketfactory.api.ConfigMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.ConnectResponseMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.ClientDisconnectMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.TestMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.ImHereMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.HeartbeatMessage msg)

    - #### getLastPingTimes

          public java.util.Queue<MFClientBase.PingTime> getLastPingTimes()

    - #### replay

          public APIResult replay(int feedID,
                                  int fromSequenceID,
                                  int toSequenceID)

      Request replay of order flow events in the range [fromSequenceID, toSequenceID=-1]. Only open-ended requests are accepted by the server.
      Parameters:
        `feedID` - -- the feed id
        `fromSequenceID` - -- the begin sequence number
        `toSequenceID` - -- the end sequence number
      Returns:
        APIResult.OK if the replay request has been sent, APIResult.SOCKERR_WRITING on error.

    - #### subscribeMD

          protected APIResult subscribeMD(int feedID,
                                          int marketID,
                                          java.lang.String clSubID)

      Subscribe to market data updates for a specific feed. onSubscriptionEvent() will be called to notify that the flow of updates is ready. If the subscription is valid, onMarketData() will be called later on. The client subscription ID allows one-to-one message matching.
      Parameters:
        `feedID` - -- feed id
        `marketID` - -- market id
        `clSubID` - -- client subscription id
      Returns:
        APIResult.OK if the subscription request has been sent, APIResult.SOCKERR_WRITING on error.

    - #### subscribeMD

          protected APIResult subscribeMD(int feedID,
                                          int marketID)

      Subscribe to market data updates for a specific feed. onSubscriptionEvent() will be called to notify that the flow of updates is ready. If the subscription is valid, onMarketData() will be called later on.
      Parameters:
        `feedID` - -- feed id
        `marketID` - -- market id
      Returns:
        APIResult.OK if the subscription request has been sent, APIResult.SOCKERR_WRITING on error.

    - #### subscribeOF

          protected APIResult subscribeOF(int feedID,
                                          java.lang.String clSubID)

      Subscribe to trading for a specific feed. onSubscriptionEvent() will be called to notify that the order gateway is ready. If the subscription is valid, it will be possible to submit and cancel orders and receive trading events.
      Parameters:
        `feedID` - -- the feed id
        `clSubID` - -- the client subscription id
      Returns:
        APIResult.OK if the subscription request has been sent, APIResult.SOCKERR_WRITING on error.

    - #### subscribeOF

          protected APIResult subscribeOF(int feedID)

      Subscribe to trading for a specific feed. onSubscriptionEvent() will be called to notify that the order gateway is ready. If the subscription is valid, it will be possible to submit and cancel orders and receive trading events.
      Parameters:
        `feedID` - -- feed id
      Returns:
        APIResult.OK if the subscription request has been sent, APIResult.SOCKERR_WRITING on error.

    - #### subscribeAllMD

          protected APIResult subscribeAllMD()

      Subscribe to all the market data feeds. This is intended as a test utility; ideally you control which feeds and markets you connect to.
      Returns:
        APIResult.OK if the subscription request has been sent, APIResult.SOCKERR_WRITING on error.

    - #### unsubscribeMD

          protected APIResult unsubscribeMD(int feedID,
                                            int marketID,
                                            java.lang.String clSubID)

      Unsubscribe to market data updates for a specific feed.
      Parameters:
        `feedID` - -- feed id
        `marketID` - -- market id
        `clSubID` - -- client subscription id
      Returns:
        APIResult.OK if the unsubscription request has been sent, APIResult.SOCKERR_WRITING on error.

    - #### unsubscribeMD

          protected APIResult unsubscribeMD(int feedID,
                                            int marketID)

      Unsubscribe to market data updates for a specific feed.
      Parameters:
        `feedID` - -- the feed id
        `marketID` - -- the market id
      Returns:
        APIResult.OK if the unsubscription request has been sent, APIResult.SOCKERR_WRITING on error.

    - #### unsubscribeOF

          protected APIResult unsubscribeOF(int feedID,
                                            java.lang.String clSubID)

      Unsubscribe to trading for a specific feed.
      Parameters:
        `feedID` - -- the feed id
        `clSubID` - -- the client subscription id
      Returns:
        APIResult.OK if the unsubscription request has been sent, APIResult.SOCKERR_WRITING on error.

    - #### unsubscribeOF

          protected APIResult unsubscribeOF(int feedID)

      Unsubscribe to trading for a specific feed.
      Parameters:
        `feedID` - -- the feed id
      Returns:
        APIResult.OK if the unsubscription request has been sent, APIResult.SOCKERR_WRITING on error.

    - #### unsubscribeAll

          protected APIResult unsubscribeAll()

      Unsubscribe all market data and trading subscriptions. Call this if you want to stop receiving callbacks but don't want to disconnect.
      Returns:
        APIResult.OK if the unsubscription request has been sent, APIResult.SOCKERR_WRITING on error.

    - #### handle

          protected void handle(com.marketfactory.api.SubscriptionEventMessage msg)

    - #### registerMarketComb

          protected Pair<APIResult,java.lang.Integer> registerMarketComb(int feedID,
                                                                         int[] marketIds)

      Register for a given list of markets on a given feed.
      Parameters:
        `feedID` - -- the feed id
        `marketIds` - -- the list of market ids
      Returns:
        Pair The first member is APIResult.OK if the comb has been registered. The second member is a unique id to identify the market combination.

    - #### unregisterMarketComb

          protected APIResult unregisterMarketComb(int batchDefID)

      Unregister for a given list of markets on a given feed using the id provided in onBatchEvent callback.
      Parameters:
        `batchDefID` - -- the batch id
      Returns:
        APIResult.OK if the unregistration request has been sent.

    - #### handle

          protected void handle(com.marketfactory.api.MktDataMessage msg)

    - #### requestSnapshot

          protected APIResult requestSnapshot(int feedID,
                                              int marketID)

      Request a market data snapshot for the feed and market ID. (Note that after connecting you should get a snapshot automatically, so this should be used rarely.)
      Parameters:
        `feedID` - -- the feed id
        `marketID` - -- the market id
      Returns:
        APIResult.OK if the snapshot request has been sent, APIResult.SOCKERR_WRITING on error.

    - #### handle

          protected void handle(com.marketfactory.api.RequestSnapshotMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.BatchesCompletedMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.LastSequenceIDMessage msg)

    - #### submitOrder

          protected Pair<APIResult,java.lang.Long> submitOrder(java.lang.String clOrdID,
                                                               int feedID,
                                                               int marketID,
                                                               Side side,
                                                               MFFloat amount,
                                                               MFFloat price,
                                                               OrderType ordType,
                                                               TimeInForce tif)

      Submit an order.
      Parameters:
        `clOrdID` - -- client order id
        `feedID` - -- feed id
        `marketID` - -- marketID
        `side` - -- buy or sell
        `amount` - -- order size
        `price` - -- px
        `ordType` - -- order type
        `tif` - -- time in force
      Returns:
        Pair The first member is APIResult.OK if the order has been sent. The second member is the orderID.

    - #### submitOrder

          protected Pair<APIResult,java.lang.Long> submitOrder(java.lang.String clOrdID,
                                                               int feedID,
                                                               int marketID,
                                                               Side side,
                                                               MFFloat amount,
                                                               MFFloat price,
                                                               MFFloat stopPrice,
                                                               MFFloat maxShowAmt,
                                                               OrderType ordType,
                                                               TimeInForce tif)

      Submit an order without minAmount (kept for backward compatibility).
      Parameters:
        `clOrdID` - -- client order id
        `feedID` - -- feed id
        `marketID` - -- marketID
        `side` - -- buy or sell
        `amount` - -- order size
        `price` - -- px
        `stopPrice` - -- stop px
        `maxShowAmt` - -- max show amount
        `ordType` - -- order type
        `tif` - -- time in force
      Returns:
        Pair The first member is APIResult.OK if the order has been sent. The second member is the orderID.

    - #### submitOrder

          protected Pair<APIResult,java.lang.Long> submitOrder(java.lang.String clOrdID,
                                                               int feedID,
                                                               int marketID,
                                                               Side side,
                                                               MFFloat amount,
                                                               MFFloat price,
                                                               MFFloat stopPrice,
                                                               MFFloat maxShowAmt,
                                                               MFFloat minAmount,
                                                               OrderType ordType,
                                                               TimeInForce tif)

      Submit an order.
      Parameters:
        `clOrdID` - -- client order id
        `feedID` - -- feed id
        `marketID` - -- marketID
        `side` - -- buy or sell
        `amount` - -- order size
        `price` - -- px
        `stopPrice` - -- stop px
        `maxShowAmt` - -- max show amount
        `minAmount` - -- minimum amount
        `ordType` - -- order type
        `tif` - -- time in force
      Returns:
        Pair The first member is APIResult.OK if the order has been sent. The second member is the orderID.

    - #### submitOrder

          protected Pair<APIResult,java.lang.Long> submitOrder(java.lang.String clOrdID,
                                                               int feedID,
                                                               int marketID,
                                                               Side side,
                                                               MFFloat amount,
                                                               MFFloat price,
                                                               OrderType ordType,
                                                               TimeInForce tif,
                                                               MFClientBase.OrderArgs args)

      Submit an order.
      Parameters:
        `clOrdID` - -- client order id
        `feedID` - -- feed id
        `marketID` - -- marketID
        `side` - -- buy or sell
        `amount` - -- order size
        `price` - -- px
        `ordType` - -- order type
        `tif` - -- time in force
        `args` - -- additional order parameters
      Returns:
        Pair The first member is APIResult.OK if the order has been sent. The second member is the orderID.

    - #### submitOrder

          public Pair<APIResult,java.lang.Long> submitOrder(java.lang.String clOrdID,
                                                            int feedID,
                                                            int marketID,
                                                            Side side,
                                                            MFFloat amount,
                                                            MFFloat price,
                                                            MFFloat stopPrice,
                                                            MFFloat maxShowAmt,
                                                            MFFloat minAmount,
                                                            OrderType ordType,
                                                            TimeInForce tif,
                                                            java.lang.String modelID,
                                                            java.util.ArrayList<KeyValue> parameters)

      Submit an order. Pass in result field to get the result of the operation. This is used so each submitting thread can have its own result without generating garbage
      Parameters:
        `clOrdID` - -- client order id
        `feedID` - -- feed id
        `marketID` - -- marketID
        `side` - -- buy or sell
        `amount` - -- order size
        `price` - -- px
        `stopPrice` - -- stop px
        `maxShowAmt` - -- max show amount
        `minAmount` - -- min amount
        `ordType` - -- order type
        `tif` - -- time in force
        `modelID` - -- model
        `parameters` - -- additional parameters
      Returns:
        Pair The first member is APIResult.OK if the order has been sent. The second member is the orderID.

    - #### modifyOrder

          public Pair<APIResult,java.lang.Long> modifyOrder(java.lang.String clOrdID,
                                                            java.lang.String clNewID,
                                                            MFFloat amount,
                                                            MFFloat price)

      Submit modification without minAmount (kept for backward compatibility).
      Parameters:
        `clOrdID` - -- client order id to be modified
        `clNewID` - -- the new client order id
        `amount` - -- new amount
        `price` - -- new price
      Returns:
        Pair The first member is APIResult.OK if the order has been sent. The second member is the orderID.

    - #### modifyOrder

          protected Pair<APIResult,java.lang.Long> modifyOrder(java.lang.String clOrdID,
                                                               java.lang.String clNewID,
                                                               MFFloat amount,
                                                               MFFloat minAmount,
                                                               MFFloat price)

      Submit modification to an existing order.
      Parameters:
        `clOrdID` - -- the client order id to be modified
        `clNewID` - -- the new client order id
        `amount` - -- the amount
        `minAmount` - -- the minimum amount
        `price` - -- px
      Returns:
        Pair The first member is APIResult.OK if the order has been sent. The second member is the orderID.

    - #### modifyOrder

          protected Pair<APIResult,java.lang.Long> modifyOrder(java.lang.String clOrdID,
                                                               java.lang.String clNewID,
                                                               MFFloat amount,
                                                               MFFloat minAmount,
                                                               MFFloat price,
                                                               java.util.List<KeyValue> parameters)

      Parameters:
        `clOrdID` -
        `clNewID` -
        `amount` -
        `minAmount` -
        `price` -
        `parameters` -
      Returns:

    - #### cancelOrder

          protected APIResult cancelOrder(java.lang.String cxlID,
                                          java.lang.String clOrdID)

      Cancel a previously placed order by client order id ('clOrdID').
      Parameters:
        `cxlID` - -- the cancel id
        `clOrdID` - -- the client order id to be cancelled
      Returns:
        APIResult.INVALID_ORDERID if the order cannot be found locally, i.e., if the 'clOrdID' does not correspond to any previously placed order on this client interface.

    - #### cancelOrder

          protected APIResult cancelOrder(java.lang.String cxlID,
                                          long orderID)

      Cancel a previously placed order by internal 'orderID'.
      Parameters:
        `cxlID` - -- the cancel id
        `orderID` - -- the order id
      Returns:
        APIResult.INVALID_ORDERID if the internal 'orderID' could not be provided.

    - #### cancelOrder

          protected APIResult cancelOrder(java.lang.String cxlID,
                                          long orderID,
                                          java.lang.String clOrdID)

      Cancel a previously placed order by providing both internal 'orderID' and clOrdID. APIResult.INVALID_ORDERID if the internal 'orderID' could not be provided.

    - #### cancelAll

          protected APIResult cancelAll(int feedID,
                                        java.lang.String cxlID)

      Cancel all the orders on a feed.
      Parameters:
        `feedID` - -- the feed id
        `cxlID` - -- the cancel id
      Returns:
        -- the result of sending the message

    - #### cancelAll

          protected APIResult cancelAll(java.lang.String cxlID)

      Cancel all the orders, on all feeds.
      Parameters:
        `cxlID` - -- the cancel id
      Returns:
        -- the result of sending the message

    - #### onStart

          protected void onStart(MFClientBase client)

    - #### onStop

          protected void onStop(MFClientBase client)

    - #### onDisconnect

          protected void onDisconnect(MFClientBase client)

    - #### onConnect

          protected void onConnect(MFClientBase client)

    - #### onHeartbeat

          protected void onHeartbeat(Heartbeat heartbeat,
                                     MFClientBase client)

    - #### onSubscriptionEvent

          protected void onSubscriptionEvent(SubscriptionEvent subscriptionEvent,
                                             MFClientBase client)

    - #### onMarketData

          protected void onMarketData(MarketView marketData,
                                      MFClientBase client)

    - #### onEventReport

          protected void onEventReport(EventReport eventReport,
                                       MFClientBase client)

    - #### onDateRollover

          protected void onDateRollover(DateRollover dateRollover,
                                        MFClientBase client)

    - #### onBatchComplete

          protected void onBatchComplete(int batchDefID,
                                         MFClientBase client)

    - #### onOrderReceived

          protected void onOrderReceived(OrderReceived orderReceived,
                                         MFClientBase client)

    - #### onOrderRejected

          protected void onOrderRejected(OrderRejected orderRejected,
                                         MFClientBase client)

    - #### onOrderSubmitted

          protected void onOrderSubmitted(OrderSubmitted orderSubmitted,
                                          MFClientBase client)

    - #### onOrderCanceled

          protected void onOrderCanceled(OrderCanceled orderCanceled,
                                         MFClientBase client)

    - #### onOrderCancelRejected

          protected void onOrderCancelRejected(OrderCancelRejected orderCancelRejected,
                                               MFClientBase client)

    - #### onDropCopy

          protected void onDropCopy(DropCopy dropCopy,
                                    MFClientBase client)

    - #### onTradeCapture

          protected void onTradeCapture(TradeCapture tradeCapture,
                                        MFClientBase client)

    - #### onOrderDone

          protected void onOrderDone(OrderDone orderDone,
                                     MFClientBase client)

    - #### onReplayDone

          protected void onReplayDone(ReplayDone replayDone,
                                      MFClientBase client)

    - #### onLockResponse

          protected void onLockResponse(LockResponse lockResponse,
                                        MFClientBase client)

    - #### onRiskResponse

          protected void onRiskResponse(RiskResponse riskResponse,
                                        MFClientBase client)

    - #### onQuoteRequest

          protected void onQuoteRequest(QuoteRequest msg,
                                        MFClientBase client)

    - #### onMassQuoteAck

          protected void onMassQuoteAck(MassQuoteAck msg,
                                        MFClientBase client)

    - #### onNewOrder

          protected void onNewOrder(NewOrder msg,
                                    MFClientBase client)

    - #### onOrderTimeout

          protected void onOrderTimeout(OrderTimeout msg,
                                        MFClientBase client)

    - #### onTradeCaptureAck

          protected void onTradeCaptureAck(TradeCaptureAck msg,
                                           MFClientBase client)

    - #### onJsonFromServer

          protected void onJsonFromServer(com.marketfactory.api.JsonFromServer msg,
                                          MFClientBase client)

    - #### handle

          protected void handle(com.marketfactory.api.RiskResponseMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.LockResponseMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.OrderReceivedMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.OrderSubmittedMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.OrderRejectedMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.OrderCanceledMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.OrderCancelRejectedMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.DropCopyMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.TradeCaptureMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.OrderDoneMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.QuoteRequestMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.MassQuoteAckMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.NewOrderMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.OrderTimeoutMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.TradeCaptureAckMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.EventReportMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.ReplayDoneMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.DateRolloverMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.JsonFromServer msg)

    - #### log

          public void log(java.lang.String message)

      Logs a debug message into the Whisperer server _log file. (We use this for inserting markers for automated testing and debugging.)
      Parameters:
        `message` - -- what to log

    - #### log

          public void log(java.lang.String message,
                          LogLevel level)

    - #### test

          public void test(APITest test)

      Internal testing function. Do not use this.
      Parameters:
        `test` - -- the test to send

    - #### handle

          protected void handle(com.marketfactory.api.RuThereMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.VersionMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.InsertLogMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.ClientConnectMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.ReplayMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.BatchRegisterMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.BatchUnregisterMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.SubscribeMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.UnsubscribeMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.UnsubscribeAllMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.SubmitOrderMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.CancelOrderMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.CancelAllOrderMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.ModifyOrderMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.LockUserMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.RejectQuoteRequestMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.CancelQuoteMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.MassQuoteMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.RejectOrderMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.AcceptOrderMessage msg)

    - #### handle

          protected void handle(com.marketfactory.api.JsonFromClient msg)

    - #### resetAdminMembers

          protected void resetAdminMembers()

    - #### handle

          protected void handle(com.marketfactory.api.TradeLimitDataMessage msg)

    - #### allowClientsToConnect

          protected APIResult allowClientsToConnect()

      Admin interface: Call this method to allow monitored API clients to connect. An MFAdmin must remain connected and have called this method for monitored clients to function.
      Returns:
        the result of sending

    - #### lockUser

          protected APIResult lockUser(java.lang.String clRequestID,
                                       java.lang.String username,
                                       boolean locked)

      Admin interface: Lock / unlock user accounts. This is a more granular, subordinate, version of allowClientsToConnect().
      Parameters:
        `clRequestID` - -- the client request id
        `username` - -- the user to be locked
        `locked` - -- to lock?
      Returns:
        the api result

    - #### setRisk

          protected APIResult setRisk(java.lang.String clRequestID,
                                      MFClientBase.RiskLimit[] limits,
                                      MFClientBase.RiskUsage[] usages,
                                      boolean isSnapshot)

      Admin interface: publish incremental/snapshot set of limits and usage. A full snapshot must be sent prior to allowClientsToConnect() so NOP calculations are not stale.
      Parameters:
        `clRequestID` - -- client request id
        `limits` - -- variable collection of limits
        `usages` - -- variable collection of usages
        `isSnapshot` - -- snapshot flag
      Returns:
        the result of the setRisk call.

    - #### setRisk

          protected APIResult setRisk(java.lang.String clRequestID,
                                      MFClientBase.RiskLimit[] limits,
                                      MFClientBase.RiskUsage[] usages,
                                      boolean isSnapshot,
                                      boolean doReplace)

    - #### setRisk

          protected APIResult setRisk(java.lang.String clRequestID,
                                      MFClientBase.RiskLimit... limits)

      Admin interface: publish incremental set of limits. Group limits may be selectively updated, deferring to previous values/defaults if desired. If a group is subject to multiple limits, the most restrictive limit will always be preferred.
      Parameters:
        `clRequestID` - -- client request id
        `limits` - -- variable collection of limits
      Returns:
        the result of the setRisk call.

    - #### setRisk

          protected APIResult setRisk(java.lang.String clRequestID,
                                      MFClientBase.RiskUsage... usages)

      Admin interface: publish incremental set of risk usage. User state may be selectively updated based on current activity. Users only have a single state, to which the server will incorporate unacknowledged/pending orders.
      Parameters:
        `clRequestID` - -- client request id
        `usages` - -- variable collection of usages
      Returns:
        the result of the setRisk call.

    - #### setRisk

          protected APIResult setRisk(java.lang.String clRequestID,
                                      boolean doReplace,
                                      MFClientBase.RiskUsage... usages)

    - #### getRiskLimits

          protected MFClientBase.RiskLimit[] getRiskLimits()

      Admin interface: limits registered by server process.
      Returns:
        May include server defaults and other limits not explicitly initialized from an admin instance.

    - #### getRiskUsage

          protected MFClientBase.RiskUsage[] getRiskUsage()

      Returns:
        Admin interface: full risk usage view held by server process. Will reflect the last set of usages received by the server, incorporating unacknowledged/pending orders. Will only include groups that have been modified by admin or trade activity.

    - #### getRiskMarketPositions

          protected MFClientBase.RiskMarketPosition[] getRiskMarketPositions()

      Admin interface:
      Returns:
        array of derived RiskMarketPositions rather than RiskUsage. The results are abridged to show current position without being broken down by date.

    - #### getRiskTimestamp

          protected long getRiskTimestamp()

      Returns:
        Admin interface: timestamp of last constraint update from server process.

    - #### getUserGroupChains

          protected java.util.Map<java.lang.String,java.lang.String[]> getUserGroupChains()

      Returns:
        Admin interface: linear list of groups to which each user belongs. (each entry is a direct child of the next group in the list.) Ex: ApiUser1: [ApiUser1, Client1, Root] GuiUser1: [GuiUser1, Client1, Root]

    - #### subscribePricing

          protected APIResult subscribePricing(int feedID,
                                               java.lang.String clSubID)

    - #### subscribeTrading

          protected APIResult subscribeTrading(int feedID,
                                               java.lang.String clSubID)

    - #### unsubscribePricing

          protected APIResult unsubscribePricing(int feedID,
                                                 java.lang.String clSubID)

    - #### unsubscribeTrading

          protected APIResult unsubscribeTrading(int feedID,
                                                 java.lang.String clSubID)