pub struct BitmexExecutionClientConfig {Show 23 fields
pub api_key: Option<String>,
pub api_secret: Option<String>,
pub base_url_http: Option<String>,
pub base_url_ws: Option<String>,
pub proxy_url: Option<String>,
pub http_timeout_secs: u64,
pub max_retries: u32,
pub retry_delay_initial_ms: u64,
pub retry_delay_max_ms: u64,
pub heartbeat_interval_secs: u64,
pub auth_timeout_secs: Option<u64>,
pub recv_window_ms: u64,
pub active_only: bool,
pub environment: BitmexEnvironment,
pub account_id: Option<AccountId>,
pub max_requests_per_second: u32,
pub max_requests_per_minute: u32,
pub submitter_pool_size: Option<usize>,
pub canceller_pool_size: Option<usize>,
pub submitter_proxy_urls: Option<Vec<String>>,
pub canceller_proxy_urls: Option<Vec<String>>,
pub deadmans_switch_timeout_secs: Option<u64>,
pub transport_backend: TransportBackend,
}Expand description
Configuration for the BitMEX live execution client.
Fields§
§api_key: Option<String>API key used for authenticated requests.
api_secret: Option<String>API secret used for authenticated requests.
base_url_http: Option<String>Optional override for the REST base URL.
base_url_ws: Option<String>Optional override for the WebSocket URL.
proxy_url: Option<String>Optional proxy URL for HTTP and WebSocket transports.
http_timeout_secs: u64REST timeout in seconds.
max_retries: u32Maximum retry attempts for REST requests.
retry_delay_initial_ms: u64Initial retry backoff in milliseconds.
retry_delay_max_ms: u64Maximum retry backoff in milliseconds.
heartbeat_interval_secs: u64Heartbeat interval (seconds) for the WebSocket client.
auth_timeout_secs: Option<u64>Optional WebSocket authentication timeout (seconds), defaulting to
AUTHENTICATION_TIMEOUT_SECS when unset.
recv_window_ms: u64Receive window in milliseconds for signed requests.
This value determines how far in the future the api-expires timestamp will be set
for signed REST requests. BitMEX uses seconds-granularity Unix timestamps in the
api-expires header, calculated as: current_timestamp + (recv_window_ms / 1000).
Note: This parameter is specified in milliseconds for consistency with other
adapter configurations (e.g., Bybit’s recv_window_ms), but BitMEX only supports
seconds-granularity timestamps. The value is converted via integer division, so
10000ms becomes 10 seconds, 15500ms becomes 15 seconds, etc.
A larger window provides more tolerance for clock skew and network latency, but increases the replay attack window. The default of 10 seconds should be sufficient for most deployments. Consider increasing this value (e.g., to 30000ms = 30s) if you experience request expiration errors due to clock drift or high network latency.
active_only: boolWhen true, only active instruments are requested during bootstrap.
environment: BitmexEnvironmentBitMEX environment (mainnet or testnet).
account_id: Option<AccountId>Optional account identifier to associate with the execution client.
max_requests_per_second: u32Maximum number of requests per second (burst limit).
max_requests_per_minute: u32Maximum number of requests per minute (rolling window).
submitter_pool_size: Option<usize>Number of HTTP clients in the submit broadcaster pool (defaults to 1).
canceller_pool_size: Option<usize>Number of HTTP clients in the cancel broadcaster pool (defaults to 1).
submitter_proxy_urls: Option<Vec<String>>Optional list of proxy URLs for submit broadcaster pool (path diversity).
canceller_proxy_urls: Option<Vec<String>>Optional list of proxy URLs for cancel broadcaster pool (path diversity).
deadmans_switch_timeout_secs: Option<u64>Optional dead man’s switch timeout in seconds.
When set, a background task periodically calls the BitMEX cancelAllAfter endpoint
to keep a server-side timer alive. If the client loses connectivity the timer expires
and BitMEX cancels all open orders. Calling with timeout=0 disarms the switch.
The refresh interval is derived as timeout / 4 (minimum 1 second).
transport_backend: TransportBackendWebSocket transport backend (defaults to Tungstenite).
Implementations§
Source§impl BitmexExecutionClientConfig
impl BitmexExecutionClientConfig
Sourcepub fn builder() -> BitmexExecutionClientConfigBuilder
pub fn builder() -> BitmexExecutionClientConfigBuilder
Create an instance of BitmexExecutionClientConfig using the builder syntax
Source§impl BitmexExecutionClientConfig
impl BitmexExecutionClientConfig
Sourcepub fn has_api_credentials(&self) -> bool
pub fn has_api_credentials(&self) -> bool
Returns true if both API key and secret are available
(either explicitly set or resolvable from environment variables).
Sourcepub fn http_base_url(&self) -> String
pub fn http_base_url(&self) -> String
Returns the REST base URL, considering overrides and the environment.
Trait Implementations§
Source§impl ClientConfig for BitmexExecutionClientConfig
impl ClientConfig for BitmexExecutionClientConfig
Source§impl Clone for BitmexExecutionClientConfig
impl Clone for BitmexExecutionClientConfig
Source§fn clone(&self) -> BitmexExecutionClientConfig
fn clone(&self) -> BitmexExecutionClientConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BitmexExecutionClientConfig
impl Debug for BitmexExecutionClientConfig
impl DerefToPyAny for BitmexExecutionClientConfig
Source§impl<'de> Deserialize<'de> for BitmexExecutionClientConfigwhere
BitmexExecutionClientConfig: Default,
impl<'de> Deserialize<'de> for BitmexExecutionClientConfigwhere
BitmexExecutionClientConfig: Default,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<'a, 'py> FromPyObject<'a, 'py> for BitmexExecutionClientConfigwhere
Self: Clone,
impl<'a, 'py> FromPyObject<'a, 'py> for BitmexExecutionClientConfigwhere
Self: Clone,
Source§impl<'py> IntoPyObject<'py> for BitmexExecutionClientConfig
impl<'py> IntoPyObject<'py> for BitmexExecutionClientConfig
Source§type Target = BitmexExecutionClientConfig
type Target = BitmexExecutionClientConfig
Source§type Output = Bound<'py, <BitmexExecutionClientConfig as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <BitmexExecutionClientConfig as IntoPyObject<'py>>::Target>
Source§fn into_pyobject(
self,
py: Python<'py>,
) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
Source§impl PyClass for BitmexExecutionClientConfig
impl PyClass for BitmexExecutionClientConfig
Source§impl PyClassImpl for BitmexExecutionClientConfig
impl PyClassImpl for BitmexExecutionClientConfig
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
Source§const RAW_DOC: &'static CStr = /// Configuration for the BitMEX live execution client.
const RAW_DOC: &'static CStr = /// Configuration for the BitMEX live execution client.
Source§const DOC: &'static CStr
const DOC: &'static CStr
text_signature if a constructor is defined. Read moreSource§type Layout = <<BitmexExecutionClientConfig as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<BitmexExecutionClientConfig>
type Layout = <<BitmexExecutionClientConfig as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<BitmexExecutionClientConfig>
Source§type ThreadChecker = NoopThreadChecker
type ThreadChecker = NoopThreadChecker
type Inventory = Pyo3MethodsInventoryForBitmexExecutionClientConfig
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny by default, and when you declare
#[pyclass(extends=PyDict)], it’s PyDict.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
§fn dict_offset() -> Option<PyObjectOffset>
fn dict_offset() -> Option<PyObjectOffset>
§fn weaklist_offset() -> Option<PyObjectOffset>
fn weaklist_offset() -> Option<PyObjectOffset>
Source§impl PyClassNewTextSignature for BitmexExecutionClientConfig
impl PyClassNewTextSignature for BitmexExecutionClientConfig
const TEXT_SIGNATURE: &'static str = "(api_key=None, api_secret=None, base_url_http=None, base_url_ws=None, proxy_url=None, http_timeout_secs=None, max_retries=None, retry_delay_initial_ms=None, retry_delay_max_ms=None, heartbeat_interval_secs=None, auth_timeout_secs=None, recv_window_ms=None, active_only=None, environment=None, account_id=None, max_requests_per_second=None, max_requests_per_minute=None, submitter_pool_size=None, canceller_pool_size=None, submitter_proxy_urls=None, canceller_proxy_urls=None, deadmans_switch_timeout_secs=None, transport_backend=None)"
Source§impl PyStubType for BitmexExecutionClientConfig
impl PyStubType for BitmexExecutionClientConfig
Source§fn type_output() -> TypeInfo
fn type_output() -> TypeInfo
§fn type_input() -> TypeInfo
fn type_input() -> TypeInfo
Source§impl PyTypeInfo for BitmexExecutionClientConfig
impl PyTypeInfo for BitmexExecutionClientConfig
Source§const NAME: &str = <Self as ::pyo3::PyClass>::NAME
const NAME: &str = <Self as ::pyo3::PyClass>::NAME
prefer using ::type_object(py).name() to get the correct runtime value
Source§const MODULE: Option<&str> = <Self as ::pyo3::impl_::pyclass::PyClassImpl>::MODULE
const MODULE: Option<&str> = <Self as ::pyo3::impl_::pyclass::PyClassImpl>::MODULE
prefer using ::type_object(py).module() to get the correct runtime value
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.§fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type.Auto Trait Implementations§
impl Freeze for BitmexExecutionClientConfig
impl RefUnwindSafe for BitmexExecutionClientConfig
impl Send for BitmexExecutionClientConfig
impl Sync for BitmexExecutionClientConfig
impl Unpin for BitmexExecutionClientConfig
impl UnsafeUnpin for BitmexExecutionClientConfig
impl UnwindSafe for BitmexExecutionClientConfig
Blanket Implementations§
impl<T> Allocation for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<'py, T> FromPyObjectOwned<'py> for Twhere
T: for<'a> FromPyObject<'a, 'py>,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self into an owned Python object, dropping type information.§fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
self into an owned Python object, dropping type information and unbinding it
from the 'py lifetime.§fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
self into a Python object. Read more§impl<'py, T> IntoPyObjectNautilusExt<'py> for Twhere
T: IntoPyObjectExt<'py>,
impl<'py, T> IntoPyObjectNautilusExt<'py> for Twhere
T: IntoPyObjectExt<'py>,
§fn into_py_any_unwrap(self, py: Python<'py>) -> Py<PyAny>where
Self: IntoPyObject<'py, Error = !>,
fn into_py_any_unwrap(self, py: Python<'py>) -> Py<PyAny>where
Self: IntoPyObject<'py, Error = !>,
self into a [Py<PyAny>] when the underlying conversion is infallible.§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
§fn type_check(object: &Bound<'_, PyAny>) -> bool
fn type_check(object: &Bound<'_, PyAny>) -> bool
§fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
isinstance and issubclass function. Read more