Improve validations for StopLimitOrder #2593
Merged
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.
Implemented
new_checked
forStopLimitOrder
, bringing it in line withMarketOrder
,LimitOrder
,LimitIfTouchedOrder
, andMarketToLimitOrder
.Dropped the side-specific trigger/limit inequality
BUY orders may now use either
trigger ≥ limit
ortrigger ≤ limit
; the mirror applies to SELL.This unblocks “limit-if-touched” and similar strategies that were previously rejected.
Added complete domain-level validations:
display_qty ≤ quantity
TimeInForce::Gtd
⇒ non-zeroexpire_time
requiredLegacy
new
now wrapsnew_checked
, preserving the historical panic-on-error behaviour for external callers.Extended rust-doc explaining the two legal stop-limit styles (break-out vs. mean-reversion).
Added a concise
Display
implementation for easier debugging/logging.Unit-tests (4) live in the same module and cover the happy path plus each validation branch.
Type of change
Fixes #2529
Note: this PR takes into consideration changes introduced in this commit c44604c