#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MarketSnipingMomentumSignal {
#[prost(bool, tag="1")]
pub enabled: bool,
#[prost(uint64, tag="2")]
pub window_ms: u64,
#[prost(int32, tag="3")]
pub trigger_ticks: i32,
#[prost(int32, tag="4")]
pub max_signal_ticks: i32,
#[prost(double, tag="5")]
pub sensitivity: f64,
#[prost(bool, tag="6")]
pub is_opposite: bool,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MarketSnipingEntryPolicy {
#[prost(double, tag="1")]
pub min_signal_strength: f64,
#[prost(uint64, tag="2")]
pub cooldown_ms: u64,
#[prost(int64, tag="3")]
pub max_entry_quantity: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MarketSnipingConditionalExitPolicy {
#[prost(bool, tag="1")]
pub exit_on_signal_end: bool,
#[prost(bool, tag="2")]
pub exit_on_reverse_signal: bool,
#[prost(uint64, tag="3")]
pub max_holding_ms: u64,
#[prost(int32, tag="4")]
pub min_profit_ticks: i32,
#[prost(int32, tag="5")]
pub max_loss_ticks: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MarketSnipingExitPolicy {
#[prost(oneof="market_sniping_exit_policy::Policy", tags="1, 2")]
pub policy: ::core::option::Option<market_sniping_exit_policy::Policy>,
}
pub mod market_sniping_exit_policy {
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum Policy {
#[prost(bool, tag="1")]
AlwaysExit(bool),
#[prost(message, tag="2")]
Conditional(super::MarketSnipingConditionalExitPolicy),
}
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MarketSnipingExposureBalancer {
#[prost(bool, tag="1")]
pub enabled: bool,
#[prost(int64, tag="2")]
pub min_exit_quantity: i64,
#[prost(double, tag="3")]
pub partial_exit_ratio: f64,
#[prost(bool, tag="4")]
pub force_full_exit_on_signal_end: bool,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MarketSnipingScreening {
#[prost(bool, tag="1")]
pub enabled: bool,
#[prost(int64, tag="2")]
pub min_price: i64,
#[prost(int64, tag="3")]
pub max_price: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MarketSnipingConfig {
#[prost(bool, tag="1")]
pub enabled: bool,
#[prost(string, tag="2")]
pub fund_code: ::prost::alloc::string::String,
#[prost(int64, tag="3")]
pub tick_size: i64,
#[prost(enumeration="SnipingPricing", tag="4")]
pub pricing: i32,
#[prost(int64, tag="5")]
pub bid_adjustment: i64,
#[prost(int64, tag="6")]
pub ask_adjustment: i64,
#[prost(int64, tag="7")]
pub base_quantity: i64,
#[prost(message, optional, tag="8")]
pub momentum: ::core::option::Option<MarketSnipingMomentumSignal>,
#[prost(message, optional, tag="9")]
pub entry_policy: ::core::option::Option<MarketSnipingEntryPolicy>,
#[prost(message, optional, tag="10")]
pub exit_policy: ::core::option::Option<MarketSnipingExitPolicy>,
#[prost(message, optional, tag="11")]
pub exposure_balancer: ::core::option::Option<MarketSnipingExposureBalancer>,
#[prost(message, optional, tag="12")]
pub screening: ::core::option::Option<MarketSnipingScreening>,
#[prost(enumeration="ExecutionPolicy", tag="13")]
pub execution_policy: i32,
#[prost(enumeration="StrategyKind", tag="14")]
pub strategy: i32,
#[prost(enumeration="super::common::AmendMethodType", tag="15")]
pub exit_amend_method: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MarketSnipingNavConfig {
#[prost(string, tag="1")]
pub pricing: ::prost::alloc::string::String,
#[prost(int64, tag="2")]
pub ask_basis: i64,
#[prost(int64, tag="3")]
pub bid_basis: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MarketSnipingEntry {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub config: ::core::option::Option<MarketSnipingConfig>,
#[prost(message, optional, tag="3")]
pub nav_config: ::core::option::Option<MarketSnipingNavConfig>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MarketSnipingStatusMessage {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub fund_code: ::prost::alloc::string::String,
#[prost(enumeration="MarketSnipingStatus", tag="3")]
pub status: i32,
#[prost(int64, tag="4")]
pub last_signal_bid_price: i64,
#[prost(int64, tag="5")]
pub last_signal_ask_price: i64,
#[prost(int64, tag="6")]
pub open_quantity: i64,
#[prost(string, tag="7")]
pub reason: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListMarketSnipingRequest {
#[prost(uint32, optional, tag="1")]
pub page_size: ::core::option::Option<u32>,
#[prost(string, optional, tag="2")]
pub page_token: ::core::option::Option<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListMarketSnipingResponse {
#[prost(message, repeated, tag="1")]
pub entries: ::prost::alloc::vec::Vec<MarketSnipingEntry>,
#[prost(string, tag="2")]
pub next_page_token: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetMarketSnipingRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateMarketSnipingRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub config: ::core::option::Option<MarketSnipingConfig>,
#[prost(message, optional, tag="3")]
pub nav_config: ::core::option::Option<MarketSnipingNavConfig>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateMarketSnipingRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(message, optional, tag="2")]
pub config: ::core::option::Option<MarketSnipingConfig>,
#[prost(message, optional, tag="3")]
pub nav_config: ::core::option::Option<MarketSnipingNavConfig>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DeleteMarketSnipingRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StartMarketSnipingRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StartMarketSnipingResponse {
#[prost(string, tag="1")]
pub message: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StopMarketSnipingRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StopMarketSnipingResponse {
#[prost(string, tag="1")]
pub message: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetMarketSnipingStatusRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StreamMarketSnipingStatusRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StreamSnipingEngineStateRequest {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SnipingEngineRuntimeState {
#[prost(string, tag="1")]
pub symbol: ::prost::alloc::string::String,
#[prost(int64, tag="2")]
pub timestamp: i64,
#[prost(string, tag="3")]
pub episode: ::prost::alloc::string::String,
#[prost(string, tag="4")]
pub strategy: ::prost::alloc::string::String,
#[prost(message, optional, tag="5")]
pub momentum: ::core::option::Option<SnipingMomentumState>,
#[prost(message, optional, tag="6")]
pub position: ::core::option::Option<SnipingPositionState>,
#[prost(message, optional, tag="7")]
pub working_orders: ::core::option::Option<SnipingWorkingOrdersState>,
#[prost(message, optional, tag="8")]
pub pricing: ::core::option::Option<SnipingPricingState>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SnipingMomentumState {
#[prost(string, tag="1")]
pub direction: ::prost::alloc::string::String,
#[prost(double, tag="2")]
pub raw_ticks: f64,
#[prost(int32, tag="3")]
pub signal_ticks: i32,
#[prost(double, tag="4")]
pub strength: f64,
#[prost(int32, tag="5")]
pub sample_count: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SnipingPositionState {
#[prost(int64, tag="1")]
pub net_qty: i64,
#[prost(int64, tag="2")]
pub gross_buy_qty: i64,
#[prost(int64, tag="3")]
pub gross_sell_qty: i64,
#[prost(int64, tag="4")]
pub avg_entry_price: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SnipingWorkingOrdersState {
#[prost(int32, tag="1")]
pub count: i32,
#[prost(int64, tag="2")]
pub entry_bid_working_qty: i64,
#[prost(int64, tag="3")]
pub entry_ask_working_qty: i64,
#[prost(int64, tag="4")]
pub exit_bid_working_qty: i64,
#[prost(int64, tag="5")]
pub exit_ask_working_qty: i64,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SnipingPricingState {
#[prost(int64, tag="1")]
pub nav_bid: i64,
#[prost(int64, tag="2")]
pub nav_ask: i64,
#[prost(int64, tag="3")]
pub signal_bid: i64,
#[prost(int64, tag="4")]
pub signal_ask: i64,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum MarketSnipingStatus {
Unspecified = 0,
Idle = 1,
Entering = 2,
Open = 3,
Exiting = 4,
Cooldown = 5,
}
impl MarketSnipingStatus {
pub fn as_str_name(&self) -> &'static str {
match self {
MarketSnipingStatus::Unspecified => "MARKET_SNIPING_STATUS_UNSPECIFIED",
MarketSnipingStatus::Idle => "MARKET_SNIPING_STATUS_IDLE",
MarketSnipingStatus::Entering => "MARKET_SNIPING_STATUS_ENTERING",
MarketSnipingStatus::Open => "MARKET_SNIPING_STATUS_OPEN",
MarketSnipingStatus::Exiting => "MARKET_SNIPING_STATUS_EXITING",
MarketSnipingStatus::Cooldown => "MARKET_SNIPING_STATUS_COOLDOWN",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"MARKET_SNIPING_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
"MARKET_SNIPING_STATUS_IDLE" => Some(Self::Idle),
"MARKET_SNIPING_STATUS_ENTERING" => Some(Self::Entering),
"MARKET_SNIPING_STATUS_OPEN" => Some(Self::Open),
"MARKET_SNIPING_STATUS_EXITING" => Some(Self::Exiting),
"MARKET_SNIPING_STATUS_COOLDOWN" => Some(Self::Cooldown),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum SnipingPricing {
Unspecified = 0,
MultiQuoteNav = 1,
}
impl SnipingPricing {
pub fn as_str_name(&self) -> &'static str {
match self {
SnipingPricing::Unspecified => "SNIPING_PRICING_UNSPECIFIED",
SnipingPricing::MultiQuoteNav => "SNIPING_PRICING_MULTI_QUOTE_NAV",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SNIPING_PRICING_UNSPECIFIED" => Some(Self::Unspecified),
"SNIPING_PRICING_MULTI_QUOTE_NAV" => Some(Self::MultiQuoteNav),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ExecutionPolicy {
Unspecified = 0,
PassiveLimit = 1,
ImmediateOrCancel = 2,
}
impl ExecutionPolicy {
pub fn as_str_name(&self) -> &'static str {
match self {
ExecutionPolicy::Unspecified => "EXECUTION_POLICY_UNSPECIFIED",
ExecutionPolicy::PassiveLimit => "EXECUTION_POLICY_PASSIVE_LIMIT",
ExecutionPolicy::ImmediateOrCancel => "EXECUTION_POLICY_IMMEDIATE_OR_CANCEL",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"EXECUTION_POLICY_UNSPECIFIED" => Some(Self::Unspecified),
"EXECUTION_POLICY_PASSIVE_LIMIT" => Some(Self::PassiveLimit),
"EXECUTION_POLICY_IMMEDIATE_OR_CANCEL" => Some(Self::ImmediateOrCancel),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum StrategyKind {
Unspecified = 0,
MomentumAccumulator = 1,
Rotation = 2,
}
impl StrategyKind {
pub fn as_str_name(&self) -> &'static str {
match self {
StrategyKind::Unspecified => "STRATEGY_KIND_UNSPECIFIED",
StrategyKind::MomentumAccumulator => "STRATEGY_KIND_MOMENTUM_ACCUMULATOR",
StrategyKind::Rotation => "STRATEGY_KIND_ROTATION",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"STRATEGY_KIND_UNSPECIFIED" => Some(Self::Unspecified),
"STRATEGY_KIND_MOMENTUM_ACCUMULATOR" => Some(Self::MomentumAccumulator),
"STRATEGY_KIND_ROTATION" => Some(Self::Rotation),
_ => None,
}
}
}
include!("kdo.v1.market_sniping.tonic.rs");
include!("kdo.v1.market_sniping.serde.rs");