统一引擎执行规格字段
This commit is contained in:
@@ -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>,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user