Create CQG Orders
This example shows how to connect to CQG®, define the event handlers, subscribe to the security, define the account handle, and submit orders for execution.
Create the CQG Connection
Create the CQG connection object using cqg
.
c = cqg;
Define Event Handlers
Register the sample event handler cqgconnectioneventhandler
to
track events associated with the connection status.
eventNames = {'CELStarted','DataError','IsReady', ... 'DataConnectionStatusChanged', ... 'GWConnectionStatusChanged', ... 'GWEnvironmentChanged'}; for i = 1:length(eventNames) registerevent(c.Handle,{eventNames{i}, ... @(varargin)cqgconnectioneventhandler(varargin{:})}) end
cqgconnectioneventhandler
is assigned to the events in
eventNames
.
Set the API configuration properties. For example, to set the time zone to Eastern Time, enter the following.
c.APIConfig.TimeZoneCode = 'tzEastern';
c.APIConfig
is a CQG configuration object. For details about setting API configuration
properties, see CQG API Reference Guide.
Establish the connection to CQG.
startUp(c)
CELStarted DataConnectionStatusChanged GWConnectionStatusChanged
The connection event handler displays event names for a successful CQG connection.
Register an event handler to track events associated with a CQG instrument subscription.
streamEventNames = {'InstrumentSubscribed','InstrumentChanged', ... 'IncorrectSymbol'}; for i = 1:length(streamEventNames) registerevent(c.Handle,{streamEventNames{i}, ... @(varargin)cqgrealtimeeventhandler(varargin{:})}) end
Register an event handler to track events associated with a CQG order and account.
orderEventNames = {'AccountChanged','OrderChanged','AllOrdersCanceled'}; for i = 1:length(orderEventNames) registerevent(c.Handle,{orderEventNames{i}, ... @(varargin)cqgordereventhandler(varargin{:})}) end
Subscribe to the CQG Instrument
With the connection established, subscribe to the CQG instrument. The instrument must be successfully subscribed first before it is available for transactions. You must format the instrument name in the CQG long symbol view. For example, to subscribe to a security tied to the EURIBOR, enter the following.
realtime(c,'F.US.IE')
pause(2)
F.US.IEK13 subscribed
pause
causes MATLAB® to wait 2 seconds before continuing to give time for CQG to subscribe to the instrument.
Create the CQG instrument object.
To use the instrument in createOrder
, import the name of the
instrument cqgInstrumentName
into the current MATLAB workspace. Then, create the CQGInstrument
object
cqgInst
.
cqgInstrumentName = evalin('base','cqgInstrument'); cqgInst = c.Handle.Instruments.Item(cqgInstrumentName);
Set Up Account Credentials
Set the CQG flags to enable account information retrieval.
set(c.Handle,'AccountSubscriptionLevel','aslNone') set(c.Handle,'AccountSubscriptionLevel','aslAccountUpdatesAndOrders') pause(2)
ans = AccountChanged
The CQG API shows that account information changed.
Set up the CQG account credentials.
Retrieve the CQGAccount
object into
accountHandle
to use your account information in
createOrder
. For details about creating a
CQGAccount
object, see CQG API Reference Guide.
accountHandle = c.Handle.Accounts.ItemByIndex(0);
Create CQG Market, Limit, Stop, and Stop Limit Orders
Create a market order that buys one share of the subscribed security
cqgInst
using the account credentials
accountHandle
.
quantity = 1; oMarket = createOrder(c,cqgInst,1,accountHandle,quantity); oMarket.Place
ans = OrderChanged
The CQGOrder
object oMarket
contains the
order. The CQG API executes the market order using the CQG API function Place
. After execution, the order status
changes.
To use a character vector for the security, subscribe to the security
'EZC'
as shown above. Then, create a market order that buys one
share of the security 'EZC'
using the defined account credentials
accountHandle
.
cqgInstrumentName = 'EZC';
quantity = 1;
oMarket = createOrder(c,cqgInstrumentName,1,accountHandle,quantity);
oMarket.Place
ans = OrderChanged
The CQGOrder
object oMarket
contains the
order. The CQG API executes the market order using the CQG API function Place
. After execution, the order status
changes.
To create a limit order, you can use the bid price. Extract the CQG bid object qtBid
from the previously defined
CQGInstrument
object cqgInst
. For details about
the CQGInstrument
object, see CQG API Reference Guide.
qtBid = cqgInst.get('Bid');
Create a limit order that buys one share of the previously subscribed security
cqgInst
using the previously defined account credentials
accountHandle
and qtBid
for the limit
price.
quantity = 1;
limitprice = qtBid.get('Price');
oLimit = createOrder(c,cqgInst,2,accountHandle,quantity,limitprice);
oLimit.Place
ans = OrderChanged
The CQGOrder
object oLimit
contains the order.
The CQG API executes the limit order using the CQG API function Place
. After execution, the order status
changes.
To create a stop order, you can use the trade price. Extract the CQG trade object qtTrade
from the previously defined
CQGInstrument
object cqgInst
.
qtTrade = cqgInst.get('Trade');
Create a stop order that buys one share of the previously subscribed security
cqgInst
using the previously defined account credentials
accountHandle
and qtTrade
for the stop
price.
quantity = 1;
stopprice = qtTrade.get('Price');
oStop = createOrder(c,cqgInst,3,accountHandle,quantity,stopprice);
oStop.Place
ans = OrderChanged
The CQGOrder
object oStop
contains the order.
The CQG API executes the stop order using the CQG API function Place
. After execution, the order status
changes.
To create a stop limit order, use both the bid and trade prices defined above.
Create a stop limit order that buys one share of the subscribed security
cqgInst
using the defined account credentials
accountHandle
.
quantity = 1;
oStopLimit = createOrder(c,cqgInst,4,accountHandle,quantity, ...
limitprice,stopprice);
oStopLimit.Place
ans = OrderChanged
The CQGOrder
object oStopLimit
contains the
order. The CQG API executes the stop limit order using the CQG API function Place
. After execution, the order status
changes.
Close the CQG Connection
shutDown(c)
See Also
cqg
| close
| createOrder
| history
| timeseries
| startUp
| shutDown
| realtime
Related Examples
- Create Order Using CQG
- Request CQG Historical Data
- Request CQG Real-Time Data
- Request CQG Intraday Tick Data