pub struct BitmexHttpClient { /* private fields */ }
Expand description
Provides a HTTP client for connecting to the BitMEX REST API.
This is the high-level client that wraps the inner client and provides Nautilus-specific functionality for trading operations.
Implementations§
Source§impl BitmexHttpClient
impl BitmexHttpClient
Sourcepub fn new(
base_url: Option<String>,
api_key: Option<String>,
api_secret: Option<String>,
testnet: bool,
timeout_secs: Option<u64>,
) -> Self
pub fn new( base_url: Option<String>, api_key: Option<String>, api_secret: Option<String>, testnet: bool, timeout_secs: Option<u64>, ) -> Self
Creates a new BitmexHttpClient
instance.
Sourcepub fn from_env() -> Result<Self>
pub fn from_env() -> Result<Self>
Creates a new BitmexHttpClient
instance using environment variables and
the default BitMEX HTTP base URL.
§Errors
Returns an error if required environment variables are not set or invalid.
Sourcepub fn with_credentials(
api_key: Option<String>,
api_secret: Option<String>,
base_url: Option<String>,
timeout_secs: Option<u64>,
) -> Result<Self>
pub fn with_credentials( api_key: Option<String>, api_secret: Option<String>, base_url: Option<String>, timeout_secs: Option<u64>, ) -> Result<Self>
Creates a new BitmexHttpClient
configured with credentials
for authenticated requests.
If api_key
or api_secret
are None
, they will be sourced from the
BITMEX_API_KEY
and BITMEX_API_SECRET
environment variables.
§Errors
Returns an error if one credential is provided without the other.
Sourcepub fn add_instrument(&mut self, instrument: InstrumentAny)
pub fn add_instrument(&mut self, instrument: InstrumentAny)
Add an instrument to the cache for precision lookups.
§Panics
Panics if the instruments cache mutex is poisoned.
Sourcepub async fn request_instrument(
&self,
instrument_id: InstrumentId,
) -> Result<Option<InstrumentAny>>
pub async fn request_instrument( &self, instrument_id: InstrumentId, ) -> Result<Option<InstrumentAny>>
Request all available instruments and parse them into Nautilus types.
§Errors
Returns an error if the HTTP request fails or parsing fails.
Sourcepub async fn request_instruments(
&self,
active_only: bool,
) -> Result<Vec<InstrumentAny>>
pub async fn request_instruments( &self, active_only: bool, ) -> Result<Vec<InstrumentAny>>
Request all available instruments and parse them into Nautilus types.
§Errors
Returns an error if the HTTP request fails or parsing fails.
Sourcepub async fn get_wallet(&self) -> Result<BitmexWallet, BitmexHttpError>
pub async fn get_wallet(&self) -> Result<BitmexWallet, BitmexHttpError>
Sourcepub async fn get_orders(
&self,
params: GetOrderParams,
) -> Result<Vec<BitmexOrder>, BitmexHttpError>
pub async fn get_orders( &self, params: GetOrderParams, ) -> Result<Vec<BitmexOrder>, BitmexHttpError>
Sourcepub async fn http_place_order(
&self,
params: PostOrderParams,
) -> Result<Value, BitmexHttpError>
pub async fn http_place_order( &self, params: PostOrderParams, ) -> Result<Value, BitmexHttpError>
Sourcepub async fn http_cancel_orders(
&self,
params: DeleteOrderParams,
) -> Result<Value, BitmexHttpError>
pub async fn http_cancel_orders( &self, params: DeleteOrderParams, ) -> Result<Value, BitmexHttpError>
Sourcepub async fn http_amend_order(
&self,
params: PutOrderParams,
) -> Result<Value, BitmexHttpError>
pub async fn http_amend_order( &self, params: PutOrderParams, ) -> Result<Value, BitmexHttpError>
Sourcepub async fn http_cancel_all_orders(
&self,
params: DeleteAllOrdersParams,
) -> Result<Value, BitmexHttpError>
pub async fn http_cancel_all_orders( &self, params: DeleteAllOrdersParams, ) -> Result<Value, BitmexHttpError>
Cancel all orders with raw API params.
§Errors
Returns an error if credentials are missing, the request fails, or the API returns an error.
§Panics
Panics if the inner mutex is poisoned.
§References
https://www.bitmex.com/api/explorer/#!/Order/Order_cancelAll
Sourcepub fn get_price_precision(&self, symbol: Ustr) -> Result<u8>
pub fn get_price_precision(&self, symbol: Ustr) -> Result<u8>
Sourcepub async fn http_get_margin(&self, currency: &str) -> Result<BitmexMargin>
pub async fn http_get_margin(&self, currency: &str) -> Result<BitmexMargin>
Get user margin information.
§Errors
Returns an error if credentials are missing, the request fails, or the API returns an error.
Sourcepub async fn request_account_state(
&self,
account_id: AccountId,
) -> Result<AccountState>
pub async fn request_account_state( &self, account_id: AccountId, ) -> Result<AccountState>
Request account state for the given account.
§Errors
Returns an error if the HTTP request fails or no account state is returned.
Sourcepub async fn submit_order(
&self,
instrument_id: InstrumentId,
client_order_id: ClientOrderId,
order_side: OrderSide,
order_type: OrderType,
quantity: Quantity,
time_in_force: TimeInForce,
price: Option<Price>,
trigger_price: Option<Price>,
display_qty: Option<Quantity>,
post_only: bool,
reduce_only: bool,
) -> Result<OrderStatusReport>
pub async fn submit_order( &self, instrument_id: InstrumentId, client_order_id: ClientOrderId, order_side: OrderSide, order_type: OrderType, quantity: Quantity, time_in_force: TimeInForce, price: Option<Price>, trigger_price: Option<Price>, display_qty: Option<Quantity>, post_only: bool, reduce_only: bool, ) -> Result<OrderStatusReport>
Submit a new order.
§Errors
Returns an error if credentials are missing, the request fails, order validation fails, the order is rejected, or the API returns an error.
Sourcepub async fn cancel_order(
&self,
instrument_id: InstrumentId,
client_order_id: Option<ClientOrderId>,
venue_order_id: Option<VenueOrderId>,
) -> Result<OrderStatusReport>
pub async fn cancel_order( &self, instrument_id: InstrumentId, client_order_id: Option<ClientOrderId>, venue_order_id: Option<VenueOrderId>, ) -> Result<OrderStatusReport>
Cancel an order.
§Errors
This function will return an error if:
- Credentials are missing.
- The request fails.
- The order doesn’t exist.
- The API returns an error.
Sourcepub async fn cancel_orders(
&self,
instrument_id: InstrumentId,
client_order_ids: Option<Vec<ClientOrderId>>,
venue_order_ids: Option<Vec<VenueOrderId>>,
) -> Result<Vec<OrderStatusReport>>
pub async fn cancel_orders( &self, instrument_id: InstrumentId, client_order_ids: Option<Vec<ClientOrderId>>, venue_order_ids: Option<Vec<VenueOrderId>>, ) -> Result<Vec<OrderStatusReport>>
Cancel multiple orders.
§Errors
This function will return an error if:
- Credentials are missing.
- The request fails.
- The order doesn’t exist.
- The API returns an error.
Sourcepub async fn cancel_all_orders(
&self,
instrument_id: InstrumentId,
order_side: Option<OrderSide>,
) -> Result<Vec<OrderStatusReport>>
pub async fn cancel_all_orders( &self, instrument_id: InstrumentId, order_side: Option<OrderSide>, ) -> Result<Vec<OrderStatusReport>>
Cancel all orders for an instrument and optionally an order side.
§Errors
This function will return an error if:
- Credentials are missing.
- The request fails.
- The order doesn’t exist.
- The API returns an error.
Sourcepub async fn modify_order(
&self,
instrument_id: InstrumentId,
client_order_id: Option<ClientOrderId>,
venue_order_id: Option<VenueOrderId>,
quantity: Option<Quantity>,
price: Option<Price>,
trigger_price: Option<Price>,
) -> Result<OrderStatusReport>
pub async fn modify_order( &self, instrument_id: InstrumentId, client_order_id: Option<ClientOrderId>, venue_order_id: Option<VenueOrderId>, quantity: Option<Quantity>, price: Option<Price>, trigger_price: Option<Price>, ) -> Result<OrderStatusReport>
Modify an existing order.
§Errors
This function will return an error if:
- Credentials are missing.
- The request fails.
- The order doesn’t exist.
- The order is already closed.
- The API returns an error.
Sourcepub async fn query_order(
&self,
instrument_id: InstrumentId,
client_order_id: Option<ClientOrderId>,
venue_order_id: Option<VenueOrderId>,
) -> Result<Option<OrderStatusReport>>
pub async fn query_order( &self, instrument_id: InstrumentId, client_order_id: Option<ClientOrderId>, venue_order_id: Option<VenueOrderId>, ) -> Result<Option<OrderStatusReport>>
Query a single order by client order ID or venue order ID.
§Errors
This function will return an error if:
- Credentials are missing.
- The request fails.
- The API returns an error.
Sourcepub async fn request_order_status_report(
&self,
instrument_id: InstrumentId,
client_order_id: Option<ClientOrderId>,
venue_order_id: Option<VenueOrderId>,
) -> Result<OrderStatusReport>
pub async fn request_order_status_report( &self, instrument_id: InstrumentId, client_order_id: Option<ClientOrderId>, venue_order_id: Option<VenueOrderId>, ) -> Result<OrderStatusReport>
Request a single order status report.
§Errors
This function will return an error if:
- Credentials are missing.
- The request fails.
- The API returns an error.
Sourcepub async fn request_order_status_reports(
&self,
instrument_id: Option<InstrumentId>,
open_only: bool,
limit: Option<u32>,
) -> Result<Vec<OrderStatusReport>>
pub async fn request_order_status_reports( &self, instrument_id: Option<InstrumentId>, open_only: bool, limit: Option<u32>, ) -> Result<Vec<OrderStatusReport>>
Request multiple order status reports.
§Errors
This function will return an error if:
- Credentials are missing.
- The request fails.
- The API returns an error.
Sourcepub async fn request_trades(
&self,
instrument_id: InstrumentId,
limit: Option<u32>,
) -> Result<Vec<TradeTick>>
pub async fn request_trades( &self, instrument_id: InstrumentId, limit: Option<u32>, ) -> Result<Vec<TradeTick>>
Request trades for the given instrument.
§Errors
Returns an error if the HTTP request fails or parsing fails.
Sourcepub async fn request_fill_reports(
&self,
instrument_id: Option<InstrumentId>,
limit: Option<u32>,
) -> Result<Vec<FillReport>>
pub async fn request_fill_reports( &self, instrument_id: Option<InstrumentId>, limit: Option<u32>, ) -> Result<Vec<FillReport>>
Request fill reports for the given instrument.
§Errors
Returns an error if the HTTP request fails or parsing fails.
Sourcepub async fn request_position_status_reports(
&self,
) -> Result<Vec<PositionStatusReport>>
pub async fn request_position_status_reports( &self, ) -> Result<Vec<PositionStatusReport>>
Sourcepub async fn submit_orders_bulk(
&self,
orders: Vec<PostOrderParams>,
) -> Result<Vec<OrderStatusReport>>
pub async fn submit_orders_bulk( &self, orders: Vec<PostOrderParams>, ) -> Result<Vec<OrderStatusReport>>
Submit multiple orders in bulk.
§Errors
This function will return an error if:
- Credentials are missing.
- The request fails.
- Order validation fails.
- The API returns an error.
Sourcepub async fn modify_orders_bulk(
&self,
orders: Vec<PutOrderParams>,
) -> Result<Vec<OrderStatusReport>>
pub async fn modify_orders_bulk( &self, orders: Vec<PutOrderParams>, ) -> Result<Vec<OrderStatusReport>>
Amend multiple orders in bulk.
§Errors
This function will return an error if:
- Credentials are missing.
- The request fails.
- An order doesn’t exist.
- An order is closed.
- The API returns an error.
Sourcepub async fn update_position_leverage(
&self,
symbol: &str,
leverage: f64,
) -> Result<PositionStatusReport>
pub async fn update_position_leverage( &self, symbol: &str, leverage: f64, ) -> Result<PositionStatusReport>
Update position leverage.
§Errors
- Credentials are missing.
- The request fails.
- The API returns an error.
Source§impl BitmexHttpClient
impl BitmexHttpClient
pub fn py_base_url(&self) -> &str
pub fn py_api_key(&self) -> Option<&str>
Trait Implementations§
Source§impl Clone for BitmexHttpClient
impl Clone for BitmexHttpClient
Source§fn clone(&self) -> BitmexHttpClient
fn clone(&self) -> BitmexHttpClient
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for BitmexHttpClient
impl Debug for BitmexHttpClient
Source§impl Default for BitmexHttpClient
impl Default for BitmexHttpClient
Source§impl<'py> IntoPyObject<'py> for BitmexHttpClient
impl<'py> IntoPyObject<'py> for BitmexHttpClient
Source§type Target = BitmexHttpClient
type Target = BitmexHttpClient
Source§type Output = Bound<'py, <BitmexHttpClient as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <BitmexHttpClient 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 BitmexHttpClient
impl PyClass for BitmexHttpClient
Source§impl PyClassImpl for BitmexHttpClient
impl PyClassImpl for BitmexHttpClient
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§type ThreadChecker = SendablePyClass<BitmexHttpClient>
type ThreadChecker = SendablePyClass<BitmexHttpClient>
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<isize>
fn weaklist_offset() -> Option<isize>
Source§impl PyClassNewTextSignature<BitmexHttpClient> for PyClassImplCollector<BitmexHttpClient>
impl PyClassNewTextSignature<BitmexHttpClient> for PyClassImplCollector<BitmexHttpClient>
fn new_text_signature(self) -> Option<&'static str>
Source§impl<'a, 'py> PyFunctionArgument<'a, 'py, false> for &'a BitmexHttpClient
impl<'a, 'py> PyFunctionArgument<'a, 'py, false> for &'a BitmexHttpClient
Source§impl<'a, 'py> PyFunctionArgument<'a, 'py, false> for &'a mut BitmexHttpClient
impl<'a, 'py> PyFunctionArgument<'a, 'py, false> for &'a mut BitmexHttpClient
Source§impl PyMethods<BitmexHttpClient> for PyClassImplCollector<BitmexHttpClient>
impl PyMethods<BitmexHttpClient> for PyClassImplCollector<BitmexHttpClient>
fn py_methods(self) -> &'static PyClassItems
Source§impl PyTypeInfo for BitmexHttpClient
impl PyTypeInfo for BitmexHttpClient
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.impl DerefToPyAny for BitmexHttpClient
Auto Trait Implementations§
impl Freeze for BitmexHttpClient
impl !RefUnwindSafe for BitmexHttpClient
impl Send for BitmexHttpClient
impl Sync for BitmexHttpClient
impl Unpin for BitmexHttpClient
impl !UnwindSafe for BitmexHttpClient
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FromPyObject<'_> for Twhere
T: PyClass + Clone,
impl<T> FromPyObject<'_> for Twhere
T: PyClass + Clone,
§fn extract_bound(obj: &Bound<'_, PyAny>) -> Result<T, PyErr>
fn extract_bound(obj: &Bound<'_, PyAny>) -> Result<T, PyErr>
§impl<'py, T> FromPyObjectBound<'_, 'py> for Twhere
T: FromPyObject<'py>,
impl<'py, T> FromPyObjectBound<'_, 'py> for Twhere
T: FromPyObject<'py>,
§fn from_py_object_bound(ob: Borrowed<'_, 'py, PyAny>) -> Result<T, PyErr>
fn from_py_object_bound(ob: Borrowed<'_, 'py, PyAny>) -> Result<T, PyErr>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> 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