apple-quant-algorithmic 0.1.0

Apple Quant's algorithmic trading api
Documentation
use crate::{backend::LocalOrderId, instrument::InstrumentSpec};

use super::OrderGoal;

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct ClientOrderTracker(LocalOrderId);

impl ClientOrderTracker {
	pub(crate) fn new(local_order_id: LocalOrderId) -> Self {
		Self(local_order_id)
	}

	pub fn as_local_order_id(&self) -> &LocalOrderId {
		&self.0
	}

	pub fn into_local_order_id(self) -> LocalOrderId {
		self.0
	}
}

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct RemoteOrderTracker<IS: InstrumentSpec>(OrderGoal<IS>);

impl<IS: InstrumentSpec> RemoteOrderTracker<IS> {
	pub(crate) fn new(order_goal: OrderGoal<IS>) -> Self {
		Self(order_goal)
	}

	pub fn as_order_goal(&self) -> &OrderGoal<IS> {
		&self.0
	}

	pub fn into_order_goal(self) -> OrderGoal<IS> {
		self.0
	}

	pub fn as_local_order_id(&self) -> &LocalOrderId {
		self.0
			.as_local_order_id()
			.unwrap()
	}

	pub fn into_local_order_id(self) -> LocalOrderId {
		*self
			.0
			.as_local_order_id()
			.unwrap()
	}
}