GTT Order: Logically incorrect key nomenclature

Namaskara,

GTT order trigger type is as follows:

|rules.trigger_type|true|string|Specifies the condition for triggering the order. The ENTRY strategy can have ABOVE, BELOW, or IMMEDIATE, whereas TARGET and STOPLOSS strategies can only have IMMEDIATE.
Possible values: BELOW, ABOVE, IMMEDIATE

BELOW - The order is triggered when the market price drops below the defined trigger price.
ABOVE - The order is triggered when the market price rises above the defined trigger price.
IMMEDIATE - The order is triggered when the market price matches the defined trigger price.|
| — | — | — |

Here Above and Below are correct … but IMMEDIATE does not suit the context.

Above and Below are price (amount, money) related.
IMMEDIATE is temporal (time) related.

They dont match.

Above, Below and At are a logical group.

Eg: Buy ABOVE the LTP, Sell BELOW the LTP or BUY AT the Trigger Price.

Immediate means IOC. Either you immediately or not…

LTP can at my trigger price after 10 minutes when my order triggers, that does not mean immediate… …

Logically ABOVE, BELOW and AT are correct. Immediate is out of context ! here.

Regards
Rathnadhar K V

Here in multiple legs, upstox is explicitly checking for LTP to match the trigger price and it executes target or stoploss leg immediately based on it. But for single leg when you choose IMMEDIATE it will place order instantly irrespective of LTP.

I know that …but IMMEDIATELY means at the instance of creating the order (like IOC).

Now at the time of order creation if the price is between target and SL .. then immediate has no meaning… It has meaning only AT target or AT stoploss…

That means when price is at either Target or Stop loss then execute the order immediately … hence “AT” more appropriate word in that context.

Namaskara Jageesh,

it was wonderful talking to you. Thanks for your help.

I placed an GTT IMMEDIATE buy order (manually) in live market. It behaves in way that it was NOT supposed to behave (any how you cant expect anything better from UPSTOX).

My IMMEDIATE .. order prices as : 95
CMP was : 93…

As per documentation the GTT should get triggered when the price reaches 95.

BUT NO
It got executed at 93!!! that is crazy…that order promptly this SL and i lost.

That mean IMMEDIATE behaves as buy-limit order!!! …

If that is the case , then its more like IOC order than trigger at desired price order.

I am repeating, IMMEDIATE is a disastrous nomenclature that is confusing to the core…
Implementation of that is another disaster!!

Regards
Rathnadhar K V

Hi @RathnadharKV
In this context, an Immediate order means that a limit order is placed on the exchange immediately when the trigger price is hit.
For example, if you’re buying a stock and the current LTP (Last Traded Price) is ₹95, and you set a trigger price of ₹93, the order will be placed immediately at ₹93 — since ₹93 is a better buying price than ₹95.

However, if you only want to buy the stock once the price crosses ₹95, you should place an ABOVE GTT order with a trigger price of ₹95.
This order will only be triggered if the stock price rises above ₹95.

For more details, please refer to this post:
Understanding GTT Orders on Upstox: Mechanics and Working

Thanks!

Dear Ketan

Please read my post … I take pains in writing detailed posts.

There are 3 choices : Buy Above, Buy Below and Immediate.

I can understand Buy Above and Buy Below…

But the nomenclature of IMMEDIATE IS CONFUSING AND A DISASTER. I have clearly stated that you have mixed Price action and Temporal nomenclature when they should not to be mixed. But for best know reasons this confusing nomenclature has be incorporated (disaster in my opinion).

Now coming to your explanation… i clearly stated that my IMMEDIATE price was INR 95 and cmp was INR 93.

If I wanted best price, I would decided on “BUY BELOW”…BUT I decided on “IMMEDIATE”… with the belief that the order gets triggered at 95 (save some slippages).

Now it got filled at 93. … which WAS NOT MY INTENTION. This is a irrational behavior. Because my decision was to buy at 95. I DONT WANT BETTER PRICE IN THIS CONTEXT. its plain and clear. But your system executed the order and the price went upto 94 and reversed. It promptly hit SL. I lost the money but you got the brokerage.

So please, kindly, I want to let you know I know English and know to decide on the order trigger type.

But if UPSTOX implementation is that the nomenclature is IMMEDIATE but it behaves as BUY BELOW, then there is IMPLEMENTATION issue (The intent of this implementation is also questionable.)

So if you IMMEDIATE IS context dependent, then scrap it. BUY BELOW and BUY ABOVE will be suffice to execute the order with much clear outcome.

Regards
Rathnadhar K V

