What is a One Cancel Other (OCO) order?


One Cancel Other (OCO) order consists of a pair of conditional orders wherein the execution of one order results in automatic cancellation of the other. Hence, it allows you to place two orders (a limit order and a stop-loss order) at the same time. 

It is important to note that an OCO order can only be placed against open positions. It can be placed as a market or limit order with the time condition as either a day or GTD order. The order is saved in Geojit's order management system and sent to the exchange when the OCO price is triggered.

Day order condition: If the OCO order is placed with the day time condition, it will have to be placed within the daily price range.

GTD order condition: If the OCO order is placed with the GTD time condition, it can be placed outside the daily price range. It will remain in Geojit's order management system till one of the prices is triggered, or the order reaches expiry.

Let us look at the orders involved with an example: 

Mr Rahul has an open position of 100 shares of Wipro trading at Rs. 420 per share. He wants to book profits if the price reaches Rs. 500, or close his position if the price goes down to Rs. 400.  

For this, he can place an OCO order with:
  • The take profit (limit) order at Rs. 500 per share.
  • The stop-loss order at Rs. 400 per share.

Assuming that Mr Rahul places his order with the GTD condition, it will remain in Geojit's order management system till Wipro's price trades at/above Rs. 500, or trades at/below Rs. 400 per share, or the order is cancelled/expires.

Scenario 1: Wipro trades at/above Rs. 500
A market order is triggered for the take profit order of Rs. 500 and the stop-loss order for Rs. 400 is cancelled.

Scenario 2: Wipro trades at/below Rs. 400.
A market order is triggered for the stop-loss order of Rs. 400 and the take profit order for Rs. 500 is cancelled.


The trigger set for an OCO GTD order is valid only once. Hence, if an OCO GTD order is triggered and sent to the exchange but does not get executed for any reason, you will have to place the order again.


Without cover at 3:00 pm 




Cover at 3:00 pm





Still need help? Create Ticket