stock-trek 0.4.13

Stock Trek time-series analysis
Documentation
use digdigdig3::OrderType;
use serde::{Deserialize, Serialize};
use strum::EnumIter;

#[derive(Debug, Clone, Copy, EnumIter, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[non_exhaustive]
#[repr(u8)]
pub enum OrderCapability {
    Market,
    Limit,
    StopMarket,
    StopLimit,
    TrailingStop,
    OneCancelsOther,
    Bracket,
    Iceberg,
    TimeWeightedAveragePrice,
    PostOnly,
    ImmediateOrCancel,
    FillOrKill,
    GoodTillDate,
    ReduceOnly,
    OneTriggersOther,
    ConditionalPlan,
    DcaRecurring,
}

impl From<OrderType> for OrderCapability {
    fn from(value: OrderType) -> Self {
        match value {
            OrderType::Bracket {
                price: _,
                take_profit: _,
                stop_loss: _,
            } => OrderCapability::Bracket,
            OrderType::ConditionalPlan {
                trigger_price: _,
                trigger_direction: _,
                order_after_trigger: _,
            } => OrderCapability::ConditionalPlan,
            OrderType::DcaRecurring {
                interval_seconds: _,
                total_cycles: _,
                price_limit: _,
            } => OrderCapability::DcaRecurring,
            OrderType::Fok { price: _ } => OrderCapability::FillOrKill,
            OrderType::Gtd {
                price: _,
                expire_time: _,
            } => OrderCapability::GoodTillDate,
            OrderType::Iceberg {
                price: _,
                display_quantity: _,
            } => OrderCapability::Iceberg,
            OrderType::Ioc { price: _ } => OrderCapability::ImmediateOrCancel,
            OrderType::Limit { price: _ } => OrderCapability::Limit,
            OrderType::Market => OrderCapability::Market,
            OrderType::Oco {
                price: _,
                stop_price: _,
                stop_limit_price: _,
            } => OrderCapability::OneCancelsOther,
            OrderType::Oto {
                entry_price: _,
                secondary_order: _,
            } => OrderCapability::OneTriggersOther,
            OrderType::PostOnly { price: _ } => OrderCapability::PostOnly,
            OrderType::ReduceOnly { price: _ } => OrderCapability::ReduceOnly,
            OrderType::StopLimit {
                stop_price: _,
                limit_price: _,
            } => OrderCapability::StopLimit,
            OrderType::StopMarket { stop_price: _ } => OrderCapability::StopMarket,
            OrderType::TrailingStop {
                callback_rate: _,
                activation_price: _,
            } => OrderCapability::TrailingStop,
            OrderType::Twap {
                duration_seconds: _,
                interval_seconds: _,
            } => OrderCapability::TimeWeightedAveragePrice,
        }
    }
}