I have asked same thing to do long earlier but as usual they think we are dumb so they just ask us to do this and do that… But won’t think that what user wants. They just try to ignore to change the system. I really don’t understand what is the use of IMMEDIATE condition as you can place immediate order only if market is opened. Same can be achieved with regular limit order as both works same. Also you can achieve same using BELOW condition. I really don’t understand in which case immediate condition is useful? Instead we need condition like AT which will buy at specified price only when market price reach there irrespective of higher or lower. I want to buy at 95 whether market is running at 100 or 80. I want my order to be executed when market reaches at 95.

Namaskara,

We are dumbos, let’s accept that. Dumbos for trusting UPSTOX. Dumbos for requesting a better API version. Dumbos for reviewing the current mess of an API implementation. Dumbos, trusting that UPSTOX engineers will reply to our queries on time.

I was of the opinion that UPSTOX will have a good API that I can translate to C++ and use it. But as I began porting one API after another it soon became that the whole API implementation (v2/V3) is an absolute absolute absolute mess. BullS***t… The less about the documentation of that the better. What I thought I will finish in 3 days has extended for weeks still not completed and tested.

Its very glaring that the team lacks coordination, in-depth knowledge of data processing, lack of standardization and perhaps complete breakdown of the software implementation process. I, having worked in leading 6 sigma software companies, can’t believe that API in its current state. Worst still, the denial or rather the justification of the disastrous implementation, That means, in near future, I don’t see any improvement in the API, no better versions.

The community is meant to improve the product at a rapid phase (like Linux). That calls for active participation of all stakeholders. But if the root itself is rusted to react to any message, the community will die a natural death. It’s there only as a show piece… rather than serving any useful purpose. This is my firm opinion.

Sadly they don’t see the storm in the community reflects on the UPSTOX brand image, perhaps they don’t care about it at all…

All that results in you and me being dumbos to trust a meaningful reply.

Regards
Rathnadhar K V

Hi @RathnadharKV

We’ll have the documentation updated asap. Thanks for pointing it out.

On a quick note here:

  1. “Immediate” sends a LIMIT order to the exchange with “DAY” as the validity.
  2. For “above” and “below”, the order is kept at our end till the selected trigger happens and on trigger, the order is sent to the exchange.

Hi @MohitGolecha

Can you please look into this and reply the use of Immediate condition?

Namaskara,

Oh my God.. it makes GTT order supremely indeterministic. Absolute disaster.

Your current logic is : trigger_order <= trigger_price, expire at end of day.. Is a lunatic. I have to be blunt here.

Just remove the ‘<’ sign and remove end of day restriction. That is all that is required to make the system deterministic. More deterministic a system is, the better it behaves.

I hope you got the meaning of deterministic in this context. I want to know EXACTLY what CMP triggers my order. R:R ratio is then well defined.

Regards
Rathnadhar K V

Noted @RathnadharKV

Shall work on it

@MohitGolecha

We need to buy at specific price regardless of market price with default yearly expiry. and it should work like if market price matches trigger price then place order and it should be cancelled immediately if price jumps over MPP price level.

Just think deep and research, why users will use “Immediate” order when they have better option like “Below”. What is the use case where user will think to use “Immediate” order, I don’t understand it.

  1. When you use immediate order, your margin got blocked while for below order you can place as many as you want.
  2. Just to cancel order after end of day, we can’t use immediate order. We can write that code in our program to cancel Below order after end of day if we want.
  3. Instead of Immediate order, we need “AT” order to buy exactly at specified price. i.e. we want to buy at 95 regardless of CMP whether market is running at 80 or 120 we need to execute our GTT order only when CMP reaches 95. You can use MPP here so that we can specify it such as trigger_price 95, MPP 1% so that when market reaches 95 you place limit order with 95+1% which is 95.95 so order can be executed between 95 and 95.95 which is acceptable. But here you also need to make it IOC so that if price jumps over 95.95 then order gets cancelled instead of waiting for price to drop again at our limit price.

This is what other brokers are allowing, They don’t have ABOVE, BELOW or IMMEDIATE. They just have trigger_price and limit_price which we can decide by our own that at what price we need to execute our orders. And it is pretty simple than this whole confused mechanism.

Why we need to think either we need to buy above or below, that is not our task that is software’s task to decide whether it should place above or below order. We only need to think about the price at which we need the entry. We should have only one option like to enter the price where you need the entry, rest all should be decided by your software. That is what I had built if I was the backend developer at Upstox.

I have been working since last 12 years in IT industry where I deliver best of available option to my client, my client doesn’t tell me you should add this or that. They only specify their product’s idea but how to make it best that is on my hand. There are many basic features which are missing that we need to tell you everytime which your team doesn’t thought about.