Adjustable Stops, Pegged-to-Benchmark and Conditional orders are now supported in the API.
Adjustable Stops: Attach one-time adjustments to stop, stop limit, trailing stop and trailing stop limit order using the following new attributes within the Order class:
For examples, go to http://xavierib.github.io/twsapidocs/adjustable_stops.html
Pegged-to-Benchmark: Peg your order to a reference contract's movement in the market using the following new attributes within the Order class.
For examples go to: http://xavierib.github.io/twsapidocs/basic_orders.html#pegged_benchmark
Conditional: Specify conditions that must be met before the order will trigger. Uses the following classes and new attributes within each class:
Order class
PriceCondition (new class)
ExecutionCondition (new class)
MarginCondition (new class)
PercentageChangeCondition (new class)
TimeCondition (new class)
VolumeCondition (new class)
For examples go to: http://xavierib.github.io/twsapidocs/order_conditions.html
EClient Class: Positions and account updates can now be requested for a given account or model via reqPositionsMulti and reqAccountUpdatesMulti methods.
EWrapper Interface: Information is delivered via the new positionMulti/positionMultiEnd and accountUpdateMulti/accountUpdateMultiEnd callbacks.
Within TWS, we use the last trading day and not the actual expiration date for futures, options and futures options contracts. To more accurately reflect this data, we have changed all of the “expiry” fields throughout the API to either “LastTradingDay” or “LastTradingDayorContractMonth” as noted below.
For TWS messages being sent to the API client, the values is always Last Trading Day, and so the "Expiry" field has been changed to "LastTradingDay":
OPEN_ORDER = 5;
PORTFOLIO_VALUE = 7;
CONTRACT_DATA = 10;
EXECUTION_DATA = 11;
SCANNER_DATA = 20;
TICK_EFP = 47;
POSITION = 61;
For messages sent from the API to TWS, if the value length is 8, TWS understand it as the Last Trading Day. If the value length is 6, TWS understand it as the Contract Month. For these, the “Expiry” field has been renamed to “LastTradingDayorContractMonth”:
REQ_MKT_DATA = 1;
PLACE_ORDER = 3;
REQ_CONTRACT_DATA = 9;
REQ_MKT_DEPTH = 10;
REQ_HISTORICAL_DATA = 20;
EXERCISE_OPTIONS = 21;
REQ_REAL_TIME_BARS = 50;
REQ_CALC_IMPLIED_VOLAT = 54;
REQ_CALC_OPTION_PRICE = 55;
For the above, the expiry field is wrapped in the Contract class. We have renamed Contract.expiry to Contract.lastTradingDayOrContractMonth.
The TWS API library can now communicate with TWS over a secured SSL protocol. In conjunction with this added support, the EClientSocket, which was previously a combination of client functionality plus socket functionality/transport, was split to isolate socket functionality/transport in an ESocket class implementing an ETransport interface. This refactoring allows us to implement alternative transports, specifically SSL.
Two new attributes are supported for Volatility and Pegged to Volatility orders. These are available in all API platforms
Effective in TWS 950 and above, API users have the option to set the API to Read-Only mode. This mode allows viewing of market data and account information, but blocks any type of trading activity Additionally, users can elect to limit access only to connections made from the same computer. To set API parameters, from within TWS Global Configuration select API.
Beginning with this release, we have made the following changes to our API clients and sample applications:
We have added the following new connection features:
We have added a new Order attribute, Solicited to the Order object. Solicited is a boolean attribute with the following values:
The following new error codes have been added to the Java client:
Beginning with this release, we have made the following changes to the primaryExchange field:
exchange= SMART:LSEIOB1
We have fixed a bug with API orders that sent an end marker prematurely. Beginning with TWS beta release 948, the end marker will be sent to the API only after all of the orders have been delivered to TWS.