feat: add decision-scoped buy denials to broker submission

This commit is contained in:
boris
2026-09-08 00:40:10 +08:00
parent bc666c6433
commit bac721e593
9 changed files with 182 additions and 1 deletions
+15
View File
@@ -295,6 +295,7 @@ impl Strategy for HookProbeStrategy {
.borrow_mut()
.push(format!("on_day:{}", ctx.execution_date));
Ok(StrategyDecision {
buy_denials: Default::default(),
rebalance: false,
target_weights: BTreeMap::new(),
exit_symbols: BTreeSet::new(),
@@ -334,6 +335,7 @@ impl Strategy for AuctionOrderStrategy {
_ctx: &StrategyContext<'_>,
) -> Result<StrategyDecision, fidc_core::BacktestError> {
Ok(StrategyDecision {
buy_denials: Default::default(),
rebalance: false,
target_weights: BTreeMap::new(),
exit_symbols: BTreeSet::new(),
@@ -377,6 +379,7 @@ impl Strategy for FuturesOrderStrategy {
return Ok(StrategyDecision::default());
}
Ok(StrategyDecision {
buy_denials: Default::default(),
rebalance: false,
target_weights: BTreeMap::new(),
exit_symbols: BTreeSet::new(),
@@ -413,6 +416,7 @@ impl Strategy for FuturesLimitOrderStrategy {
return Ok(StrategyDecision::default());
}
Ok(StrategyDecision {
buy_denials: Default::default(),
order_intents: vec![OrderIntent::Futures {
intent: FuturesOrderIntent::limit_open(
"IF2501",
@@ -444,6 +448,7 @@ impl Strategy for FuturesInvalidTickLimitStrategy {
return Ok(StrategyDecision::default());
}
Ok(StrategyDecision {
buy_denials: Default::default(),
order_intents: vec![OrderIntent::Futures {
intent: FuturesOrderIntent::limit_open(
"IF2501",
@@ -475,6 +480,7 @@ impl Strategy for FuturesClosedPhaseOrderStrategy {
return Ok(StrategyDecision::default());
}
Ok(StrategyDecision {
buy_denials: Default::default(),
order_intents: vec![OrderIntent::Futures {
intent: FuturesOrderIntent::open(
"IF2501",
@@ -506,6 +512,7 @@ impl Strategy for FuturesAboveUpperLimitStrategy {
return Ok(StrategyDecision::default());
}
Ok(StrategyDecision {
buy_denials: Default::default(),
order_intents: vec![OrderIntent::Futures {
intent: FuturesOrderIntent::limit_open(
"IF2501",
@@ -537,6 +544,7 @@ impl Strategy for FuturesDepthLimitOrderStrategy {
return Ok(StrategyDecision::default());
}
Ok(StrategyDecision {
buy_denials: Default::default(),
order_intents: vec![OrderIntent::Futures {
intent: FuturesOrderIntent::limit_open(
"IF2501",
@@ -720,6 +728,7 @@ impl Strategy for LimitCarryStrategy {
}
self.issued = true;
Ok(StrategyDecision {
buy_denials: Default::default(),
rebalance: false,
target_weights: BTreeMap::new(),
exit_symbols: BTreeSet::new(),
@@ -803,6 +812,7 @@ impl Strategy for UniverseDirectiveStrategy {
_ => Vec::new(),
};
Ok(StrategyDecision {
buy_denials: Default::default(),
rebalance: false,
target_weights: BTreeMap::new(),
exit_symbols: BTreeSet::new(),
@@ -844,6 +854,7 @@ impl Strategy for MinuteProbeStrategy {
_ctx: &StrategyContext<'_>,
) -> Result<StrategyDecision, fidc_core::BacktestError> {
Ok(StrategyDecision {
buy_denials: Default::default(),
rebalance: false,
target_weights: BTreeMap::new(),
exit_symbols: BTreeSet::new(),
@@ -885,6 +896,7 @@ impl Strategy for MinuteProbeStrategy {
}
self.ordered = true;
Ok(StrategyDecision {
buy_denials: Default::default(),
rebalance: false,
target_weights: BTreeMap::new(),
exit_symbols: BTreeSet::new(),
@@ -987,6 +999,7 @@ impl Strategy for OrderInspectionStrategy {
_ctx: &StrategyContext<'_>,
) -> Result<StrategyDecision, fidc_core::BacktestError> {
Ok(StrategyDecision {
buy_denials: Default::default(),
rebalance: false,
target_weights: BTreeMap::new(),
exit_symbols: BTreeSet::new(),
@@ -1030,6 +1043,7 @@ impl Strategy for AccountFlowStrategy {
return Ok(StrategyDecision::default());
}
Ok(StrategyDecision {
buy_denials: Default::default(),
rebalance: false,
target_weights: BTreeMap::new(),
exit_symbols: BTreeSet::new(),
@@ -4134,6 +4148,7 @@ impl Strategy for BuyMissingRowThenHoldStrategy {
) -> Result<StrategyDecision, fidc_core::BacktestError> {
if ctx.execution_date == d(2025, 5, 26) {
return Ok(StrategyDecision {
buy_denials: Default::default(),
rebalance: false,
target_weights: BTreeMap::new(),
exit_symbols: BTreeSet::new(),