Main Content

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

| | | | | | |

Related Examples

More About

External Websites