Skip to main content

apple_quant_algorithmic/order/dependency/client/
cancel.rs

1use 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}