apple_quant_algorithmic/order/dependency/client/
cancel.rs1use crate::{
2 backend::{LocalOrderId, OrderIdGenerator, OrdersBackend},
3 instrument::InstrumentSpec,
4 order::{ActiveOrderGoals, ActiveStateGoal, OrderDependency, TriggerError},
5 order_manager::{OrderManager, OrdersCapacitySpec},
6 timestamp::TickTimestamp,
7 volume::DirectionalExposure,
8};
9
10#[derive(Debug, Clone, PartialEq, Eq, Hash)]
11pub struct CancelClientOrder {
12 pub local_order_id: LocalOrderId,
13}
14
15impl<IS: InstrumentSpec> OrderDependency<IS> for CancelClientOrder {
16 async fn trigger<OB: OrdersBackend<IS>, CS: OrdersCapacitySpec>(
17 &self,
18 tick_timestamp: &TickTimestamp,
19 order_manager: &mut OrderManager<IS, CS>,
20 orders_backend: &mut OB,
21 order_id_generator: &mut OrderIdGenerator,
22 directional_exposure: &mut DirectionalExposure<IS>,
23 active_order_goals: &mut ActiveOrderGoals<IS>,
24 active_state_goal: &mut ActiveStateGoal,
25 ) -> Result<(), TriggerError>
26 where
27 IS: Send,
28 {
29 order_manager
30 .pending_client_orders
31 .remove(
32 directional_exposure,
33 &self.local_order_id,
34 )?;
35
36 Ok(())
37 }
38}