Thanks
Announcement
Collapse
No announcement yet.
Partner 728x90
Collapse
NinjaTrader
Strategy "exited a short position" twice, therefore entering a long position...?
Collapse
X
-
Strategy "exited a short position" twice, therefore entering a long position...?
My Strategy "exited a short position" twice, and therefore enetered a long position on the 2nd "exit", since the order size is only 1. How do I prevent my strategy from "exiting twice" and thus falsely entering trades..? Is this a known glitch that occurs if you don't write your entries and exits some specific way, or is my instance just being buggy maybe?
Thanks
Tags: None
-
Hello agclub,
Thank you for your post.
Are you perhaps calling an exit order and an entry order on the same pass of OnBarUpdate? This can lead to the strategy position entering the opposite position with double the quantity or will result in an Overfill.
When calling an entry method in the opposite direction of your position this will cause your position to be reversed. NinjaTrader will automatically submit an order to close your existing position and then enter an order to enter you into the opposite position.
If you exit and then call an entry method in the same run of OnBarUpdate, the OnPositionUpdate() will not have yet run and NinjaTrader will not have known that your position is closed. This will cause both actions to complete and end up sending 3 orders. The first order is the exit position from your exit method, the second order is to close the position from NinjaTrader automatically reversing your position, the third order is to enter you into the opposite position.
The result is that either the script will double the quantity when it reverses or it will cause an overfill and stop the script.
This is discussed further in this post: https://forum.ninjatrader.com/forum/...16#post1036616
Please let us know if this doesn't guide you in the right direction.
-
Hi Gaby. Thanks for the reply.Originally posted by NinjaTrader_Gaby View PostHello agclub,
Thank you for your post.
Are you perhaps calling an exit order and an entry order on the same pass of OnBarUpdate? This can lead to the strategy position entering the opposite position with double the quantity or will result in an Overfill.
When calling an entry method in the opposite direction of your position this will cause your position to be reversed. NinjaTrader will automatically submit an order to close your existing position and then enter an order to enter you into the opposite position.
If you exit and then call an entry method in the same run of OnBarUpdate, the OnPositionUpdate() will not have yet run and NinjaTrader will not have known that your position is closed. This will cause both actions to complete and end up sending 3 orders. The first order is the exit position from your exit method, the second order is to close the position from NinjaTrader automatically reversing your position, the third order is to enter you into the opposite position.
The result is that either the script will double the quantity when it reverses or it will cause an overfill and stop the script.
This is discussed further in this post: https://forum.ninjatrader.com/forum/...16#post1036616
Please let us know if this doesn't guide you in the right direction.
...and I see... Hmmm, so what is the typical solution to this? I need to have multiple runs of OnBarUpdate ?? Like, 1 section for entries and a separate 1 for exits? Or I need to look into using OnOrderUpdate?
Thanks
-mikeLast edited by agclub; 04-22-2024, 09:40 PM.
Comment
-
you should have a bool to check if you're in 1 position long or short, then another check to see if you're flat and if there are any pending orders. This eliminated my overfill issues.Originally posted by agclub View Post
Hi Gaby. Thanks for the reply.
...and I see... Hmmm, so what is the typical solution to this? I need to have multiple runs of OnBarUpdate ?? Like, 1 section for entries and a separate 1 for exits? Or I need to look into using OnOrderUpdate?
Thanks
-mike
Comment
-
Hello agclub,
If you want to simply reverse the position, call an entry order in the opposite direction of the position without calling an exit method first. For example if the position is long, then call EnterShort(). You don't need to call ExitLong() to reverse the position.
Please let us know if you have any further questions.
Comment
-
Hi gaby. I think its possible my original question was misunderstood. I never wanted to reverse a position. If you see my screenshot above, the "GoS" which is a short entry, exited twice. (ExS, and ExS another time) Thus, on the second time it entered a long trade. I want to prevent this double exiting from occurring at all.Originally posted by NinjaTrader_Gaby View PostHello agclub,
If you want to simply reverse the position, call an entry order in the opposite direction of the position without calling an exit method first. For example if the position is long, then call EnterShort(). You don't need to call ExitLong() to reverse the position.
Please let us know if you have any further questions.
Comment
-
Hello agclub,
To understand why the script is behaving as it is, such as placing orders or not placing orders when expected, it is necessary to add prints to the script that print the values used for the logic of the script to understand how the script is evaluating.
In the strategy add prints (outside of any conditions) that print the date time of the bar and all values compared in every condition that places an order.
The prints should include the time of the bar and should print all values from all variables and all hard coded values in all conditions that must evaluate as true for this action to be triggered. It is very important to include a text label for each value and for each comparison operator in the print to understand what is being compared in the condition sets.
Prints will appear in the NinjaScript Output window (New > NinjaScript Output window).
Further, enable TraceOrders which will let us know if any orders are being ignored and not being submitted when the condition to place the orders is evaluating as true.
I am happy to assist you with analyzing the output from the output window.
Run or backtest the script and when the output from the output window appears save this by right-clicking the output window and selecting Save As... -> give the output file a name and save -> then attach the output text file to your reply.
Below is a link to a forum post that demonstrates using informative prints to understand behavior and includes a link to a video recorded using the Strategy Builder to add prints.
Please let me know if I may further assist with analyzing the output or if you need any assistance creating a print or enabling TraceOrders.
Comment
Latest Posts
Collapse
| Topics | Statistics | Last Post | ||
|---|---|---|---|---|
|
Started by NullPointStrategies, Yesterday, 05:17 AM
|
0 responses
65 views
0 likes
|
Last Post
|
||
|
Started by argusthome, 03-08-2026, 10:06 AM
|
0 responses
139 views
0 likes
|
Last Post
by argusthome
03-08-2026, 10:06 AM
|
||
|
Started by NabilKhattabi, 03-06-2026, 11:18 AM
|
0 responses
75 views
0 likes
|
Last Post
|
||
|
Started by Deep42, 03-06-2026, 12:28 AM
|
0 responses
45 views
0 likes
|
Last Post
by Deep42
03-06-2026, 12:28 AM
|
||
|
Started by TheRealMorford, 03-05-2026, 06:15 PM
|
0 responses
50 views
0 likes
|
Last Post
|

Comment