czsc-trader 1.0.0

Multi-strategy trading engine of the czsc framework (most users should depend on the `czsc` facade instead): signal compilation, CzscTrader/CzscSignals state machines, parameter optimization.
use czsc_core::objects::position::Position;

#[derive(Debug, Clone)]
pub struct CompiledPosition {
    pub name: String,
    pub interval: i64,
    pub timeout: i32,
    pub stop_loss: f64,
    pub event_count: usize,
}

#[derive(Debug, Clone, Default)]
pub struct CompiledPositionPlan {
    pub positions: Vec<CompiledPosition>,
}

pub fn compile_positions(positions: &[Position]) -> CompiledPositionPlan {
    let positions = positions
        .iter()
        .map(|p| CompiledPosition {
            name: p.name.clone(),
            interval: p.interval,
            timeout: p.timeout,
            stop_loss: p.stop_loss,
            event_count: p.opens.len() + p.exits.len(),
        })
        .collect();
    CompiledPositionPlan { positions }
}