统一引擎执行规格字段

This commit is contained in:
boris
2026-08-26 23:18:43 +08:00
parent e867aea3b1
commit 68bff3f661
+56 -34
View File
@@ -146,27 +146,27 @@ pub struct StrategyExecutionSpec {
pub struct StrategyEngineConfig {
#[serde(default)]
pub frequency: Option<String>,
#[serde(default)]
#[serde(default, alias = "template_id")]
pub template_id: Option<String>,
#[serde(default, alias = "benchmark_symbol")]
pub benchmark_symbol: Option<String>,
#[serde(default, alias = "signal_symbol")]
pub signal_symbol: Option<String>,
#[serde(default)]
#[serde(default, alias = "rank_limit")]
pub rank_limit: Option<usize>,
#[serde(default)]
#[serde(default, alias = "refresh_rate")]
pub refresh_rate: Option<usize>,
#[serde(default)]
#[serde(default, alias = "rsi_rate")]
pub rsi_rate: Option<f64>,
#[serde(default)]
#[serde(default, alias = "dynamic_range")]
pub dynamic_range: Option<DynamicRangeConfig>,
#[serde(default)]
#[serde(default, alias = "stock_ma_filter")]
pub stock_ma_filter: Option<MovingAverageFilterConfig>,
#[serde(default)]
#[serde(default, alias = "index_throttle")]
pub index_throttle: Option<IndexThrottleConfig>,
#[serde(default)]
#[serde(default, alias = "stop_loss_multiplier")]
pub stop_loss_multiplier: Option<f64>,
#[serde(default)]
#[serde(default, alias = "take_profit_multiplier")]
pub take_profit_multiplier: Option<f64>,
#[serde(default, alias = "matching_type")]
pub matching_type: Option<String>,
@@ -174,9 +174,17 @@ pub struct StrategyEngineConfig {
pub slippage_model: Option<String>,
#[serde(default, alias = "slippage_value")]
pub slippage_value: Option<f64>,
#[serde(default, alias = "slippage_impact_coefficient")]
#[serde(
default,
alias = "slippage_impact_coefficient",
alias = "slippageImpact"
)]
pub slippage_impact_coefficient: Option<f64>,
#[serde(default, alias = "slippage_volatility_coefficient")]
#[serde(
default,
alias = "slippage_volatility_coefficient",
alias = "slippageVolatility"
)]
pub slippage_volatility_coefficient: Option<f64>,
#[serde(default, alias = "slippage_max_value", alias = "slippage_max_rate")]
pub slippage_max_value: Option<f64>,
@@ -199,10 +207,24 @@ pub struct StrategyEngineConfig {
pub stamp_tax_rate_after_change: Option<f64>,
#[serde(default, alias = "stamp_tax_change_date")]
pub stamp_tax_change_date: Option<String>,
#[serde(default, alias = "volume_limit")]
#[serde(
default,
alias = "volume_limit",
alias = "volumeLimitEnabled",
alias = "volume_limit_enabled"
)]
pub volume_limit: Option<bool>,
#[serde(default, alias = "liquidity_limit")]
#[serde(
default,
alias = "liquidity_limit",
alias = "liquidityLimitEnabled",
alias = "liquidity_limit_enabled"
)]
pub liquidity_limit: Option<bool>,
#[serde(default, alias = "inactive_limit")]
pub inactive_limit: Option<bool>,
#[serde(default, alias = "same_day_buy_close_mark_at_fill")]
pub same_day_buy_close_mark_at_fill: Option<bool>,
#[serde(default, alias = "volume_percent")]
pub volume_percent: Option<f64>,
#[serde(default, alias = "risk_policy")]
@@ -213,9 +235,9 @@ pub struct StrategyEngineConfig {
pub rebalance_cash_mode: Option<String>,
#[serde(default, alias = "sell_then_buy_delay_slippage_rate")]
pub sell_then_buy_delay_slippage_rate: Option<f64>,
#[serde(default)]
#[serde(default, alias = "dividend_reinvestment")]
pub dividend_reinvestment: Option<bool>,
#[serde(default)]
#[serde(default, alias = "weak_market_shrink_overweight_threshold")]
pub weak_market_shrink_overweight_threshold: Option<f64>,
#[serde(
default,
@@ -225,9 +247,9 @@ pub struct StrategyEngineConfig {
alias = "maxHoldingDays"
)]
pub max_holding_days: Option<i64>,
#[serde(default)]
#[serde(default, alias = "rebalance_schedule")]
pub rebalance_schedule: Option<StrategyExpressionScheduleConfig>,
#[serde(default)]
#[serde(default, alias = "skip_windows")]
pub skip_windows: Vec<SkipWindowConfig>,
}
@@ -584,54 +606,54 @@ fn normalize_risk_policy_aliases_in_value(value: &mut Value) -> Result<(), Strin
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct DynamicRangeConfig {
#[serde(default)]
#[serde(default, alias = "base_index_level")]
pub base_index_level: Option<f64>,
#[serde(default)]
#[serde(default, alias = "base_cap_floor")]
pub base_cap_floor: Option<f64>,
#[serde(default)]
#[serde(default, alias = "cap_span")]
pub cap_span: Option<f64>,
#[serde(default)]
pub xs: Option<f64>,
/// Padding ratio to expand the market cap range (e.g., 0.5 means 50% of span)
#[serde(default)]
#[serde(default, alias = "padding_ratio")]
pub padding_ratio: Option<f64>,
/// Minimum padding in billion yuan
#[serde(default)]
#[serde(default, alias = "min_padding")]
pub min_padding: Option<f64>,
/// Maximum padding in billion yuan
#[serde(default)]
#[serde(default, alias = "max_padding")]
pub max_padding: Option<f64>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct MovingAverageFilterConfig {
#[serde(default)]
#[serde(default, alias = "short_days")]
pub short_days: Option<usize>,
#[serde(default)]
#[serde(default, alias = "mid_days")]
pub mid_days: Option<usize>,
#[serde(default)]
#[serde(default, alias = "long_days")]
pub long_days: Option<usize>,
#[serde(default)]
#[serde(default, alias = "volume_short_days", alias = "volumeShort")]
pub volume_short_days: Option<usize>,
#[serde(default)]
#[serde(default, alias = "volume_long_days", alias = "volumeLong")]
pub volume_long_days: Option<usize>,
#[serde(default)]
#[serde(default, alias = "rsi_rate")]
pub rsi_rate: Option<f64>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct IndexThrottleConfig {
#[serde(default)]
#[serde(default, alias = "short_days")]
pub short_days: Option<usize>,
#[serde(default)]
#[serde(default, alias = "long_days")]
pub long_days: Option<usize>,
#[serde(default)]
#[serde(default, alias = "rsi_rate")]
pub rsi_rate: Option<f64>,
#[serde(default)]
#[serde(default, alias = "defensive_exposure")]
pub defensive_exposure: Option<f64>,
#[serde(default)]
#[serde(default, alias = "full_exposure")]
pub full_exposure: Option<f64>,
}