apple_quant_algorithmic/
order.rs1pub mod dependency;
2mod builder;
3mod client;
4mod execution_expectation;
5mod partial_fill;
6mod remote;
7mod state_goal;
8mod state_update;
9mod timing;
10mod tracker;
11
12use thiserror::Error;
13
14use crate::{
15 volume::{DirectionalIntentVolume, DirectionlessVolume},
16 instrument::InstrumentSpec, liquidity::LiquidityEstimation, price::AbsolutePrice,
17};
18
19pub use builder::*;
20pub use client::*;
21pub use dependency::*;
22pub use execution_expectation::*;
23pub use partial_fill::*;
24pub use remote::*;
25pub use state_goal::*;
26pub use state_update::*;
27pub use timing::*;
28pub use tracker::*;
29
30#[derive(Debug, Error)]
31pub enum DesiredVolumeOrderError {
32 #[error("Order does not have a visible volume desire.")]
33 DesireHidden,
34}
35
36pub trait DesiredVolumeOrder<IS: InstrumentSpec> {
37 fn desired_directionless_volume(
38 &self,
39 ) -> Result<&DirectionlessVolume<IS>, DesiredVolumeOrderError>;
40
41 fn desired_directional_intent_volume(
42 &self,
43 ) -> Result<DirectionalIntentVolume<IS>, DesiredVolumeOrderError>;
44}
45
46pub trait MatchableOrder<IS: InstrumentSpec> {
47 fn is_liquidable(
48 &self,
49 liquidity_estimation: &LiquidityEstimation<IS>,
50 ) -> Option<AbsolutePrice<IS>>;
51}