architect_api/algo/
release_at_time.rs1use 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 {}