apple-quant-algorithmic 0.1.0

Apple Quant's algorithmic trading api
Documentation
use crate::{
	backend::{OrderIdGenerator, OrdersBackend},
	instrument::{InstrumentData, InstrumentSpec},
	order::{ActiveOrderGoals, ActiveStateGoal, DeferredOrderActions},
	order_manager::{OrderManager, OrdersCapacitySpec},
	timestamp::TickTimestamp,
	volume::DirectionalExposure,
};

pub trait Strategy<IS: InstrumentSpec + Send, 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>,
		order_manager: &OrderManager<IS, CS>,
		directional_exposure: &DirectionalExposure<IS>,
		active_order_goals: &ActiveOrderGoals<IS>,
		active_state_goal: &ActiveStateGoal,
		deferred_order_actions: &mut DeferredOrderActions<IS>,
		order_id_generator: &mut OrderIdGenerator,
	) -> impl Future<Output = ()> {
		async {}
	}

	#[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>,
		active_order_goals: &ActiveOrderGoals<IS>,
		active_state_goal: &ActiveStateGoal,
		deferred_order_actions: &mut DeferredOrderActions<IS>,
		order_id_generator: &mut OrderIdGenerator,
	) -> impl Future<Output = ()> {
		async {}
	}
}