修复季节性清仓执行时间

This commit is contained in:
boris
2026-07-06 09:40:07 +08:00
parent 831edfc8c6
commit 1d33b29c27
2 changed files with 22 additions and 6 deletions
+18 -5
View File
@@ -7978,9 +7978,12 @@ impl Strategy for PlatformExprStrategy {
continue;
}
exit_symbols.insert(symbol.clone());
order_intents.push(OrderIntent::TargetValue {
order_intents.push(OrderIntent::TimedTargetValue {
symbol: symbol.clone(),
target_value: 0.0,
style: AlgoOrderStyle::Twap,
start_time: Some(delayed_limit_exit_time),
end_time: Some(delayed_limit_exit_time),
reason: "seasonal_stop_window".to_string(),
});
self.forget_position_entry_date(symbol);
@@ -11950,12 +11953,17 @@ mod tests {
assert!(
decision.order_intents.iter().any(|intent| matches!(
intent,
OrderIntent::TargetValue {
OrderIntent::TimedTargetValue {
symbol,
target_value,
start_time,
end_time,
reason,
..
} if symbol == other_symbol
&& *target_value == 0.0
&& *start_time == Some(NaiveTime::from_hms_opt(9, 31, 0).unwrap())
&& *end_time == Some(NaiveTime::from_hms_opt(9, 31, 0).unwrap())
&& reason == "seasonal_stop_window"
)),
"{:?}",
@@ -11964,7 +11972,7 @@ mod tests {
assert!(
!decision.order_intents.iter().any(|intent| matches!(
intent,
OrderIntent::TargetValue {
OrderIntent::TimedTargetValue {
symbol,
reason,
..
@@ -12227,7 +12235,7 @@ mod tests {
assert!(
!decision.order_intents.iter().any(|intent| matches!(
intent,
OrderIntent::TargetValue {
OrderIntent::TimedTargetValue {
symbol,
reason,
..
@@ -12239,12 +12247,17 @@ mod tests {
assert!(
decision.order_intents.iter().any(|intent| matches!(
intent,
OrderIntent::TargetValue {
OrderIntent::TimedTargetValue {
symbol,
target_value,
start_time,
end_time,
reason,
..
} if symbol == other_symbol
&& *target_value == 0.0
&& *start_time == Some(NaiveTime::from_hms_opt(9, 31, 0).unwrap())
&& *end_time == Some(NaiveTime::from_hms_opt(9, 31, 0).unwrap())
&& reason == "seasonal_stop_window"
)),
"{:?}",
+4 -1
View File
@@ -2622,9 +2622,12 @@ impl Strategy for OmniMicroCapStrategy {
.positions()
.keys()
.cloned()
.map(|symbol| OrderIntent::TargetValue {
.map(|symbol| OrderIntent::TimedTargetValue {
symbol,
target_value: 0.0,
style: AlgoOrderStyle::Twap,
start_time: Some(self.intraday_execution_start_time()),
end_time: Some(self.intraday_execution_start_time()),
reason: "seasonal_stop_window".to_string(),
})
.collect(),