apple-quant-algorithmic 0.1.0

Apple Quant's algorithmic trading api
Documentation
use crate::{
	instrument::{InstrumentData, InstrumentSpec, InstrumentTicker},
	order::{ActiveOrderGoals, ActiveStateGoal, DeferredOrderActions},
	order_manager::{OrderManager, OrdersCapacitySpec},
	strategy::Strategy,
	timestamp::TradeTimestamp,
	volume::DirectionalExposure,
};

use super::{OrderIdGenerator, OrdersBackend};

pub(crate) trait RealtimeDataBackend<
	IS: InstrumentSpec + Send,
	OB: OrdersBackend<IS>,
	OrdersCS: OrdersCapacitySpec,
	S: Strategy<IS, OB, OrdersCS> + Send,
>
{
	fn initialize_realtime(
		&mut self,
		instrument_ticker: &InstrumentTicker,
		recent_trade_timestamp: Option<&TradeTimestamp>,
	) -> impl Future<Output = ()>;

	fn poll_realtime<'instrument_data, 'aggregated_data>(
		&mut self,
		instrument_data: &'instrument_data mut InstrumentData<
			'instrument_data,
			'aggregated_data,
			IS,
		>,
		strategy: &mut S,
		order_manager: &OrderManager<IS, OrdersCS>,
		directional_exposure: &DirectionalExposure<IS>,
		active_order_goals: &ActiveOrderGoals<IS>,
		active_state_goal: &ActiveStateGoal,
		deferred_order_actions: &mut DeferredOrderActions<IS>,
		order_id_generator: &mut OrderIdGenerator,
		recent_trade_timestamp: Option<&TradeTimestamp>,
	) -> impl Future<Output = ()>;
}