apple-quant-algorithmic 0.3.0

Apple Quant's algorithmic library.
use crate::{
	backend::{OrderIdGenerator, OrdersBackend},
	instrument::{InstrumentData, InstrumentSpec},
	order::{DeferredOrderActions, StateGoal},
	order_manager::{OrderManager, OrdersCapacitySpec},
	timestamp::TickTimestamp, volume::DirectionalExposure,
};

pub trait Strategy<
	IS: InstrumentSpec,
	OB: OrdersBackend<IS>,
	CS: OrdersCapacitySpec,
> {
	#[allow(unused_variables)]
	fn initialize<'instrument_data, 'aggregated_data>(
		&mut self,
		tick_timestamp: &TickTimestamp,
		instrument_data: &InstrumentData<'instrument_data, 'aggregated_data, IS>,
		deferred_order_actions: &mut DeferredOrderActions<IS>,
		order_id_generator: &mut OrderIdGenerator,
	) -> impl Future<Output = anyhow::Result<()>> {
		async {
			Ok(())
		}
	}

	#[allow(unused_variables)]
	fn data_update<'instrument_data, 'aggregated_data>(
		&mut self,
		tick_timestamp: &TickTimestamp,
		instrument_data: &InstrumentData<'instrument_data, 'aggregated_data, IS>,
		order_manager: &OrderManager<IS, CS>,
		directional_exposure: &DirectionalExposure<IS>,
		state_goal: &StateGoal,
		deferred_order_actions: &mut DeferredOrderActions<IS>,
		order_id_generator: &mut OrderIdGenerator,
	) -> impl Future<Output = anyhow::Result<()>> {
		async {
			Ok(())
		}
	}
}