Skip to main content

ids_apis/
kdo.v1.auto_amend.rs

1// @generated
2// This file is @generated by prost-build.
3// ============================================================================
4// Entities
5// ============================================================================
6
7/// 자동정정 등록 주문
8#[allow(clippy::derive_partial_eq_without_eq)]
9#[derive(Clone, PartialEq, ::prost::Message)]
10pub struct AutoAmendOrder {
11    /// 주문 ID
12    #[prost(uint64, tag="1")]
13    pub order_id: u64,
14    /// 종목 심볼
15    #[prost(string, tag="2")]
16    pub symbol: ::prost::alloc::string::String,
17    /// 주문 방향
18    #[prost(enumeration="super::common::OrderSide", tag="3")]
19    pub side: i32,
20    /// 현재 주문 가격
21    #[prost(string, tag="4")]
22    pub price: ::prost::alloc::string::String,
23    /// 현재 주문 수량
24    #[prost(int64, tag="5")]
25    pub quantity: i64,
26    /// 미체결 수량
27    #[prost(int64, tag="6")]
28    pub remaining_quantity: i64,
29    /// 자동정정 설정
30    #[prost(message, optional, tag="7")]
31    pub config: ::core::option::Option<AmendConfig>,
32    /// 정정 횟수
33    #[prost(uint32, tag="8")]
34    pub amend_count: u32,
35    /// 마지막 정정 시각 (unix timestamp ms)
36    #[prost(int64, tag="9")]
37    pub last_amend_time_ms: i64,
38    /// 활성화 여부
39    #[prost(bool, tag="10")]
40    pub is_active: bool,
41}
42// ============================================================================
43// Configuration
44// ============================================================================
45
46/// 자동정정 설정
47#[allow(clippy::derive_partial_eq_without_eq)]
48#[derive(Clone, Copy, PartialEq, ::prost::Message)]
49pub struct AmendConfig {
50    /// 장중 정정 설정
51    #[prost(message, optional, tag="1")]
52    pub regular_session: ::core::option::Option<RegularSessionConfig>,
53    /// 동시호가 정정 설정
54    #[prost(message, optional, tag="2")]
55    pub auction_session: ::core::option::Option<AuctionSessionConfig>,
56    /// 자동정정 시작 전 초기 대기 시간 (ms). 주문 등록 후 이 시간 동안은 정정하지 않고 최초 주문 가격을 유지한다 (0 = 즉시 정정 시작).
57    #[prost(uint64, tag="3")]
58    pub initial_wait_ms: u64,
59}
60/// 장중 자동정정 설정
61#[allow(clippy::derive_partial_eq_without_eq)]
62#[derive(Clone, Copy, PartialEq, ::prost::Message)]
63pub struct RegularSessionConfig {
64    /// 활성화 여부
65    #[prost(bool, tag="1")]
66    pub enabled: bool,
67    /// 상대호가 잔량 비율 임계값 (0.0 ~ 1.0)
68    /// 매수: 매도1호가잔량 / 매수1호가잔량 < threshold → 매도1호가로 정정
69    /// 매도: 매수1호가잔량 / 매도1호가잔량 < threshold → 매수1호가로 정정
70    #[prost(double, tag="2")]
71    pub opposite_qty_ratio_threshold: f64,
72}
73/// 동시호가 정정 설정 (예체가 관여 방지)
74#[allow(clippy::derive_partial_eq_without_eq)]
75#[derive(Clone, Copy, PartialEq, ::prost::Message)]
76pub struct AuctionSessionConfig {
77    /// 활성화 여부
78    #[prost(bool, tag="1")]
79    pub enabled: bool,
80    /// 예상체결가 대비 허용 가격 범위 (0.0 ~ 1.0, e.g., 0.01 = ±1%)
81    #[prost(double, tag="2")]
82    pub price_limit_pct: f64,
83    /// 예상체결수량 대비 최대 수량 비율 (0.0 ~ 1.0, e.g., 0.30 = 30%)
84    #[prost(double, tag="3")]
85    pub quantity_limit_pct: f64,
86}
87// ============================================================================
88// Session Info
89// ============================================================================
90
91// ============================================================================
92// Service Status
93// ============================================================================
94
95/// 서비스 상태
96#[allow(clippy::derive_partial_eq_without_eq)]
97#[derive(Clone, Copy, PartialEq, ::prost::Message)]
98pub struct ServiceStatus {
99    /// 서비스 실행 중 여부
100    #[prost(bool, tag="1")]
101    pub is_running: bool,
102    /// 현재 세션
103    #[prost(enumeration="super::common::SessionId", tag="2")]
104    pub current_session: i32,
105    /// 활성 주문 수
106    #[prost(uint32, tag="3")]
107    pub active_order_count: u32,
108    /// 총 등록 주문 수
109    #[prost(uint32, tag="4")]
110    pub total_order_count: u32,
111}
112// ============================================================================
113// Events
114// ============================================================================
115
116/// 자동정정 이벤트
117#[allow(clippy::derive_partial_eq_without_eq)]
118#[derive(Clone, PartialEq, ::prost::Message)]
119pub struct AutoAmendEvent {
120    #[prost(oneof="auto_amend_event::Event", tags="1, 2, 3, 4, 5")]
121    pub event: ::core::option::Option<auto_amend_event::Event>,
122}
123/// Nested message and enum types in `AutoAmendEvent`.
124pub mod auto_amend_event {
125    #[allow(clippy::derive_partial_eq_without_eq)]
126#[derive(Clone, PartialEq, ::prost::Oneof)]
127    pub enum Event {
128        #[prost(message, tag="1")]
129        Amended(super::AmendedEvent),
130        #[prost(message, tag="2")]
131        AmendFailed(super::AmendFailedEvent),
132        #[prost(message, tag="3")]
133        SessionChanged(super::SessionChangedEvent),
134        #[prost(message, tag="4")]
135        OrderRegistered(super::OrderRegisteredEvent),
136        #[prost(message, tag="5")]
137        OrderUnregistered(super::OrderUnregisteredEvent),
138    }
139}
140/// 정정 실행 이벤트
141#[allow(clippy::derive_partial_eq_without_eq)]
142#[derive(Clone, PartialEq, ::prost::Message)]
143pub struct AmendedEvent {
144    /// 주문 ID
145    #[prost(uint64, tag="1")]
146    pub order_id: u64,
147    /// 종목 심볼
148    #[prost(string, tag="2")]
149    pub symbol: ::prost::alloc::string::String,
150    /// 정정 액션
151    #[prost(enumeration="AmendAction", tag="3")]
152    pub action: i32,
153    /// 이전 가격
154    #[prost(int64, tag="4")]
155    pub old_price: i64,
156    /// 새 가격
157    #[prost(int64, tag="5")]
158    pub new_price: i64,
159    /// 이전 수량
160    #[prost(int64, tag="6")]
161    pub old_quantity: i64,
162    /// 새 수량
163    #[prost(int64, tag="7")]
164    pub new_quantity: i64,
165    /// 정정 사유
166    #[prost(string, tag="8")]
167    pub reason: ::prost::alloc::string::String,
168}
169/// 정정 실패 이벤트
170#[allow(clippy::derive_partial_eq_without_eq)]
171#[derive(Clone, PartialEq, ::prost::Message)]
172pub struct AmendFailedEvent {
173    /// 주문 ID
174    #[prost(uint64, tag="1")]
175    pub order_id: u64,
176    /// 종목 심볼
177    #[prost(string, tag="2")]
178    pub symbol: ::prost::alloc::string::String,
179    /// 실패 사유
180    #[prost(string, tag="3")]
181    pub reason: ::prost::alloc::string::String,
182}
183/// 세션 변경 이벤트
184#[allow(clippy::derive_partial_eq_without_eq)]
185#[derive(Clone, Copy, PartialEq, ::prost::Message)]
186pub struct SessionChangedEvent {
187    /// 이전 세션
188    #[prost(enumeration="super::common::SessionId", tag="1")]
189    pub old_session: i32,
190    /// 새 세션
191    #[prost(enumeration="super::common::SessionId", tag="2")]
192    pub new_session: i32,
193}
194/// 주문 등록 이벤트
195#[allow(clippy::derive_partial_eq_without_eq)]
196#[derive(Clone, PartialEq, ::prost::Message)]
197pub struct OrderRegisteredEvent {
198    /// 주문 ID
199    #[prost(uint64, tag="1")]
200    pub order_id: u64,
201    /// 종목 심볼
202    #[prost(string, tag="2")]
203    pub symbol: ::prost::alloc::string::String,
204    /// 주문 방향
205    #[prost(enumeration="super::common::OrderSide", tag="3")]
206    pub side: i32,
207}
208/// 주문 해제 이벤트
209#[allow(clippy::derive_partial_eq_without_eq)]
210#[derive(Clone, PartialEq, ::prost::Message)]
211pub struct OrderUnregisteredEvent {
212    /// 주문 ID
213    #[prost(uint64, tag="1")]
214    pub order_id: u64,
215    /// 해제 사유
216    #[prost(string, tag="2")]
217    pub reason: ::prost::alloc::string::String,
218}
219// ============================================================================
220// Request/Response Messages
221// ============================================================================
222
223#[allow(clippy::derive_partial_eq_without_eq)]
224#[derive(Clone, Copy, PartialEq, ::prost::Message)]
225pub struct GetAutoAmendOrderRequest {
226    /// 주문 ID
227    #[prost(uint64, tag="1")]
228    pub order_id: u64,
229}
230#[allow(clippy::derive_partial_eq_without_eq)]
231#[derive(Clone, PartialEq, ::prost::Message)]
232pub struct ListAutoAmendOrdersRequest {
233    /// 종목 필터 (optional)
234    #[prost(string, tag="1")]
235    pub symbol: ::prost::alloc::string::String,
236    /// 주문 방향 필터 (optional)
237    #[prost(enumeration="super::common::OrderSide", tag="2")]
238    pub side: i32,
239    /// 활성화된 주문만 (optional, 기본: true)
240    #[prost(bool, tag="3")]
241    pub active_only: bool,
242}
243#[allow(clippy::derive_partial_eq_without_eq)]
244#[derive(Clone, PartialEq, ::prost::Message)]
245pub struct ListAutoAmendOrdersResponse {
246    /// 등록된 자동 정적 주문 목록
247    #[prost(message, repeated, tag="1")]
248    pub orders: ::prost::alloc::vec::Vec<AutoAmendOrder>,
249}
250#[allow(clippy::derive_partial_eq_without_eq)]
251#[derive(Clone, Copy, PartialEq, ::prost::Message)]
252pub struct UpdateConfigRequest {
253    /// 주문 ID
254    #[prost(uint64, tag="1")]
255    pub order_id: u64,
256    /// 새 설정
257    #[prost(message, optional, tag="2")]
258    pub config: ::core::option::Option<AmendConfig>,
259}
260#[allow(clippy::derive_partial_eq_without_eq)]
261#[derive(Clone, PartialEq, ::prost::Message)]
262pub struct StreamEventsRequest {
263    /// 특정 주문 ID 필터 (optional, 미지정 시 전체)
264    #[prost(uint64, repeated, packed="false", tag="1")]
265    pub order_ids: ::prost::alloc::vec::Vec<u64>,
266}
267/// 정정 액션 타입
268#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
269#[repr(i32)]
270pub enum AmendAction {
271    Unspecified = 0,
272    /// 가격 정정
273    ChangePrice = 1,
274    /// 수량 정정
275    ChangeQuantity = 2,
276    /// 가격+수량 정정
277    ChangePriceAndQuantity = 3,
278}
279impl AmendAction {
280    /// String value of the enum field names used in the ProtoBuf definition.
281    ///
282    /// The values are not transformed in any way and thus are considered stable
283    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
284    pub fn as_str_name(&self) -> &'static str {
285        match self {
286            AmendAction::Unspecified => "AMEND_ACTION_UNSPECIFIED",
287            AmendAction::ChangePrice => "AMEND_ACTION_CHANGE_PRICE",
288            AmendAction::ChangeQuantity => "AMEND_ACTION_CHANGE_QUANTITY",
289            AmendAction::ChangePriceAndQuantity => "AMEND_ACTION_CHANGE_PRICE_AND_QUANTITY",
290        }
291    }
292    /// Creates an enum from field names used in the ProtoBuf definition.
293    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
294        match value {
295            "AMEND_ACTION_UNSPECIFIED" => Some(Self::Unspecified),
296            "AMEND_ACTION_CHANGE_PRICE" => Some(Self::ChangePrice),
297            "AMEND_ACTION_CHANGE_QUANTITY" => Some(Self::ChangeQuantity),
298            "AMEND_ACTION_CHANGE_PRICE_AND_QUANTITY" => Some(Self::ChangePriceAndQuantity),
299            _ => None,
300        }
301    }
302}
303include!("kdo.v1.auto_amend.tonic.rs");
304include!("kdo.v1.auto_amend.serde.rs");
305// @@protoc_insertion_point(module)