apple-quant-algorithmic 0.1.0

Apple Quant's algorithmic trading api
Documentation
use bevy::prelude::{Deref, DerefMut};

use crate::instrument::InstrumentSpec;

mod cancel;
mod submit;

pub use cancel::*;
pub use submit::*;

use super::{
	OrderAction,
	remote::{CancelRemoteOrder, SubmitRemoteOrder},
};

#[derive(Deref, DerefMut, Debug, Clone, PartialEq, Eq, Hash)]
pub struct ClientDeployedRemoteDependency<IS: InstrumentSpec>(SubmitRemoteOrder<IS>);

impl<IS: InstrumentSpec> ClientDeployedRemoteDependency<IS> {
	pub fn new(submit_remote_order: SubmitRemoteOrder<IS>) -> Self {
		Self(submit_remote_order)
	}

	pub(crate) fn into_order_action(self) -> OrderAction<IS> {
		self.0.into_order_action()
	}
}

#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum ClientOrderAction<IS: InstrumentSpec> {
	SubmitRemoteOrder(SubmitRemoteOrder<IS>),
	SubmitClientOrder(SubmitClientOrder<IS>),
	CancelRemoteOrder(CancelRemoteOrder),
	CancelClientOrder(CancelClientOrder),
}

impl<IS: InstrumentSpec> ClientOrderAction<IS> {
	pub fn into_order_action(self) -> OrderAction<IS> {
		self.into()
	}
}