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{:})})
endcqgconnectioneventhandler 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{:})})
endRegister 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{:})})
endSubscribe 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.Placeans =
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.Placeans =
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.Placeans =
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.Placeans =
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
Topics
- Create Order Using CQG
- Request CQG Historical Data
- Request CQG Real-Time Data
- Request CQG Intraday Tick Data
- Workflow for CQG