Brokerage¶
-
class
quanttrader.brokerage.backtest_brokerage.
BacktestBrokerage
(events_engine, data_board)¶ Market order is immediately filled. Limit or stop order is saved to _active_orders for next tick
-
__init__
(events_engine, data_board)¶ Initialize Backtest Brokerage.
- Parameters
events_engine – send fill_event to event engine
data_board – retrieve latest price from data_board
-
cancel_order
(order_id)¶ Handle cancel order request from client.
- Parameters
order_id – order id of the order to be canceled
- Returns
no return; cancel feedback is pushed into message queue
-
next_order_id
()¶ Return next available order id for client to use.
- Returns
next available new order id
-
on_tick
(tick_event)¶ Cross standing orders against new tick_event
Market order can be potentially saved and then filled here against tomorrow’s open price
- Parameters
tick_event – new tick just came in
- Returns
no return; if orders are filled, they are pushed into message queue
-
place_order
(order_event)¶ Place and fill client order; return fill event.
Market order is immediately filled, no latency or slippage the alternative is to save the orders and fill in on_tick function
- Parameters
order_event – client order received
- Returns
no return; fill_event is pushed into message queue
-
reset
()¶ Reset Backtest Brokerage.
-
-
class
quanttrader.brokerage.ib_brokerage.
InteractiveBrokers
(msg_event_engine, tick_event_engine, account: str)¶ -
__init__
(msg_event_engine, tick_event_engine, account: str)¶ Initialize InteractiveBrokers brokerage.
Currently, the client is strongly coupled to broker without an incoming queue, e.g. client calls broker.place_order to place order directly.
- Parameters
msg_event_engine – used to broadcast messages the broker generates back to client
tick_event_engine – used to broadcast market data back to client
account – the IB account
-
cancel_all_orders
()¶ Cancel all standing orders, for example, before one wants to shut down completely for some reasons.
-
cancel_historical_data
(reqid)¶ Cancel historical data request. Usually not necessary.
- Parameters
reqid – the historical data request id
-
cancel_order
(order_id)¶ Cancel client order.
- Parameters
order_id – order id of the order to be canceled
- Returns
no return. If order is successfully canceled, IB will return an orderstatus message.
-
connect
(host='127.0.0.1', port=7497, clientId=0)¶ Connect to IB. Request open orders under clientid upon successful connection.
- Parameters
host – host address
port – socket port
clientId – client id
-
static
contract_to_symbol
(ib_contract)¶ Convert IB contract to full symbol
- Parameters
ib_contract – IB contract
- Returns
full symbol
-
disconnect
()¶ Disconnect from IB
-
heartbeat
()¶ Request server time as heartbeat
-
static
ib_order_to_order
(ib_order)¶ Convert IB order to order event
- Parameters
ib_order – IB representation of order
- Returns
internal representation of order
-
log
(msg)¶ Broadcast server log message through message queue
- Parameters
msg – message to be broadcast
- Returns
no return; log meesage is placed into message queue
-
next_order_id
()¶ Return next available order id
- Returns
next order id available for next orders
-
static
order_to_ib_order
(order_event)¶ Convert order event to IB order
- Parameters
order_event – internal representation of order
- Returns
IB representation of order
-
place_order
(order_event)¶ Place order to IB
- Parameters
order_event – client order to be placed
- Returns
no return. An order event is pushed to message queue with order status Acknowledged
-
reqCurrentTime
()¶ Request server time on broker side
-
request_historical_data
(symbol, end=None)¶ Request 1800 S (30 mins) historical bar data from Interactive Brokers.
- Parameters
symbol – the contract whose historical data is requested
end – the end time of the historical data
- Returns
no returns; data is broadcasted through message queue
-
request_historical_ticks
(symbol, start_time, reqtype='TICKS')¶ Request historical time and sales data from Interactive Brokers. See here https://interactivebrokers.github.io/tws-api/historical_time_and_sales.html
- Parameters
symbol – the contract whose historical data is requested
start_time – i.e. “20170701 12:01:00”. Uses TWS timezone specified at login
reqtype – TRADES, BID_ASK, or MIDPOINT
- Returns
no returns; data is broadcasted through message queue
-
setServerLogLevel
(level=1)¶ Set server side log level or the log messages received from server.
- Parameters
level – log level
-
subscribe_account_summary
()¶ Request account summary from broker
-
subscribe_market_data
(sym)¶ Subscribe market L1 data. Market data for this symbol will then be streamed to client.
- Parameters
sym – the symbol to be subscribed.
-
subscribe_market_datas
()¶ Subscribe market L1 data for all symbols used in strategies. Market data for this symbol will then be streamed to client.
-
subscribe_market_depth
(sym)¶ Subscribe market L2 data. Market data for this symbol will then be streamed to client.
- Parameters
sym – the symbol to be subscribed.
-
subscribe_positions
()¶ Request existing positions from broker
-
static
symbol_to_contract
(symbol)¶ Convert fulll symbol string to IB contract
TODO CL.HO BAG 174230608 1 NYMEX 257430162 1 NYMEX NYMEX # Inter-comdty ES.NQ BAG 371749798 1 GLOBEX 371749745 1 GLOBEX GLOBEX # Inter-comdty CL.HO BAG 257430162 1 NYMEX 174230608 1 NYMEX NYMEX
- Parameters
symbol – full symbol, e.g. AMZN STK SMART
- Returns
IB contract
-
unsubscribe_account_summary
()¶ Stop receiving account summary from broker
-
unsubscribe_market_data
(sym)¶ Unsubscribe market L1 data. Market data for this symbol will stop streaming to client.
- Parameters
sym – the symbol to be subscribed.
-
unsubscribe_market_depth
(sym)¶ Unsubscribe market L2 data. Market data for this symbol will stop streaming to client.
- Parameters
sym – the symbol to be subscribed.
-
unsubscribe_positions
()¶ Stop receiving existing position message from broker.
-