SellShort limit orders works fine and this is surprice for me, I didn't expect.
Announcement
Collapse
No announcement yet.
Partner 728x90
Collapse
NinjaTrader
ExitLongStop & ExitLongLimit
Collapse
X
-
Don't do this from OnOrderUpdate, use OnExecution instead.Originally posted by nordseven View PostWhen i'm use ExitLongStop() with ExitLongLimit(), ExitLongLimit() always have been Cancelled. Why?
My onOrderUpdate() code:
Code:[LEFT]if (myEntryOrder != null && myEntryOrder == order) { if (order.OrderState == OrderState.Filled) { if (myStopOrder != null) { CancelOrder(myStopOrder); } if (myProfitOrder != null) { CancelOrder(myProfitOrder); } myStopOrder = ExitLongStop(0, true, qty, stopPrice, "long [B][COLOR=Red]stop[/COLOR][/B]", "long position"); myProfitOrder = ExitLongLimit(0, true, qty, profitPrice, "long [COLOR=Red][B]target[/B][/COLOR]", "long position"); myEntryOrder = null;[/LEFT] } }
After moving this code to OnExecution, remove these lines,
Also recommend you use unique signal names, see changes in red above.Code:if (myStopOrder != null) { CancelOrder(myStopOrder); } if (myProfitOrder != null) { CancelOrder(myProfitOrder); }Last edited by bltdavid; 02-27-2016, 11:22 AM.
Comment
-
I'm tried to use onExecution() before, but don't changing name (long stop, long profit). Now it works, thank you!
Little question!
If i'm move everything to onExecution() why i must remove lines
onExecution() do something for canceling my orders?Code:if (myStopOrder != null) { CancelOrder(myStopOrder); } if (myProfitOrder != null) { CancelOrder(myProfitOrder); }Last edited by nordseven; 02-29-2016, 08:52 AM.
Comment
-
Because they should already be null. Other code elsewhere is responsible for making sure they become null.Originally posted by nordseven View PostI'm tried to use onExecution() before, but don't changing name (long stop, long profit). Now it works, thank you!
Little question!
If i'm move everything to onExecution() why i must remove lines
onExecution() do something for canceling my orders?Code:if (myStopOrder != null) { CancelOrder(myStopOrder); } if (myProfitOrder != null) { CancelOrder(myProfitOrder); }
If they are not null at this point, inside OnExecution, you actually have a bigger problem.
Think about it carefully: why possibly would a leftover stop or target still exist such that you need to cancel it just before submitting a new stop and target order? That's not how it (**) works.
(**) By "it" I mean the flow of order management, or in other words: the dance between OnOrderUpdate and OnExecution and "who sets who to null, and when".
Comment
Latest Posts
Collapse
| Topics | Statistics | Last Post | ||
|---|---|---|---|---|
|
Started by charlesugo_1, 05-26-2026, 05:03 PM
|
0 responses
51 views
0 likes
|
Last Post
by charlesugo_1
05-26-2026, 05:03 PM
|
||
|
Started by DannyP96, 05-18-2026, 02:38 PM
|
1 response
142 views
0 likes
|
Last Post
|
||
|
Started by CarlTrading, 05-11-2026, 05:56 AM
|
0 responses
160 views
0 likes
|
Last Post
by CarlTrading
05-11-2026, 05:56 AM
|
||
|
Started by CarlTrading, 05-10-2026, 08:12 PM
|
0 responses
96 views
0 likes
|
Last Post
by CarlTrading
05-10-2026, 08:12 PM
|
||
|
Started by Hwop38, 05-04-2026, 07:02 PM
|
0 responses
275 views
0 likes
|
Last Post
by Hwop38
05-04-2026, 07:02 PM
|

Comment