architect_api/algo/
release_at_time.rs

1use super::*;
2use crate::{
3    orderflow::{OrderType, TimeInForce},
4    symbology::ExecutionVenue,
5    AccountIdOrName, Dir,
6};
7use anyhow::Result;
8use chrono::{DateTime, Utc};
9use rust_decimal::Decimal;
10use serde::{Deserialize, Serialize};
11
12#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
13pub struct ReleaseAtTime;
14
15impl Algo for ReleaseAtTime {
16    const NAME: &'static str = "RELEASE_AT_TIME";
17
18    type Params = ReleaseAtTimeParams;
19    type Status = ReleaseAtTimeStatus;
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
23pub struct ReleaseAtTimeParams {
24    pub symbol: String,
25    pub execution_venue: Option<ExecutionVenue>,
26    pub account: Option<AccountIdOrName>,
27    pub dir: Dir,
28    pub quantity: Decimal,
29    pub order_type: OrderType,
30    pub time_in_force: TimeInForce,
31    pub at_time: DateTime<Utc>,
32}
33
34impl DisplaySymbols for ReleaseAtTimeParams {
35    fn display_symbols(&self) -> Option<Vec<String>> {
36        Some(vec![self.symbol.clone()])
37    }
38}
39
40impl Validate for ReleaseAtTimeParams {
41    fn validate(&self) -> Result<()> {
42        Ok(())
43    }
44}
45
46#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema)]
47pub struct ReleaseAtTimeStatus {}