stock-trek 0.7.2

Stock Trek time-series analysis
Documentation
use crate::{
    order::{
        order_activation::OrderActivation,
        order_constraint::OrderConstraint,
        order_intent::OrderIntent,
        order_pricing::OrderPricing,
        order_quantity::OrderQuantity,
        order_request::OrderRequest,
        order_side::OrderSide,
        orders::{
            one_cancels_other::{OneCancelsOtherOrderGeneric, OneCancelsOtherOrderRaw},
            one_triggers_oco::OneTriggersOcoOrderGeneric,
            one_triggers_other::OneTriggersOtherOrderGeneric,
            single::{SingleOrderGeneric, SingleOrderRaw},
        },
    },
    values::value::{AssetIdValue, NumberValue},
};

pub struct OrderFactory;

impl OrderFactory {
    pub fn single(
        &self,
        base: AssetIdValue,
        quote: AssetIdValue,
        intent: OrderIntent,
        side: OrderSide,
        timing: OrderActivation<NumberValue>,
        pricing: OrderPricing<NumberValue>,
        quantity: OrderQuantity<NumberValue>,
        constraints: Vec<OrderConstraint>,
    ) -> OrderRequest<AssetIdValue, NumberValue> {
        OrderRequest::Single(SingleOrderGeneric {
            base,
            quote,
            intent,
            side,
            activation: timing,
            pricing,
            quantity,
            constraints,
        })
    }
    pub fn one_cancels_other(
        &self,
        primary: SingleOrderRaw,
        secondary: SingleOrderRaw,
    ) -> OrderRequest<AssetIdValue, NumberValue> {
        OrderRequest::OneCancelsOther(OneCancelsOtherOrderGeneric { primary, secondary })
    }
    pub fn one_triggers_other(
        &self,
        primary: SingleOrderRaw,
        secondary: SingleOrderRaw,
    ) -> OrderRequest<AssetIdValue, NumberValue> {
        OrderRequest::OneTriggersOther(OneTriggersOtherOrderGeneric { primary, secondary })
    }
    pub fn one_triggers_oco(
        &self,
        primary: SingleOrderRaw,
        oco_order: OneCancelsOtherOrderRaw,
    ) -> OrderRequest<AssetIdValue, NumberValue> {
        OrderRequest::OneTriggersOco(OneTriggersOcoOrderGeneric { primary, oco_order })
    }
}