diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 1e5158655..2752d3c6b 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -2,7 +2,7 @@ name: Release
on:
push:
branches:
- - release
+ - release1
jobs:
build-python-sdk:
@@ -515,236 +515,3 @@ jobs:
runs-on: ubuntu-24.04
steps:
- run: echo "All builds are done"
-
- publish-rust-sdk:
- needs:
- - build
- runs-on: ubuntu-24.04
- strategy:
- fail-fast: true
- max-parallel: 1
- matrix:
- package:
- - name: longport-proto
- registryName: longport-proto
- path: rust/crates/proto
- - name: longport-httpcli
- registryName: longport-httpcli
- path: rust/crates/httpclient
- - name: longport-wscli
- registryName: longport-wscli
- path: rust/crates/wsclient
- - name: longport-candlesticks
- registryName: longport-candlesticks
- path: rust/crates/candlesticks
- - name: longport
- registryName: longport
- path: rust
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- submodules: true
- - uses: dtolnay/rust-toolchain@stable
- with:
- toolchain: stable
- - name: get version
- run: echo PACKAGE_VERSION=$(sed -nE 's/^\s*version = "(.*?)"/\1/p' Cargo.toml) >> $GITHUB_ENV
- - name: check published version
- run: echo PUBLISHED_VERSION=$(cargo search ${{ matrix.package.registryName }} --limit 1 | sed -nE 's/^[^"]*"//; s/".*//1p' -) >> $GITHUB_ENV
- - name: cargo login
- if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION
- run: cargo login ${{ secrets.CRATES_TOKEN }}
- - name: cargo package
- if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION
- working-directory: ${{ matrix.package.path }}
- run: |
- cargo package
- echo "We will publish:" $PACKAGE_VERSION
- echo "This is current latest:" $PUBLISHED_VERSION
- - name: Publish ${{ matrix.package.name }}
- if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION
- working-directory: ${{ matrix.package.path }}
- run: |
- echo "# Cargo Publish"
- cargo publish --no-verify
-
- publish-cpp-sdk:
- needs:
- - build
- runs-on: ubuntu-24.04
- steps:
- - uses: actions/checkout@v4
-
- - name: Download includes
- uses: actions/download-artifact@v5
- with:
- path: ./sdk/libs
- pattern: libs-*
- merge-multiple: true
-
- - name: Download includes
- uses: actions/download-artifact@v5
- with:
- path: ./sdk/include
- pattern: include-*
- merge-multiple: true
-
- - name: Get Version
- run: echo SDK_VERSION=$(sed -nE 's/^\s*version = "(.*?)"/\1/p' Cargo.toml) >> $GITHUB_ENV
-
- - name: Package
- run: tar czvf openapi-cpp-sdk-$SDK_VERSION.tar.gz ./sdk
-
- - name: Upload SDK to BJ
- env:
- AWS_ACCESS_KEY_ID: ${{ secrets.FE_S3_OPEN_STATIC_PROD_BJ_ACCESS_KEY_ID }}
- AWS_SECRET_ACCESS_KEY: ${{ secrets.FE_S3_OPEN_STATIC_PROD_BJ_ACCESS_KEY_SECRET }}
- run: |
- aws --region=${{ secrets.PROD_BJ_AWS_DEFAULT_REGION }} s3 cp openapi-cpp-sdk-$SDK_VERSION.tar.gz s3://${{ secrets.FE_S3_OPEN_STATIC_PROD_BJ_BUCKET }}/openapi-sdk/ --cache-control max-age=31536000
-
- - name: Upload SDK to HK
- env:
- AWS_ACCESS_KEY_ID: ${{ secrets.FE_S3_OPEN_STATIC_PROD_HK_ACCESS_KEY_ID }}
- AWS_SECRET_ACCESS_KEY: ${{ secrets.FE_S3_OPEN_STATIC_PROD_HK_ACCESS_KEY_SECRET }}
- run: |
- aws --region=${{ secrets.PROD_HK_AWS_DEFAULT_REGION }} s3 cp openapi-cpp-sdk-$SDK_VERSION.tar.gz s3://${{ secrets.FE_S3_OPEN_STATIC_PROD_HK_BUCKET }}/openapi-sdk/ --cache-control max-age=31536000
-
- publish-python-sdk:
- runs-on: ubuntu-24.04
- environment:
- name: pypi
- url: https://pypi.org/p/longport
- permissions:
- id-token: write
- needs:
- - build
- steps:
- - uses: actions/download-artifact@v5
- with:
- path: dist
- pattern: wheels-*
- merge-multiple: true
- - uses: actions/setup-python@v5
- with:
- python-version: 3.8
- - name: Publish to PyPi
- uses: pypa/gh-action-pypi-publish@release/v1
-
- publish-nodejs-sdk:
- runs-on: ubuntu-24.04
- needs:
- - build
- steps:
- - uses: actions/checkout@v4
- - name: Update versions
- run: node ./.github/misc/update_jssdk_version.mjs $(sed -nE 's/^\s*version = "(.*?)"/\1/p' Cargo.toml)
- - name: Setup node
- uses: actions/setup-node@v4
- with:
- node-version: 20
- check-latest: true
- - name: Install napi-rs/cli
- run: npm install -g @napi-rs/cli
- - name: Download all artifacts
- uses: actions/download-artifact@v5
- with:
- path: ./nodejs/artifacts
- pattern: bindings-*we
- merge-multiple: true
- - name: Move artifacts
- run: napi artifacts
- working-directory: ./nodejs
- - name: List packages
- run: ls -R ./npm
- shell: bash
- working-directory: ./nodejs
- - name: Publish
- run: |
- echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
- npm publish --access public
- working-directory: ./nodejs
- env:
- NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
-
- publish-java-sdk:
- runs-on: ubuntu-24.04
- needs: build
- steps:
- - uses: actions/checkout@v4
- with:
- submodules: true
-
- - name: Install JDK
- uses: actions/setup-java@v5
- with:
- java-version: "11"
- distribution: "temurin"
-
- - name: Download all artifacts
- uses: actions/download-artifact@v5
- with:
- path: ./java/jnis
- pattern: jnis-*
- merge-multiple: true
-
- - name: Configure Maven settings.xml
- run: |
- mkdir -p ~/.m2
- cat > ~/.m2/settings.xml << EOF
-
-
-
- gpg
-
- true
-
-
- gpg
- ${{ secrets.GPG_PASSPHRASE }}
-
-
-
-
-
- central
- ${{ secrets.CENTRAL_USERNAME }}
- ${{ secrets.CENTRAL_PASSWORD }}
-
-
-
- EOF
-
- - name: Copy jnis
- working-directory: java
- run: |
- mkdir -p javasrc/target/natives/linux_64
- mkdir -p javasrc/target/natives/linux_arm64
- mkdir -p javasrc/target/natives/windows_64
- mkdir -p javasrc/target/natives/osx_64
- mkdir -p javasrc/target/natives/osx_arm64
- mv jnis/longport_java-x86_64-unknown-linux-gnu.so javasrc/target/natives/linux_64/liblongport_java.so
- mv jnis/longport_java-aarch64-unknown-linux-gnu.so javasrc/target/natives/linux_arm64/liblongport_java.so
- mv jnis/longport_java-x86_64-pc-windows-msvc.dll javasrc/target/natives/windows_64/longport_java.dll
- mv jnis/longport_java-x86_64-apple-darwin.dylib javasrc/target/natives/osx_64/liblongport_java.dylib
- mv jnis/longport_java-aarch64-apple-darwin.dylib javasrc/target/natives/osx_arm64/liblongport_java.dylib
-
- - name: Get version
- run: echo PACKAGE_VERSION=$(sed -nE 's/^\s*version = "(.*?)"/\1/p' Cargo.toml) >> $GITHUB_ENV
-
- - name: Update version
- working-directory: java/javasrc
- run: mvn versions:set -DnewVersion=${PACKAGE_VERSION}
-
- - name: Import GPG private key
- env:
- GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
- GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- run: |
- echo "$GPG_PRIVATE_KEY" > private.key
- gpg --import --batch private.key
- rm private.key
-
- - name: Deploy Maven package
- working-directory: java/javasrc
- run: mvn deploy --activate-profiles release
diff --git a/c/csrc/include/longport.h b/c/csrc/include/longport.h
index 8f901212a..7261c70a3 100644
--- a/c/csrc/include/longport.h
+++ b/c/csrc/include/longport.h
@@ -1928,6 +1928,18 @@ typedef struct lb_replace_order_options_t {
* Trailing percent (can be null)
*/
const struct lb_decimal_t *trailing_percent;
+ /**
+ * Limit depth level (can be null)
+ */
+ const int32_t *limit_depth_level;
+ /**
+ * Trigger count (can be null)
+ */
+ const int32_t *trigger_count;
+ /**
+ * Monitor price (can be null)
+ */
+ const struct lb_decimal_t *monitor_price;
/**
* Remark (can be null)
*/
@@ -1987,6 +1999,18 @@ typedef struct lb_submit_order_options_t {
* Enable or disable outside regular trading hours (can be null)
*/
const enum lb_outside_rth_t *outside_rth;
+ /**
+ * Limit depth level (can be null)
+ */
+ const int32_t *limit_depth_level;
+ /**
+ * Trigger count (can be null)
+ */
+ const int32_t *trigger_count;
+ /**
+ * Monitor price (can be null)
+ */
+ const struct lb_decimal_t *monitor_price;
/**
* Remark (Maximum 64 characters) (can be null)
*/
@@ -2859,6 +2883,18 @@ typedef struct lb_order_t {
* Enable or disable outside regular trading hours (maybe null)
*/
const enum lb_outside_rth_t *outside_rth;
+ /**
+ * Limit depth level (maybe null)
+ */
+ const int32_t *limit_depth_level;
+ /**
+ * Trigger count (maybe null)
+ */
+ const int32_t *trigger_count;
+ /**
+ * Monitor price (maybe null)
+ */
+ const struct lb_decimal_t *monitor_price;
/**
* Remark
*/
@@ -3399,6 +3435,18 @@ typedef struct lb_order_detail_t {
* Enable or disable outside regular trading hours (maybe null)
*/
const enum lb_outside_rth_t *outside_rth;
+ /**
+ * Limit depth level (maybe null)
+ */
+ const int32_t *limit_depth_level;
+ /**
+ * Trigger count (maybe null)
+ */
+ const int32_t *trigger_count;
+ /**
+ * Monitor price (maybe null)
+ */
+ const struct lb_decimal_t *monitor_price;
/**
* Remark
*/
diff --git a/c/src/trade_context/context.rs b/c/src/trade_context/context.rs
index 8853c1b79..4ae7739f3 100644
--- a/c/src/trade_context/context.rs
+++ b/c/src/trade_context/context.rs
@@ -393,6 +393,15 @@ pub unsafe extern "C" fn lb_trade_context_replace_order(
if !(*opts).trailing_percent.is_null() {
opts2 = opts2.trailing_percent((*(*opts).trailing_percent).value);
}
+ if !(*opts).limit_depth_level.is_null() {
+ opts2 = opts2.limit_depth_level(*(*opts).limit_depth_level);
+ }
+ if !(*opts).trigger_count.is_null() {
+ opts2 = opts2.trigger_count(*(*opts).trigger_count);
+ }
+ if !(*opts).monitor_price.is_null() {
+ opts2 = opts2.monitor_price((*(*opts).monitor_price).value);
+ }
if !(*opts).remark.is_null() {
opts2 = opts2.remark(cstr_to_rust((*opts).remark));
}
@@ -446,6 +455,15 @@ pub unsafe extern "C" fn lb_trade_context_submit_order(
if !(*opts).outside_rth.is_null() {
opts2 = opts2.outside_rth((*(*opts).outside_rth).into());
}
+ if !(*opts).limit_depth_level.is_null() {
+ opts2 = opts2.limit_depth_level(*(*opts).limit_depth_level);
+ }
+ if !(*opts).trigger_count.is_null() {
+ opts2 = opts2.trigger_count(*(*opts).trigger_count);
+ }
+ if !(*opts).monitor_price.is_null() {
+ opts2 = opts2.monitor_price((*(*opts).monitor_price).value);
+ }
if !(*opts).remark.is_null() {
opts2 = opts2.remark(cstr_to_rust((*opts).remark));
}
diff --git a/c/src/trade_context/types.rs b/c/src/trade_context/types.rs
index 2113bb129..6d9efb987 100644
--- a/c/src/trade_context/types.rs
+++ b/c/src/trade_context/types.rs
@@ -397,6 +397,12 @@ pub struct COrder {
pub currency: *const c_char,
/// Enable or disable outside regular trading hours (maybe null)
pub outside_rth: *const COutsideRTH,
+ /// Limit depth level (maybe null)
+ pub limit_depth_level: *const i32,
+ /// Trigger count (maybe null)
+ pub trigger_count: *const i32,
+ /// Monitor price (maybe null)
+ pub monitor_price: *const CDecimal,
/// Remark
pub remark: *const c_char,
}
@@ -428,6 +434,9 @@ pub(crate) struct COrderOwned {
trigger_status: Option,
currency: CString,
outside_rth: Option,
+ limit_depth_level: Option,
+ trigger_count: Option,
+ monitor_price: Option,
remark: CString,
}
@@ -459,6 +468,9 @@ impl From for COrderOwned {
trigger_status,
currency,
outside_rth,
+ limit_depth_level,
+ trigger_count,
+ monitor_price,
remark,
} = order;
COrderOwned {
@@ -487,6 +499,9 @@ impl From for COrderOwned {
trigger_status: trigger_status.map(Into::into),
currency: currency.into(),
outside_rth: outside_rth.map(Into::into),
+ limit_depth_level,
+ trigger_count,
+ monitor_price: monitor_price.map(Into::into),
remark: remark.into(),
}
}
@@ -522,6 +537,9 @@ impl ToFFI for COrderOwned {
trigger_status,
currency,
outside_rth,
+ limit_depth_level,
+ trigger_count,
+ monitor_price,
remark,
} = self;
COrder {
@@ -586,6 +604,18 @@ impl ToFFI for COrderOwned {
.as_ref()
.map(|value| value as *const COutsideRTH)
.unwrap_or(std::ptr::null()),
+ limit_depth_level: limit_depth_level
+ .as_ref()
+ .map(|value| value as *const i32)
+ .unwrap_or(std::ptr::null()),
+ trigger_count: trigger_count
+ .as_ref()
+ .map(|value| value as *const i32)
+ .unwrap_or(std::ptr::null()),
+ monitor_price: monitor_price
+ .as_ref()
+ .map(ToFFI::to_ffi_type)
+ .unwrap_or(std::ptr::null()),
remark: remark.to_ffi_type(),
}
}
@@ -647,6 +677,12 @@ pub struct CReplaceOrderOptions {
pub trailing_amount: *const CDecimal,
/// Trailing percent (can be null)
pub trailing_percent: *const CDecimal,
+ /// Limit depth level (can be null)
+ pub limit_depth_level: *const i32,
+ /// Trigger count (can be null)
+ pub trigger_count: *const i32,
+ /// Monitor price (can be null)
+ pub monitor_price: *const CDecimal,
/// Remark (can be null)
pub remark: *const c_char,
}
@@ -680,6 +716,12 @@ pub struct CSubmitOrderOptions {
pub expire_date: *const CDate,
/// Enable or disable outside regular trading hours (can be null)
pub outside_rth: *const COutsideRTH,
+ /// Limit depth level (can be null)
+ pub limit_depth_level: *const i32,
+ /// Trigger count (can be null)
+ pub trigger_count: *const i32,
+ /// Monitor price (can be null)
+ pub monitor_price: *const CDecimal,
/// Remark (Maximum 64 characters) (can be null)
pub remark: *const c_char,
}
@@ -1692,6 +1734,12 @@ pub struct COrderDetail {
pub currency: *const c_char,
/// Enable or disable outside regular trading hours (maybe null)
pub outside_rth: *const COutsideRTH,
+ /// Limit depth level (maybe null)
+ pub limit_depth_level: *const i32,
+ /// Trigger count (maybe null)
+ pub trigger_count: *const i32,
+ /// Monitor price (maybe null)
+ pub monitor_price: *const CDecimal,
/// Remark
pub remark: *const c_char,
/// Commission-free Status
@@ -1747,6 +1795,9 @@ pub(crate) struct COrderDetailOwned {
trigger_status: Option,
currency: CString,
outside_rth: Option,
+ limit_depth_level: Option,
+ trigger_count: Option,
+ monitor_price: Option,
remark: CString,
free_status: CCommissionFreeStatus,
free_amount: Option,
@@ -1789,6 +1840,9 @@ impl From for COrderDetailOwned {
trigger_status,
currency,
outside_rth,
+ limit_depth_level,
+ trigger_count,
+ monitor_price,
remark,
free_status,
free_amount,
@@ -1828,6 +1882,9 @@ impl From for COrderDetailOwned {
trigger_status: trigger_status.map(Into::into),
currency: currency.into(),
outside_rth: outside_rth.map(Into::into),
+ limit_depth_level,
+ trigger_count,
+ monitor_price: monitor_price.map(Into::into),
remark: remark.into(),
free_status: free_status.into(),
free_amount: free_amount.map(Into::into),
@@ -1874,6 +1931,9 @@ impl ToFFI for COrderDetailOwned {
trigger_status,
currency,
outside_rth,
+ limit_depth_level,
+ trigger_count,
+ monitor_price,
remark,
free_status,
free_amount,
@@ -1949,6 +2009,18 @@ impl ToFFI for COrderDetailOwned {
.as_ref()
.map(|value| value as *const COutsideRTH)
.unwrap_or(std::ptr::null()),
+ limit_depth_level: limit_depth_level
+ .as_ref()
+ .map(|value| value as *const i32)
+ .unwrap_or(std::ptr::null()),
+ trigger_count: trigger_count
+ .as_ref()
+ .map(|value| value as *const i32)
+ .unwrap_or(std::ptr::null()),
+ monitor_price: monitor_price
+ .as_ref()
+ .map(ToFFI::to_ffi_type)
+ .unwrap_or(std::ptr::null()),
remark: remark.to_ffi_type(),
free_status: *free_status,
free_amount: free_amount
diff --git a/cpp/include/types.hpp b/cpp/include/types.hpp
index 1b6ed1252..5d7a495a4 100644
--- a/cpp/include/types.hpp
+++ b/cpp/include/types.hpp
@@ -1490,6 +1490,12 @@ struct Order
std::string currency;
/// Enable or disable outside regular trading hours
std::optional outside_rth;
+ /// Limit depth level
+ std::optional limit_depth_level;
+ /// Trigger count
+ std::optional trigger_count;
+ /// Monitor price
+ std::optional monitor_price;
/// Remark
std::string remark;
};
@@ -1598,6 +1604,12 @@ struct ReplaceOrderOptions
std::optional trailing_amount;
/// Trailing percent
std::optional trailing_percent;
+ /// Limit depth level
+ std::optional limit_depth_level;
+ /// Trigger count
+ std::optional trigger_count;
+ /// Monitor price
+ std::optional monitor_price;
/// Remark
std::optional remark;
};
@@ -1630,6 +1642,12 @@ struct SubmitOrderOptions
std::optional expire_date;
/// Enable or disable outside regular trading hours
std::optional outside_rth;
+ /// Limit depth level
+ std::optional limit_depth_level;
+ /// Trigger count
+ std::optional trigger_count;
+ /// Monitor price
+ std::optional monitor_price;
/// Remark (Maximum 64 characters)
std::optional remark;
};
@@ -1985,6 +2003,12 @@ struct OrderDetail
std::string currency;
/// Enable or disable outside regular trading hours
std::optional outside_rth;
+ /// Limit depth level
+ std::optional limit_depth_level;
+ /// Trigger count
+ std::optional trigger_count;
+ /// Monitor price
+ std::optional monitor_price;
/// Remark
std::string remark;
/// Commission-free Status
diff --git a/cpp/src/convert.hpp b/cpp/src/convert.hpp
index 4e7848ce3..2592e6cca 100644
--- a/cpp/src/convert.hpp
+++ b/cpp/src/convert.hpp
@@ -1304,6 +1304,12 @@ convert(const lb_order_t* order)
order->currency,
order->outside_rth ? std::optional{ convert(*order->outside_rth) }
: std::nullopt,
+ order->limit_depth_level ? std::optional{ *order->limit_depth_level }
+ : std::nullopt,
+ order->trigger_count ? std::optional{ *order->trigger_count }
+ : std::nullopt,
+ order->monitor_price ? std::optional{ Decimal(order->monitor_price) }
+ : std::nullopt,
order->remark
};
}
@@ -1720,6 +1726,12 @@ convert(const lb_order_detail_t* order)
order->currency,
order->outside_rth ? std::optional{ convert(*order->outside_rth) }
: std::nullopt,
+ order->limit_depth_level ? std::optional{ *order->limit_depth_level }
+ : std::nullopt,
+ order->trigger_count ? std::optional{ *order->trigger_count }
+ : std::nullopt,
+ order->monitor_price ? std::optional{ Decimal(order->monitor_price) }
+ : std::nullopt,
order->remark,
convert(order->free_status),
order->free_amount ? std::optional{ Decimal(order->free_amount) }
diff --git a/cpp/src/trade_context.cpp b/cpp/src/trade_context.cpp
index 354fd2e38..92b9cf02f 100644
--- a/cpp/src/trade_context.cpp
+++ b/cpp/src/trade_context.cpp
@@ -377,6 +377,9 @@ TradeContext::replace_order(const ReplaceOrderOptions& opts,
nullptr,
nullptr,
nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
};
opts2.price = opts.price ? (const lb_decimal_t*)opts.price.value() : nullptr;
@@ -392,6 +395,13 @@ TradeContext::replace_order(const ReplaceOrderOptions& opts,
opts2.trailing_percent =
opts.trailing_percent ? (const lb_decimal_t*)opts.trailing_percent.value()
: nullptr;
+ opts2.limit_depth_level =
+ opts.limit_depth_level ? &opts.limit_depth_level.value() : nullptr;
+ opts2.trigger_count =
+ opts.trigger_count ? &opts.trigger_count.value() : nullptr;
+ opts2.monitor_price = opts.monitor_price
+ ? (const lb_decimal_t*)opts.monitor_price.value()
+ : nullptr;
opts2.remark = opts.remark ? opts.remark->c_str() : nullptr;
lb_trade_context_replace_order(
@@ -426,6 +436,9 @@ TradeContext::submit_order(
nullptr,
nullptr,
nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
opts.remark ? opts.remark->c_str() : nullptr,
};
lb_date_t expire_date;
@@ -450,6 +463,15 @@ TradeContext::submit_order(
expire_date = convert(&opts.expire_date.value());
opts2.expire_date = &expire_date;
}
+ if (opts.limit_depth_level) {
+ opts2.limit_depth_level = &opts.limit_depth_level.value();
+ }
+ if (opts.trigger_count) {
+ opts2.trigger_count = &opts.trigger_count.value();
+ }
+ if (opts.monitor_price) {
+ opts2.monitor_price = (const lb_decimal_t*)opts.monitor_price.value();
+ }
if (opts.outside_rth) {
outside_rth = convert(*opts.outside_rth);
opts2.outside_rth = &outside_rth;
diff --git a/java/javasrc/src/main/java/com/longport/trade/Order.java b/java/javasrc/src/main/java/com/longport/trade/Order.java
index 20135c5b0..70e91ecaa 100644
--- a/java/javasrc/src/main/java/com/longport/trade/Order.java
+++ b/java/javasrc/src/main/java/com/longport/trade/Order.java
@@ -30,6 +30,9 @@ public class Order {
private TriggerStatus triggerStatus;
private String currency;
private OutsideRTH outsideRth;
+ private Integer limitDepthLevel;
+ private Integer triggerCount;
+ private BigDecimal monitorPrice;
private String remark;
public String getOrderId() {
@@ -136,15 +139,29 @@ public String remark() {
return remark;
}
+ public Integer getLimitDepthLevel() {
+ return limitDepthLevel;
+ }
+
+ public Integer getTriggerCount() {
+ return triggerCount;
+ }
+
+ public BigDecimal getMonitorPrice() {
+ return monitorPrice;
+ }
+
@Override
public String toString() {
- return "Order [currency=" + currency + ", executedPrice=" + executedPrice + ", executedQuantity="
- + executedQuantity + ", expireDate=" + expireDate + ", lastDone=" + lastDone + ", limitOffset="
- + limitOffset + ", msg=" + msg + ", orderId=" + orderId + ", orderType=" + orderType + ", outsideRth="
- + outsideRth + ", price=" + price + ", quantity=" + quantity + ", side=" + side + ", status=" + status
- + ", stockName=" + stockName + ", submittedAt=" + submittedAt + ", symbol=" + symbol + ", tag=" + tag
- + ", timeInForce=" + timeInForce + ", trailingAmount=" + trailingAmount + ", trailingPercent="
- + trailingPercent + ", triggerAt=" + triggerAt + ", triggerPrice=" + triggerPrice + ", triggerStatus="
- + triggerStatus + ", updatedAt=" + updatedAt + ", remark=" + remark + "]";
+ return "Order [orderId=" + orderId + ", status=" + status + ", stockName=" + stockName + ", quantity="
+ + quantity + ", executedQuantity=" + executedQuantity + ", price=" + price + ", executedPrice="
+ + executedPrice + ", submittedAt=" + submittedAt + ", side=" + side + ", symbol=" + symbol
+ + ", orderType=" + orderType + ", lastDone=" + lastDone + ", triggerPrice=" + triggerPrice + ", msg="
+ + msg + ", tag=" + tag + ", timeInForce=" + timeInForce + ", expireDate=" + expireDate + ", updatedAt="
+ + updatedAt + ", triggerAt=" + triggerAt + ", trailingAmount=" + trailingAmount + ", trailingPercent="
+ + trailingPercent + ", limitOffset=" + limitOffset + ", triggerStatus=" + triggerStatus + ", currency="
+ + currency + ", outsideRth=" + outsideRth + ", limitDepthLevel=" + limitDepthLevel + ", triggerCount="
+ + triggerCount + ", monitorPrice=" + monitorPrice + ", remark=" + remark + "]";
}
+
}
\ No newline at end of file
diff --git a/java/javasrc/src/main/java/com/longport/trade/OrderDetail.java b/java/javasrc/src/main/java/com/longport/trade/OrderDetail.java
index ea56420d9..7f059eec0 100644
--- a/java/javasrc/src/main/java/com/longport/trade/OrderDetail.java
+++ b/java/javasrc/src/main/java/com/longport/trade/OrderDetail.java
@@ -31,6 +31,9 @@ public class OrderDetail {
private TriggerStatus triggerStatus;
private String currency;
private OutsideRTH outsideRth;
+ private Integer limitDepthLevel;
+ private Integer triggerCount;
+ private BigDecimal monitorPrice;
private String remark;
private CommissionFreeStatus freeStatus;
private BigDecimal freeAmount;
@@ -144,6 +147,18 @@ public OutsideRTH getOutsideRth() {
return outsideRth;
}
+ public Integer getLimitDepthLevel() {
+ return limitDepthLevel;
+ }
+
+ public Integer getTriggerCount() {
+ return triggerCount;
+ }
+
+ public BigDecimal getMonitorPrice() {
+ return monitorPrice;
+ }
+
public String getRemark() {
return remark;
}
@@ -201,7 +216,8 @@ public String toString() {
+ msg + ", tag=" + tag + ", timeInForce=" + timeInForce + ", expireDate=" + expireDate + ", updatedAt="
+ updatedAt + ", triggerAt=" + triggerAt + ", trailingAmount=" + trailingAmount + ", trailingPercent="
+ trailingPercent + ", limitOffset=" + limitOffset + ", triggerStatus=" + triggerStatus + ", currency="
- + currency + ", outsideRth=" + outsideRth + ", remark=" + remark + ", freeStatus=" + freeStatus
+ + currency + ", outsideRth=" + outsideRth + ", limitDepthLevel=" + limitDepthLevel + ", triggerCount="
+ + triggerCount + ", monitorPrice=" + monitorPrice + ", remark=" + remark + ", freeStatus=" + freeStatus
+ ", freeAmount=" + freeAmount + ", freeCurrency=" + freeCurrency + ", deductionsStatus="
+ deductionsStatus + ", deductionsAmount=" + deductionsAmount + ", deductionsCurrency="
+ deductionsCurrency + ", platformDeductedStatus=" + platformDeductedStatus
diff --git a/java/javasrc/src/main/java/com/longport/trade/ReplaceOrderOptions.java b/java/javasrc/src/main/java/com/longport/trade/ReplaceOrderOptions.java
index 206c4151e..601ffa0b2 100644
--- a/java/javasrc/src/main/java/com/longport/trade/ReplaceOrderOptions.java
+++ b/java/javasrc/src/main/java/com/longport/trade/ReplaceOrderOptions.java
@@ -11,6 +11,9 @@ public class ReplaceOrderOptions {
private BigDecimal limitOffset;
private BigDecimal trailingAmount;
private BigDecimal trailingPercent;
+ private Integer limitDepthLevel;
+ private Integer triggerCount;
+ private BigDecimal monitorPrice;
private String remark;
public ReplaceOrderOptions(String orderId, BigDecimal quantity) {
@@ -43,6 +46,21 @@ public ReplaceOrderOptions setTrailingPercent(BigDecimal trailingPercent) {
return this;
}
+ public ReplaceOrderOptions setLimitDepthLevel(Integer limitDepthLevel) {
+ this.limitDepthLevel = limitDepthLevel;
+ return this;
+ }
+
+ public ReplaceOrderOptions setTriggerCount(Integer triggerCount) {
+ this.triggerCount = triggerCount;
+ return this;
+ }
+
+ public ReplaceOrderOptions setMonitorPrice(BigDecimal monitorPrice) {
+ this.monitorPrice = monitorPrice;
+ return this;
+ }
+
public ReplaceOrderOptions setRemark(String remark) {
this.remark = remark;
return this;
diff --git a/java/javasrc/src/main/java/com/longport/trade/SubmitOrderOptions.java b/java/javasrc/src/main/java/com/longport/trade/SubmitOrderOptions.java
index c21832e9f..41359dbdf 100644
--- a/java/javasrc/src/main/java/com/longport/trade/SubmitOrderOptions.java
+++ b/java/javasrc/src/main/java/com/longport/trade/SubmitOrderOptions.java
@@ -17,6 +17,9 @@ public class SubmitOrderOptions {
private BigDecimal trailingPercent;
private LocalDate expireDate;
private OutsideRTH outsideRth;
+ private Integer limitDepthLevel;
+ private Integer triggerCount;
+ private BigDecimal monitorPrice;
private String remark;
public SubmitOrderOptions(
@@ -67,6 +70,21 @@ public SubmitOrderOptions setOutsideRth(OutsideRTH outsideRth) {
return this;
}
+ public SubmitOrderOptions setLimitDepthLevel(Integer limitDepthLevel) {
+ this.limitDepthLevel = limitDepthLevel;
+ return this;
+ }
+
+ public SubmitOrderOptions setTriggerCount(Integer triggerCount) {
+ this.triggerCount = triggerCount;
+ return this;
+ }
+
+ public SubmitOrderOptions setMonitorPrice(BigDecimal monitorPrice) {
+ this.monitorPrice = monitorPrice;
+ return this;
+ }
+
public SubmitOrderOptions setRemark(String remark) {
this.remark = remark;
return this;
diff --git a/java/src/trade_context.rs b/java/src/trade_context.rs
index f04a7ade5..839bef950 100644
--- a/java/src/trade_context.rs
+++ b/java/src/trade_context.rs
@@ -350,6 +350,18 @@ pub unsafe extern "system" fn Java_com_longport_SdkNative_tradeContextReplaceOrd
if let Some(trailing_percent) = trailing_percent {
new_opts = new_opts.trailing_percent(trailing_percent);
}
+ let limit_depth_level: Option = get_field(env, &opts, "limitDepthLevel")?;
+ if let Some(limit_depth_level) = limit_depth_level {
+ new_opts = new_opts.limit_depth_level(limit_depth_level);
+ }
+ let trigger_count: Option = get_field(env, &opts, "triggerCount")?;
+ if let Some(trigger_count) = trigger_count {
+ new_opts = new_opts.trigger_count(trigger_count);
+ }
+ let monitor_price: Option = get_field(env, &opts, "monitorPrice")?;
+ if let Some(monitor_price) = monitor_price {
+ new_opts = new_opts.monitor_price(monitor_price);
+ }
let remark: Option = get_field(env, &opts, "remark")?;
if let Some(remark) = remark {
new_opts = new_opts.remark(remark);
@@ -407,6 +419,18 @@ pub unsafe extern "system" fn Java_com_longport_SdkNative_tradeContextSubmitOrde
if let Some(outside_rth) = outside_rth {
new_opts = new_opts.outside_rth(outside_rth);
}
+ let limit_depth_level: Option = get_field(env, &opts, "limitDepthLevel")?;
+ if let Some(limit_depth_level) = limit_depth_level {
+ new_opts = new_opts.limit_depth_level(limit_depth_level);
+ }
+ let trigger_count: Option = get_field(env, &opts, "triggerCount")?;
+ if let Some(trigger_count) = trigger_count {
+ new_opts = new_opts.trigger_count(trigger_count);
+ }
+ let monitor_price: Option = get_field(env, &opts, "monitorPrice")?;
+ if let Some(monitor_price) = monitor_price {
+ new_opts = new_opts.monitor_price(monitor_price);
+ }
let remark: Option = get_field(env, &opts, "remark")?;
if let Some(remark) = remark {
new_opts = new_opts.remark(remark);
diff --git a/java/src/types/classes.rs b/java/src/types/classes.rs
index c7c1d9b40..a03c0ccfd 100644
--- a/java/src/types/classes.rs
+++ b/java/src/types/classes.rs
@@ -652,6 +652,9 @@ impl_java_class!(
trigger_status,
currency,
outside_rth,
+ limit_depth_level,
+ trigger_count,
+ monitor_price,
remark
]
);
@@ -912,6 +915,9 @@ impl_java_class!(
trigger_status,
currency,
outside_rth,
+ limit_depth_level,
+ trigger_count,
+ monitor_price,
remark,
free_status,
free_amount,
diff --git a/mcp/src/server.rs b/mcp/src/server.rs
index 7e78f617a..73c6c4860 100644
--- a/mcp/src/server.rs
+++ b/mcp/src/server.rs
@@ -417,6 +417,12 @@ impl Longport {
/// - GTC: Good Till Cancel
/// - GTD: Good Till Date
time_in_force: String,
+ /// Limit depth level
+ limit_depth_level: Option,
+ /// Trigger count
+ trigger_count: Option,
+ /// Monitor price
+ monitor_price: Option,
) -> Result, Error> {
let mut opts = SubmitOrderOptions::new(
symbol,
@@ -475,6 +481,16 @@ impl Longport {
})?);
}
+ if let Some(limit_depth_level) = limit_depth_level {
+ opts = opts.limit_depth_level(limit_depth_level);
+ }
+ if let Some(trigger_count) = trigger_count {
+ opts = opts.trigger_count(trigger_count);
+ }
+ if let Some(monitor_price) = monitor_price {
+ opts = opts.monitor_price(monitor_price);
+ }
+
self.trade_context.submit_order(opts).await.map(Json)
}
diff --git a/nodejs/index.d.ts b/nodejs/index.d.ts
index 3f6047016..0a087c4d8 100644
--- a/nodejs/index.d.ts
+++ b/nodejs/index.d.ts
@@ -638,6 +638,12 @@ export declare class Order {
get currency(): string
/** Enable or disable outside regular trading hours */
get outsideRth(): OutsideRTH | null
+ /** Limit depth level */
+ get limitDepthLevel(): number | null
+ /** Trigger count */
+ get triggerCount(): number | null
+ /** Monitor price */
+ get monitorPrice(): Decimal | null
/** Remark */
get remark(): string
}
@@ -734,6 +740,12 @@ export declare class OrderDetail {
get currency(): string
/** Enable or disable outside regular trading hours */
get outsideRth(): OutsideRTH | null
+ /** Limit depth level */
+ get limitDepthLevel(): number | null
+ /** Trigger count */
+ get triggerCount(): number | null
+ /** Monitor price */
+ get monitorPrice(): Decimal | null
/** Remark */
get remark(): string
/** Commission-free Status */
@@ -2979,6 +2991,12 @@ export interface ReplaceOrderOptions {
trailingAmount?: Decimal
/** Trailing percent (`TSLPPCT` / `TSMAPCT` Required) */
trailingPercent?: Decimal
+ /** Limit depth level */
+ limitDepthLevel?: number
+ /** Trigger count */
+ triggerCount?: number
+ /** Monitor price */
+ monitorPrice?: Decimal
/** Remark (Maximum 64 characters) */
remark?: string
}
@@ -3094,6 +3112,12 @@ export interface SubmitOrderOptions {
expireDate?: NaiveDate
/** Enable or disable outside regular trading hours */
outsideRth?: OutsideRTH
+ /** Limit depth level */
+ limitDepthLevel?: number
+ /** Trigger count */
+ triggerCount?: number
+ /** Monitor price */
+ monitorPrice?: Decimal
/** Remark (Maximum 64 characters) */
remark?: string
}
diff --git a/nodejs/src/trade/requests/replace_order.rs b/nodejs/src/trade/requests/replace_order.rs
index 4bb4b0f51..e25a858ae 100644
--- a/nodejs/src/trade/requests/replace_order.rs
+++ b/nodejs/src/trade/requests/replace_order.rs
@@ -19,6 +19,12 @@ pub struct ReplaceOrderOptions<'env> {
pub trailing_amount: Option>,
/// Trailing percent (`TSLPPCT` / `TSMAPCT` Required)
pub trailing_percent: Option>,
+ /// Limit depth level
+ pub limit_depth_level: Option,
+ /// Trigger count
+ pub trigger_count: Option,
+ /// Monitor price
+ pub monitor_price: Option>,
/// Remark (Maximum 64 characters)
pub remark: Option,
}
@@ -42,6 +48,15 @@ impl<'env> From> for longport::trade::ReplaceOrderOpti
if let Some(trailing_percent) = opts.trailing_percent {
opts2 = opts2.trailing_percent(trailing_percent.0);
}
+ if let Some(limit_depth_level) = opts.limit_depth_level {
+ opts2 = opts2.limit_depth_level(limit_depth_level);
+ }
+ if let Some(trigger_count) = opts.trigger_count {
+ opts2 = opts2.trigger_count(trigger_count);
+ }
+ if let Some(monitor_price) = opts.monitor_price {
+ opts2 = opts2.monitor_price(monitor_price.0);
+ }
if let Some(remark) = opts.remark {
opts2 = opts2.remark(remark);
}
diff --git a/nodejs/src/trade/requests/submit_order.rs b/nodejs/src/trade/requests/submit_order.rs
index 3b411751c..d966222c6 100644
--- a/nodejs/src/trade/requests/submit_order.rs
+++ b/nodejs/src/trade/requests/submit_order.rs
@@ -34,6 +34,12 @@ pub struct SubmitOrderOptions<'env> {
pub expire_date: Option>,
/// Enable or disable outside regular trading hours
pub outside_rth: Option,
+ /// Limit depth level
+ pub limit_depth_level: Option,
+ /// Trigger count
+ pub trigger_count: Option,
+ /// Monitor price
+ pub monitor_price: Option>,
/// Remark (Maximum 64 characters)
pub remark: Option,
}
@@ -69,6 +75,15 @@ impl<'env> From> for longport::trade::SubmitOrderOption
if let Some(outside_rth) = opts.outside_rth {
opts2 = opts2.outside_rth(outside_rth.into());
}
+ if let Some(limit_depth_level) = opts.limit_depth_level {
+ opts2 = opts2.limit_depth_level(limit_depth_level);
+ }
+ if let Some(trigger_count) = opts.trigger_count {
+ opts2 = opts2.trigger_count(trigger_count);
+ }
+ if let Some(monitor_price) = opts.monitor_price {
+ opts2 = opts2.monitor_price(monitor_price.0);
+ }
if let Some(remark) = opts.remark {
opts2 = opts2.remark(remark);
}
diff --git a/nodejs/src/trade/types.rs b/nodejs/src/trade/types.rs
index 290261aa0..86476604d 100644
--- a/nodejs/src/trade/types.rs
+++ b/nodejs/src/trade/types.rs
@@ -261,6 +261,15 @@ pub struct Order {
/// Enable or disable outside regular trading hours
#[js(opt)]
outside_rth: Option,
+ /// Limit depth level
+ #[js(opt)]
+ limit_depth_level: Option,
+ /// Trigger count
+ #[js(opt)]
+ trigger_count: Option,
+ /// Monitor price
+ #[js(opt)]
+ monitor_price: Option,
/// Remark
remark: String,
}
@@ -443,6 +452,15 @@ pub struct OrderDetail {
/// Enable or disable outside regular trading hours
#[js(opt)]
outside_rth: Option,
+ /// Limit depth level
+ #[js(opt)]
+ limit_depth_level: Option,
+ /// Trigger count
+ #[js(opt)]
+ trigger_count: Option,
+ /// Monitor price
+ #[js(opt)]
+ monitor_price: Option,
/// Remark
remark: String,
/// Commission-free Status
diff --git a/python/pysrc/longport/openapi.pyi b/python/pysrc/longport/openapi.pyi
index 7a8ea6894..c831f2438 100644
--- a/python/pysrc/longport/openapi.pyi
+++ b/python/pysrc/longport/openapi.pyi
@@ -4212,6 +4212,21 @@ class Order:
Enable or disable outside regular trading hours
"""
+ limit_depth_level: Optional[int]
+ """
+ Limit depth level
+ """
+
+ trigger_count: Optional[int]
+ """
+ Trigger count
+ """
+
+ monitor_price: Optional[Decimal]
+ """
+ Monitor price
+ """
+
remark: str
"""
Remark
@@ -4530,6 +4545,21 @@ class OrderDetail:
Enable or disable outside regular trading hours
"""
+ limit_depth_level: Optional[int]
+ """
+ Limit depth level
+ """
+
+ trigger_count: Optional[int]
+ """
+ Trigger count
+ """
+
+ monitor_price: Optional[Decimal]
+ """
+ Monitor price
+ """
+
remark: str
"""
Remark
@@ -5153,7 +5183,7 @@ class TradeContext:
print(resp)
"""
- def replace_order(self, order_id: str, quantity: Decimal, price: Optional[Decimal] = None, trigger_price: Optional[Decimal] = None, limit_offset: Optional[Decimal] = None, trailing_amount: Optional[Decimal] = None, trailing_percent: Optional[Decimal] = None, remark: Optional[str] = None) -> None:
+ def replace_order(self, order_id: str, quantity: Decimal, price: Optional[Decimal] = None, trigger_price: Optional[Decimal] = None, limit_offset: Optional[Decimal] = None, trailing_amount: Optional[Decimal] = None, trailing_percent: Optional[Decimal] = None, limit_depth_level: Optional[int] = None, trigger_count: Optional[int] = None, monitor_price: Optional[Decimal] = None, remark: Optional[str] = None) -> None:
"""
Replace order
@@ -5164,6 +5194,9 @@ class TradeContext:
limit_offset: Limit offset amount (`TSLPAMT` / `TSLPPCT` Required)
trailing_amount: Trailing amount (`TSLPAMT` / `TSMAMT` Required)
trailing_percent: Trailing percent (`TSLPPCT` / `TSMAPCT` Required)
+ limit_depth_level: Limit depth level
+ trigger_count: Trigger count
+ monitor_price: Monitor price
remark: Remark (Maximum 64 characters)
Examples:
@@ -5182,7 +5215,7 @@ class TradeContext:
)
"""
- def submit_order(self, symbol: str, order_type: Type[OrderType], side: Type[OrderSide], submitted_quantity: Decimal, time_in_force: Type[TimeInForceType], submitted_price: Optional[Decimal] = None, trigger_price: Optional[Decimal] = None, limit_offset: Optional[Decimal] = None, trailing_amount: Optional[Decimal] = None, trailing_percent: Optional[Decimal] = None, expire_date: Optional[date] = None, outside_rth: Optional[Type[OutsideRTH]] = None, remark: Optional[str] = None) -> SubmitOrderResponse:
+ def submit_order(self, symbol: str, order_type: Type[OrderType], side: Type[OrderSide], submitted_quantity: Decimal, time_in_force: Type[TimeInForceType], submitted_price: Optional[Decimal] = None, trigger_price: Optional[Decimal] = None, limit_offset: Optional[Decimal] = None, trailing_amount: Optional[Decimal] = None, trailing_percent: Optional[Decimal] = None, expire_date: Optional[date] = None, outside_rth: Optional[Type[OutsideRTH]] = None, limit_depth_level: Optional[int] = None, trigger_count: Optional[int] = None, monitor_price: Optional[Decimal] = None, remark: Optional[str] = None) -> SubmitOrderResponse:
"""
Submit order
@@ -5199,6 +5232,9 @@ class TradeContext:
trailing_percent: Trailing percent (`TSLPPCT` / `TSMAPCT` Required)
expire_date: Long term order expire date (Required when `time_in_force` is `GoodTilDate`)
outside_rth: Enable or disable outside regular trading hours
+ limit_depth_level: Limit depth level
+ trigger_count: Trigger count
+ monitor_price: Monitor price
remark: Remark (Maximum 64 characters)
Returns:
diff --git a/python/src/trade/context.rs b/python/src/trade/context.rs
index c6fa52bd3..fdf90f0f1 100644
--- a/python/src/trade/context.rs
+++ b/python/src/trade/context.rs
@@ -205,7 +205,7 @@ impl TradeContext {
}
/// Replace order
- #[pyo3(signature = (order_id, quantity, price = None, trigger_price = None, limit_offset = None, trailing_amount = None, trailing_percent = None, remark = None))]
+ #[pyo3(signature = (order_id, quantity, price = None, trigger_price = None, limit_offset = None, trailing_amount = None, trailing_percent = None, limit_depth_level = None, trigger_count = None, monitor_price = None, remark = None))]
#[allow(clippy::too_many_arguments)]
fn replace_order(
&self,
@@ -216,6 +216,9 @@ impl TradeContext {
limit_offset: Option,
trailing_amount: Option,
trailing_percent: Option,
+ limit_depth_level: Option,
+ trigger_count: Option,
+ monitor_price: Option,
remark: Option,
) -> PyResult<()> {
let mut opts = ReplaceOrderOptions::new(order_id, quantity.into());
@@ -235,6 +238,15 @@ impl TradeContext {
if let Some(trailing_percent) = trailing_percent {
opts = opts.trailing_percent(trailing_percent.into());
}
+ if let Some(limit_depth_level) = limit_depth_level {
+ opts = opts.limit_depth_level(limit_depth_level);
+ }
+ if let Some(trigger_count) = trigger_count {
+ opts = opts.trigger_count(trigger_count);
+ }
+ if let Some(monitor_price) = monitor_price {
+ opts = opts.monitor_price(monitor_price.into());
+ }
if let Some(remark) = remark {
opts = opts.remark(remark);
}
@@ -244,7 +256,7 @@ impl TradeContext {
}
/// Submit order
- #[pyo3(signature = (symbol, order_type, side, submitted_quantity, time_in_force, submitted_price = None, trigger_price = None, limit_offset = None, trailing_amount = None, trailing_percent = None, expire_date = None, outside_rth = None, remark = None))]
+ #[pyo3(signature = (symbol, order_type, side, submitted_quantity, time_in_force, submitted_price = None, trigger_price = None, limit_offset = None, trailing_amount = None, trailing_percent = None, expire_date = None, outside_rth = None, limit_depth_level = None, trigger_count = None, monitor_price = None, remark = None))]
#[allow(clippy::too_many_arguments)]
fn submit_order(
&self,
@@ -260,6 +272,9 @@ impl TradeContext {
trailing_percent: Option,
expire_date: Option,
outside_rth: Option,
+ limit_depth_level: Option,
+ trigger_count: Option,
+ monitor_price: Option,
remark: Option,
) -> PyResult {
let mut opts = SubmitOrderOptions::new(
@@ -291,6 +306,15 @@ impl TradeContext {
if let Some(outside_rth) = outside_rth {
opts = opts.outside_rth(outside_rth.into());
}
+ if let Some(limit_depth_level) = limit_depth_level {
+ opts = opts.limit_depth_level(limit_depth_level);
+ }
+ if let Some(trigger_count) = trigger_count {
+ opts = opts.trigger_count(trigger_count);
+ }
+ if let Some(monitor_price) = monitor_price {
+ opts = opts.monitor_price(monitor_price.into());
+ }
if let Some(remark) = remark {
opts = opts.remark(remark);
}
diff --git a/python/src/trade/types.rs b/python/src/trade/types.rs
index 5ba6fa37a..7d76d2544 100644
--- a/python/src/trade/types.rs
+++ b/python/src/trade/types.rs
@@ -263,6 +263,15 @@ pub(crate) struct Order {
/// Enable or disable outside regular trading hours
#[py(opt)]
outside_rth: Option,
+ /// Limit depth level
+ #[py(opt)]
+ limit_depth_level: Option,
+ /// Trigger count
+ #[py(opt)]
+ trigger_count: Option,
+ /// Monitor price
+ #[py(opt)]
+ monitor_price: Option,
/// Remark
remark: String,
}
@@ -445,6 +454,15 @@ pub(crate) struct OrderDetail {
/// Enable or disable outside regular trading hours
#[py(opt)]
outside_rth: Option,
+ /// Limit depth level
+ #[py(opt)]
+ limit_depth_level: Option,
+ /// Trigger count
+ #[py(opt)]
+ trigger_count: Option,
+ /// Monitor price
+ #[py(opt)]
+ monitor_price: Option,
/// Remark
remark: String,
/// Commission-free Status
diff --git a/rust/src/serde_utils.rs b/rust/src/serde_utils.rs
index 21f1dd94f..27b6cc9fa 100644
--- a/rust/src/serde_utils.rs
+++ b/rust/src/serde_utils.rs
@@ -361,3 +361,30 @@ pub(crate) mod int64_str_empty_is_none {
}
}
}
+
+pub(crate) mod int32_opt_0_is_none {
+
+ use super::*;
+
+ pub(crate) fn serialize(value: &Option, serializer: S) -> Result
+ where
+ S: Serializer,
+ {
+ match value {
+ Some(value) => serializer.serialize_i32(*value),
+ _ => serializer.serialize_none(),
+ }
+ }
+
+ pub(crate) fn deserialize<'de, D>(deserializer: D) -> Result