Skip to main content

UserDataConfig

Struct UserDataConfig 

pub struct UserDataConfig {
    pub bcs: BcsConfig,
    pub source: Arc<str>,
    pub order_state_buffer: usize,
    pub reconnect_min: Duration,
    pub reconnect_max: Duration,
    pub subscribe_ack_timeout: Duration,
    pub price_grid: PriceGrid,
}
Expand description

Settings of UserDataConnector.

For a connector that sends orders the bcs config must be built with with_write(true).

§Examples

use brokapi_bcs_protocol::config::BcsConfig;
use brokapi_bcs::UserDataConfig;

let bcs = BcsConfig::new("refresh-token".into()).with_write(true);
let mut cfg = UserDataConfig::new(bcs, "bcs-ud");
assert_eq!(cfg.order_state_buffer, 1024);
// A bigger buffer gives a slow bot more room before an overflow closes the trading gate.
cfg.order_state_buffer = 4096;

Fields§

§bcs: BcsConfig

Client settings of the BCS API: refresh token, timeouts, endpoints, write switch.

§source: Arc<str>

Envelope source label, e.g. "bcs-ud".

§order_state_buffer: usize

Capacity of the lossless buffer of each order state and execution subscription (default 1024 events). When it is full, the subscription reports an overflow and the connector becomes degraded: commands are refused until the next successful reconcile.

§reconnect_min: Duration

Pause before the first reconnect of the WebSocket, doubling up to reconnect_max (default 0.5 s, as at T-Bank and Finam).

§reconnect_max: Duration

Upper bound of the pause (default 30 s). The pause returns to reconnect_min once a connection has lived 10 seconds.

§subscribe_ack_timeout: Duration

How long a subscribe_* call waits for the WebSocket of its channel to be open (default 3 s). The call returns when the socket is open: an order placed right after it is not missed. If the socket does not open in time, the call fails with Transport and the subscription is taken back, so the call can be repeated.

§price_grid: PriceGrid

Price steps the connector checks order prices against (default: empty, nothing is checked). Fill it with [PriceGrid::learn] from the trading parameters of the instruments you trade. A price off the step is then refused with Rejected (price_off_step) before anything is sent.

Implementations§

§

impl UserDataConfig

pub fn new(bcs: BcsConfig, source: impl Into<Arc<str>>) -> UserDataConfig

Creates a config with the default buffer (1024 events), the default reconnect pauses (0.5 s up to 30 s) and a 3 s wait for the socket in subscribe_*.

source is the label put in every Envelope this connector emits.

Trait Implementations§

§

impl Clone for UserDataConfig

§

fn clone(&self) -> UserDataConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for UserDataConfig

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<L> LayerExt<L> for L

§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in [Layered].
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more