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 CaptainJack, 05-29-2026, 05:09 AM
|
0 responses
388 views
0 likes
|
Last Post
by CaptainJack
05-29-2026, 05:09 AM
|
||
|
Started by CaptainJack, 05-29-2026, 12:02 AM
|
0 responses
260 views
0 likes
|
Last Post
by CaptainJack
05-29-2026, 12:02 AM
|
||
|
Started by charlesugo_1, 05-26-2026, 05:03 PM
|
0 responses
218 views
1 like
|
Last Post
by charlesugo_1
05-26-2026, 05:03 PM
|
||
|
Started by DannyP96, 05-18-2026, 02:38 PM
|
1 response
302 views
0 likes
|
Last Post
|
||
|
Started by CarlTrading, 05-11-2026, 05:56 AM
|
0 responses
268 views
0 likes
|
Last Post
by CarlTrading
05-11-2026, 05:56 AM
|

Comment