The order was cancelled by the exchange

Hello Team,

We placed SL orders for some FINNIFTY and NIFTY instruments and Zerodha Kite accepted those orders.
But at the time of SL execution, the order was cancelled with below error:

"The order was cancelled by the exchange because the price is outside the current allowed limit price protection range. [Read more.]("

If the price was outside the current allowed limit, Zerodha Kite shouldn't have accepted the orders in the first place.

We had placed similar order for some other instrument and that order got executed. Orders with similar logic are getting executed perfectly fine for BANKNIFTY.
So we're not able to understand the logic behind the execution.
Also, this issue was there only for FINNIFTY few weeks back. But from last 2-3 weeks, it’s happening in NIFTY as well. Now it’s occurring almost everyday.

In the reference document provided by Zerodha, it is mentioned that if the trading price is higher than 50 then the SL order range should be +/- 40% and if the trading price is less than 50 then the SL order range should be +/- 20.
The +/- 40% should be calculated based on the trading price available at the time of placing SL order or it should be checked continuously and should be updated accordingly. We’re not able to figure this out.

We've also attached some screenshots for your reference. Wherein, some orders are rejected and some orders are accepted.
Request you to please check the issue and let us know what is wrong here and how it should be corrected.

2.jpg 48.9K
1.jpg 53.5K
3.jpg 45.3K
  • Arockiya_r
    Arockiya_r edited March 27
    This validation occurs during order matching. If the order is within the range at that time, it will execute; otherwise, it will be cancelled. Since this validation occurs during matching, it is not feasible to block it at the time of order placement. Here are a few points from the circular.

    1. During trading hours it shall be the simple average of trade prices of that contract in the last
    30 seconds. For contracts that have traded in last 30 seconds, the reference price shall be
    revised throughout the day at 30 seconds interval.

    2. LPP limit shall be flexed automatically when a minimum of 10 orders are rejected on account of LPP
    validation, between two LPP revision events; AND when such orders involves minimum 5 unique UCCs.
    LPP range shall be flexed in the corresponding direction in which the criteria are met.

    If the order is rejected with this message, the trader can validate the current trading range and place the order again.

    You can refer the circular here.

    This is not related to API. For order validation-related queries, you may create a ticket in the support portal. :)
  • vikramavertatech
    Thank you Arockiya for your reply.

    I've one question though. You've mentioned in the first point that:

    "1. During trading hours it shall be the simple average of trade prices of that contract in the last 30 seconds."

    So how do we get the average? Is there any API available for this?
  • MAG
    You have to use the kite ticker websocket api to get the ticks, process the ticks and compute this or any other detail that you need.
Sign In or Register to comment.