From 20307a8b3f9c31d66201bcd268ade2f79f4a5e50 Mon Sep 17 00:00:00 2001 From: Sunli Date: Fri, 8 Mar 2024 11:41:20 +0800 Subject: [PATCH] add StockPosition.init_quantity --- c/csrc/include/longport.h | 4 ++++ c/src/trade_context/types.rs | 11 +++++++++++ cpp/include/types.hpp | 2 ++ cpp/src/convert.hpp | 12 +++++++++--- .../main/java/com/longport/trade/StockPosition.java | 11 ++++++++--- java/src/types/classes.rs | 3 ++- nodejs/index.d.ts | 2 ++ nodejs/src/trade/types.rs | 3 +++ python/pysrc/longport/openapi.pyi | 5 +++++ python/src/trade/types.rs | 3 +++ rust/src/trade/types.rs | 3 +++ 11 files changed, 52 insertions(+), 7 deletions(-) diff --git a/c/csrc/include/longport.h b/c/csrc/include/longport.h index cd46e36b6..28bfc0c33 100644 --- a/c/csrc/include/longport.h +++ b/c/csrc/include/longport.h @@ -2735,6 +2735,10 @@ typedef struct lb_stock_position_t { * Market */ enum lb_market_t market; + /** + * Initial position before market opening + */ + const struct lb_decimal_t *init_quantity; } lb_stock_position_t; /** diff --git a/c/src/trade_context/types.rs b/c/src/trade_context/types.rs index 147f7b3c6..9a184e310 100644 --- a/c/src/trade_context/types.rs +++ b/c/src/trade_context/types.rs @@ -1161,6 +1161,8 @@ pub struct CStockPosition { pub cost_price: *const CDecimal, /// Market pub market: CMarket, + /// Initial position before market opening + init_quantity: *const CDecimal, } pub(crate) struct CStockPositionOwned { @@ -1179,6 +1181,8 @@ pub(crate) struct CStockPositionOwned { cost_price: CDecimal, /// Market market: Market, + /// Initial position before market opening + init_quantity: Option, } impl From for CStockPositionOwned { @@ -1191,6 +1195,7 @@ impl From for CStockPositionOwned { currency, cost_price, market, + init_quantity, } = position; Self { symbol: symbol.into(), @@ -1200,6 +1205,7 @@ impl From for CStockPositionOwned { currency: currency.into(), cost_price: cost_price.into(), market, + init_quantity: init_quantity.map(Into::into), } } } @@ -1216,6 +1222,7 @@ impl ToFFI for CStockPositionOwned { currency, cost_price, market, + init_quantity, } = self; CStockPosition { symbol: symbol.to_ffi_type(), @@ -1225,6 +1232,10 @@ impl ToFFI for CStockPositionOwned { currency: currency.to_ffi_type(), cost_price: cost_price.to_ffi_type(), market: (*market).into(), + init_quantity: init_quantity + .as_ref() + .map(ToFFI::to_ffi_type) + .unwrap_or(std::ptr::null()), } } } diff --git a/cpp/include/types.hpp b/cpp/include/types.hpp index 985515fd6..d81148604 100644 --- a/cpp/include/types.hpp +++ b/cpp/include/types.hpp @@ -1534,6 +1534,8 @@ struct StockPosition Decimal cost_price; /// Market Market market; + /// Initial position before market opening + std::optional init_quantity; }; /// Stock position channel diff --git a/cpp/src/convert.hpp b/cpp/src/convert.hpp index 16dd1c366..ef92581f5 100644 --- a/cpp/src/convert.hpp +++ b/cpp/src/convert.hpp @@ -1339,10 +1339,16 @@ inline StockPosition convert(const lb_stock_position_t* position) { return StockPosition{ - position->symbol, position->symbol_name, - position->quantity, position->available_quantity, - position->currency, Decimal(position->cost_price), + position->symbol, + position->symbol_name, + position->quantity, + position->available_quantity, + position->currency, + Decimal(position->cost_price), convert(position->market), + position->init_quantity + ? std::optional{ Decimal(position->init_quantity) } + : std::nullopt, }; } diff --git a/java/javasrc/src/main/java/com/longport/trade/StockPosition.java b/java/javasrc/src/main/java/com/longport/trade/StockPosition.java index 00dd961d0..fdada3791 100644 --- a/java/javasrc/src/main/java/com/longport/trade/StockPosition.java +++ b/java/javasrc/src/main/java/com/longport/trade/StockPosition.java @@ -12,6 +12,7 @@ public class StockPosition { private String currency; private BigDecimal costPrice; private Market market; + private BigDecimal initQuantity; public String getSymbol() { return symbol; @@ -41,10 +42,14 @@ public Market getMarket() { return market; } + public BigDecimal getInitQuantity() { + return initQuantity; + } + @Override public String toString() { - return "StockPosition [availableQuantity=" + availableQuantity + ", costPrice=" + costPrice + ", currency=" - + currency + ", market=" + market + ", quantity=" + quantity + ", symbol=" + symbol + ", symbolName=" - + symbolName + "]"; + return "StockPosition [symbol=" + symbol + ", symbolName=" + symbolName + ", quantity=" + quantity + + ", availableQuantity=" + availableQuantity + ", currency=" + currency + ", costPrice=" + costPrice + + ", market=" + market + ", initQuantity=" + initQuantity + "]"; } } diff --git a/java/src/types/classes.rs b/java/src/types/classes.rs index 6390ac7cc..d33c8ceaa 100644 --- a/java/src/types/classes.rs +++ b/java/src/types/classes.rs @@ -715,7 +715,8 @@ impl_java_class!( available_quantity, currency, cost_price, - market + market, + init_quantity ] ); diff --git a/nodejs/index.d.ts b/nodejs/index.d.ts index 4d826b970..a31244575 100644 --- a/nodejs/index.d.ts +++ b/nodejs/index.d.ts @@ -2736,6 +2736,8 @@ export class StockPosition { get costPrice(): Decimal /** Market */ get market(): Market + /** Initial position before market opening */ + get initQuantity(): Decimal | null } /** Margin ratio */ export class MarginRatio { diff --git a/nodejs/src/trade/types.rs b/nodejs/src/trade/types.rs index 1ffa048a3..6c0a21f4b 100644 --- a/nodejs/src/trade/types.rs +++ b/nodejs/src/trade/types.rs @@ -729,6 +729,9 @@ pub struct StockPosition { cost_price: Decimal, /// Market market: Market, + /// Initial position before market opening + #[js(opt)] + init_quantity: Option, } /// Margin ratio diff --git a/python/pysrc/longport/openapi.pyi b/python/pysrc/longport/openapi.pyi index f03a13db5..7a48a70e2 100644 --- a/python/pysrc/longport/openapi.pyi +++ b/python/pysrc/longport/openapi.pyi @@ -4135,6 +4135,11 @@ class StockPosition: Market """ + init_quantity: Optional[Decimal] + """ + Initial position before market opening + """ + class StockPositionChannel: """ diff --git a/python/src/trade/types.rs b/python/src/trade/types.rs index af27b9c39..4fbf99ec6 100644 --- a/python/src/trade/types.rs +++ b/python/src/trade/types.rs @@ -725,6 +725,9 @@ pub(crate) struct StockPosition { cost_price: PyDecimal, /// Market market: Market, + /// Initial position before market opening + #[py(opt)] + pub init_quantity: Option, } /// Margin ratio diff --git a/rust/src/trade/types.rs b/rust/src/trade/types.rs index bfdcc4836..e8d210786 100644 --- a/rust/src/trade/types.rs +++ b/rust/src/trade/types.rs @@ -713,6 +713,9 @@ pub struct StockPosition { pub cost_price: Decimal, /// Market pub market: Market, + /// Initial position before market opening + #[serde(with = "serde_utils::decimal_opt_empty_is_none")] + pub init_quantity: Option, } /// Margin ratio