Skip to main content

hypercall/standard_margin/
service.rs

1pub use hypercall_margin::standard::service::{
2    PositionMarginContribution, StandardMarginResult, StandardMarginService,
3};
4
5use crate::shared::order_types::ParsedSymbol;
6use hypercall_margin::standard::StandardAccount;
7use rust_decimal::Decimal;
8
9/// Extension trait for StandardMarginService that adds symbol-parsing risk check.
10pub trait StandardMarginServiceExt {
11    fn is_risk_increasing_for_symbol(
12        &self,
13        account: &StandardAccount,
14        symbol: &str,
15        side_is_buy: bool,
16        quantity: Decimal,
17    ) -> bool;
18}
19
20impl StandardMarginServiceExt for StandardMarginService {
21    fn is_risk_increasing_for_symbol(
22        &self,
23        account: &StandardAccount,
24        symbol: &str,
25        side_is_buy: bool,
26        quantity: Decimal,
27    ) -> bool {
28        let is_option = ParsedSymbol::from_symbol(symbol).is_ok();
29        self.is_risk_increasing(account, symbol, side_is_buy, quantity, is_option)
30    }
31}