Fixed bug where if trailstop order is triggered it would sell [buy] at the high [low] of a bar.#52
Open
Bosma wants to merge 2 commits intobraverock:masterfrom
Open
Fixed bug where if trailstop order is triggered it would sell [buy] at the high [low] of a bar.#52Bosma wants to merge 2 commits intobraverock:masterfrom
Bosma wants to merge 2 commits intobraverock:masterfrom
Conversation
it would sell [buy] at the high [low] of a bar.
Previously:
at line 376 a new order replaces the previous trailstop order with order price
new.order.price - order.threshold
since the order is being replaced, we can say
new.order.price != orderPrice,
and in the long case, this means
new.order.price = previous_bar_high + order.threshold
therefore, the new order price on line 380 is:
price = new.order.price - order.threshold
= previous_bar_high + order.threshold - order.threshold
= previous_bar_high
Since, in the long case, the next bar is most likely under
the high of the previous bar, the order is fired and you sell
the top of the previous bar.
analogolous for the short case.
So, the order.threshold subtraction on line 380 was removed, since
the threshold is already considered in line 366 and 368.
Collaborator
|
If this corrects the OHLC case, it seems like it should also be applied to the BBO case. We currently subtract |
Author
|
It looks like it also needs the change I submitted. I don't understand why lines 301 and 315 aren't uncommented, since if mvstop is true, new.order.price is always set to mktPrice - absThreshold. It would only be set to orderPrice is mvstop is false, but nothing happens in that case. added commit to change that, too. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Previously:
at line 376 a new order replaces the previous trailstop order with order price
new.order.price - order.thresholdsince the order is being replaced, we can say
new.order.price != orderPriceand in the long case, this means
new.order.price = previous_bar_high + order.thresholdtherefore, the new order price on line 380 is:
Since, in the long case, the next bar is most likely under
the high of the previous bar, the order is fired and you sell
the top of the previous bar.
analogous for the short case.
So, the order.threshold subtraction on line 380 was removed, since
the threshold is already considered in line 366 and 368.