bulk_client/msgs/
conditional.rs1use crate::transaction::{Action, ActionMeta};
2use serde::{Deserialize, Serialize};
3use std::sync::Arc;
4
5#[derive(Clone, Debug, Serialize, Deserialize)]
7pub struct StopOrTP {
8 #[serde(rename = "c")]
10 pub symbol: Arc<str>,
11
12 #[serde(rename = "d")]
14 pub is_above: bool,
15
16 #[serde(rename = "sz", with = "crate::msgs::fixed_point")]
18 pub size: f64,
19
20 #[serde(rename = "tr", with = "crate::msgs::fixed_point")]
22 pub threshold: f64,
23
24 #[serde(
26 rename = "lim",
27 with = "crate::msgs::opt_fixed_point",
28 default = "default_limit"
29 )]
30 pub limit: Option<f64>,
31
32 #[serde(skip)]
33 pub meta: ActionMeta,
34}
35
36#[derive(Clone, Debug, Serialize, Deserialize)]
38pub struct Range {
39 #[serde(rename = "c")]
41 pub symbol: Arc<str>,
42
43 #[serde(rename = "d")]
45 pub is_buy: bool,
46
47 #[serde(rename = "sz", with = "crate::msgs::fixed_point")]
49 pub size: f64,
50
51 #[serde(rename = "pmin", with = "crate::msgs::fixed_point")]
53 pub collar_min: f64,
54
55 #[serde(rename = "pmax", with = "crate::msgs::fixed_point")]
57 pub collar_max: f64,
58
59 #[serde(
61 rename = "lmin",
62 with = "crate::msgs::opt_fixed_point",
63 default = "default_limit"
64 )]
65 pub limit_min: Option<f64>,
66
67 #[serde(
69 rename = "lmax",
70 with = "crate::msgs::opt_fixed_point",
71 default = "default_limit"
72 )]
73 pub limit_max: Option<f64>,
74
75 #[serde(skip)]
76 pub meta: ActionMeta,
77}
78
79#[derive(Clone, Debug, Serialize, Deserialize)]
81pub struct Trigger {
82 #[serde(rename = "c")]
84 pub symbol: Arc<str>,
85
86 #[serde(rename = "d")]
88 pub is_above: bool,
89
90 #[serde(rename = "tr", with = "crate::msgs::fixed_point")]
92 pub threshold: f64,
93
94 pub actions: Vec<Action>,
96
97 #[serde(skip)]
98 pub meta: ActionMeta,
99}
100
101#[derive(Clone, Debug, Serialize, Deserialize)]
106#[serde(rename_all = "camelCase")]
107pub struct Trailing {
108 #[serde(rename = "c")]
110 pub symbol: Arc<str>,
111
112 #[serde(rename = "b")]
114 pub is_buy: bool,
115
116 #[serde(rename = "sz", with = "crate::msgs::fixed_point")]
118 pub size: f64,
119
120 #[serde(rename = "trb")]
122 pub trail_bps: u32,
123
124 #[serde(rename = "stb")]
126 pub step_bps: u32,
127
128 #[serde(
130 rename = "lim",
131 with = "crate::msgs::opt_fixed_point",
132 default = "default_limit"
133 )]
134 pub limit: Option<f64>,
135
136 #[serde(skip)]
137 pub meta: ActionMeta,
138}
139
140#[derive(Clone, Debug, Serialize, Deserialize)]
145#[serde(rename_all = "camelCase")]
146pub struct OnFill {
147 #[serde(rename = "p")]
149 pub parent_seqno: u32,
150
151 pub actions: Vec<Action>,
153
154 #[serde(skip)]
155 pub meta: ActionMeta,
156}
157
158fn default_limit() -> Option<f64> {
159 None
160}