To submit an order and start receiving order/fill updates, you:
- Create an instance of ttsdk::OrderPtr class and call the ttsdk::CreateOrder() method passing an InstrumentPtr reference that defines the instrument for which you want to submit an order.
- If you have derived a class from ttsdk::IOrderEventHandler to receive order / fill events for specific solicited orders, call the Subscribe() method of the OrderPtr instance passing an instance of the event handler.
- Create an instance of ttsdk::OrderProfile and fill in the order’s parameters.
- Call the SendNew() method of the OrderPtr instance passing the OrderProfile instance.
The following code snippet demonstrates an example of this process.
ttsdk::OrderProfile profile_;
ttsdk::OrderPtr order_;
OrderObserver orderObs_;
void SubmitOrder(ttsdk::InstrumentPtr instrument, double price, double qty)
{
order_ = ttsdk::CreateOrder(instrument);
if (!order_)
{
std::cout << "Order creation failed." << std::endl;
return;
}
order_->Subscribe(orderObs_);
profile_.request_id++;
profile_.account_id = 12345;
profile_.side = ttsdk::OrderSide::Buy;
profile_.price = price
profile_.quantity = qty;
profile_.type = ttsdk::OrderType::Limit;
profile_.tif = ttsdk::TimeInForce::Day;
order_->SendNew(profile_);
}
The OrderProfile class has a member named LeaveOnRestart. It is set to true by default. If you are writing a TT Application Server, setting this to false will result in the order being deleted after your application is restarted.