补充指定决策日调度测试策略

This commit is contained in:
boris
2026-07-05 09:36:27 +08:00
parent a21ac83f21
commit 8ed2b0df7f
+37 -2
View File
@@ -4251,6 +4251,41 @@ mod tests {
}
}
#[derive(Debug)]
struct ScheduledBuyOnDecisionDateStrategy {
rule: ScheduleRule,
decision_date: NaiveDate,
}
impl Strategy for ScheduledBuyOnDecisionDateStrategy {
fn name(&self) -> &str {
"scheduled_buy_on_decision_date"
}
fn schedule_rules(&self) -> Vec<ScheduleRule> {
vec![self.rule.clone()]
}
fn on_scheduled(
&mut self,
ctx: &StrategyContext<'_>,
rule: &ScheduleRule,
) -> Result<StrategyDecision, super::BacktestError> {
assert_eq!(rule.name, self.rule.name);
if ctx.decision_date != self.decision_date {
return Ok(StrategyDecision::default());
}
Ok(StrategyDecision {
order_intents: vec![OrderIntent::Shares {
symbol: SYMBOL.to_string(),
quantity: 100,
reason: "scheduled_decision_date_buy".to_string(),
}],
..StrategyDecision::default()
})
}
}
#[derive(Debug)]
struct ScheduledEligibleUniverseBuyStrategy {
rule: ScheduleRule,
@@ -4915,9 +4950,9 @@ mod tests {
let result = BacktestEngine::new(
dataset,
ScheduledBuyStrategy {
ScheduledBuyOnDecisionDateStrategy {
rule: ScheduleRule::daily("daily_open_signal", ScheduleStage::OpenAuction),
expected_decision_date: second,
decision_date: second,
},
broker,
config,