Things to remember while placing live trades via NOW connection
- The Nest Plus API provides a semi-automated solution for submitting live orders for the retail users. When an order is placed via ArthaChitra (which uses the Nest Plus API) user has to manually confirm the order in NSE NOW/Nest Trader.
This defeats the whole purpose of submitting an order via the API, unfortunately this is how things are. However the silver lining is that order modification or cancellation does not needs any such confirmation and is seamless.
- Nest Plus API does not allows Market or Stop Market orders. Only Limit and Stop Limit orders are allowed.
In some cases ArthaChitra will try to simulate a market order (by placing a limit order) For example if you try to close or reverse a position, then ArthaChitra will place a limit order instead of a market order. The limit price will be (Last Traded Price + StopLimitPriceDifference * Instrument.TickSIze) in case of buy order and (Last Traded Price - StopLimitPriceDifference * Instrument.TickSIze) for sell order. You can set the StopLimitPriceDifference from Settings > Options > Order tab. The default value is 10. Since it is a limit order there is no grantee the order will get filled. That will depend among other the current market volatility, how deep the limit price is set (via the StopLimitPriceDifference), etc
- NOW connection does not allow disclosed quantity
- NOW connection supports only DAY order.
- Nest Plus API does not supports MCX, MCS-SX or NCDEX
- Since version 22.214.171.124, NSE FnO quantity is taken as number of contracts and not lot size. If you want to buy 2 contracts of Nifty then please append 2 (two) as the quantity and not 50 (150 from Nov 15 series)
However the biggest drawback of the Nest Plus API is that it is not event driven. What it means is, say you have placed an order to buy 100 shares of X. When order gets filled the API ideally should notify the clients (ArthaChitra in our case), that the order got filled. The Nest Plus API, not being event driven, fails to provide any such notifications. As such ArthaChitra has to poll the Nest Plus API at regular intervals to know the status of the order (i.e. if it has been filled or not). So you may have a scenario where the order is part-filled or filled however ArthaChitra is yet to update the change internally until the next poll. This gap, though in milliseconds, is a big detrimental particularly when the user is automating his strategy and may result in overfills etc. Not to mention, this regular polling (to get the order status) is a resource hog.
ArthaChitra lets the user to configure the interval between two polls from the NOW connection settings via the RefreshInterval property. The default value is 250 milliseconds and the minimum value the user can set is 50 milliseconds.
Again, the information returned by the Nest Plus API is limited to order state (whether the order is open/working, filled, cancelled or rejected), filled quantity and fill price only. This is a big challenge in designing any meaningful system.
Let me give some scenarios which will help to understand the challenges posed while using the Nest Plus API.
When one submits an order via ArthaChitra, he/she has to manually confirm the order in NSE NOW/Nest Trader. However if he/she choose to Ignore the order in NSE NOW/NestTrader, the Nest Plus API will NOT return the “Ignored” state of the order. As such in ArthaChitra the OrderStatus of such order will be stuck at PendingSubmit. As a workaround ArthaChitra marks orders as "Inactive" if the user chooses to ignore the order or does not places the order within the stipulated time as defined by the "OrderTimeoutInterval" property. The OrderTimeoutInterval property can be configured from the NOW connection settings. The default value is 90 seconds. Minimum is 30 seconds and maximum is 300 seconds.
The Nest Plus API fails to provide any information in case an "order modification" is rejected. Say you submitted a limit order to buy 100 shares of Reliance at Rs.1000 (assuming last traded price is > Rs. 1000). However if you change the limit order price to say at Rs 600 NSE NOW/NestTrader will reject the order modification. The original order however will remain open at its original price of Rs 1000. In ArthaChitra however, the order will get modified at Rs. 600 as the Nest Plus API fails to notify that the modification has been rejected nor it provides information regarding the orders limit price, stop price or quantity. The user has to take account of these eventualities.
If you place an order directly through NSE NOW/Nest Trader or if your broker places an order for you (say due to MIS square off etc) ArthaChitra has no way to access that information as the Nest Plus API does not provide those information. As such your actual position will differ from the position displayed in ArthaChitra (in the Positions tab in Main View for example).
These are just some of the scenarios and not any comprehensive list.
ArthaChitra tries to address many of the concerns and shortcomings of the Nest Plus API, however you should be careful while using it. ArthaChitra makes order modification/cancellation very easy and if you are an active trader you will surely find value in it. Lets not forget the Nest Plus API is not your best friend it is your only friend.