69 个版本

0.2.77 2023 年 10 月 30 日
0.2.72 2023 年 9 月 18 日
0.2.66 2023 年 7 月 20 日
0.2.51 2023 年 3 月 27 日
0.2.29 2022 年 7 月 20 日

财务 中排名 16

Download history 3/week @ 2024-04-27 1/week @ 2024-05-04 2/week @ 2024-05-18 5/week @ 2024-06-29 115/week @ 2024-07-27

每月下载 120

MIT/Apache

2MB
41K SLoC

C++ 24K SLoC // 0.1% comments Rust 10K SLoC // 0.0% comments Go 7.5K SLoC // 0.0% comments Python 219 SLoC // 0.1% comments

Longbridge OpenAPI SDK for Rust

longbridge 提供了一个易于使用的接口来调用 Longbridge OpenAPI

快速入门

将依赖项添加到 Cargo.toml

[dependencies]
longbridge = "0.1.0"

设置环境变量(MacOS/Linux)

export LONGBRIDGE_APP_KEY="App Key get from user center"
export LONGBRIDGE_APP_SECRET="App Secret get from user center"
export LONGBRIDGE_ACCESS_TOKEN="Access Token get from user center"

设置环境变量(Windows)

setx LONGBRIDGE_APP_KEY "App Key get from user center"
setx LONGBRIDGE_APP_SECRET "App Secret get from user center"
setx LONGBRIDGE_ACCESS_TOKEN "Access Token get from user center"

报价 API (获取证券的基本信息)

use std::sync::Arc;

use longbridge::{
    decimal,
    trade::{OrderSide, OrderType, SubmitOrderOptions, TimeInForceType},
    Config, QuoteContext, TradeContext,
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Load configuration from environment variables
    let config = Arc::new(Config::from_env()?);

    // Create a context for quote APIs
    let (ctx, _) = QuoteContext::try_new(config.clone()).await?;

    // Get basic information of securities
    let resp = ctx
        .quote(["700.HK", "AAPL.US", "TSLA.US", "NFLX.US"])
        .await?;
    println!("{:?}", resp);

    Ok(())
}

报价 API (订阅报价)

use std::sync::Arc;

use longbridge::{quote::SubFlags, Config, QuoteContext};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Load configuration from environment variables
    let config = Arc::new(Config::from_env()?);

    // Create a context for quote APIs
    let (ctx, mut receiver) = QuoteContext::try_new(config).await?;

    // Subscribe
    ctx.subscribe(["700.HK"], SubFlags::QUOTE, true).await?;

    // Receive push events
    while let Some(event) = receiver.recv().await {
        println!("{:?}", event);
    }

    Ok(())
}

交易 API (提交订单)

use std::sync::Arc;

use longbridge::{
    decimal,
    trade::{OrderSide, OrderType, SubmitOrderOptions, TimeInForceType},
    Config, TradeContext,
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Load configuration from environment variables
    let config = Arc::new(Config::from_env()?);

    // Create a context for trade APIs
    let (ctx, _) = TradeContext::try_new(config).await?;

    // Submit order
    let opts = SubmitOrderOptions::new(
        "700.HK",
        OrderType::LO,
        OrderSide::Buy,
        500,
        TimeInForceType::Day,
    )
    .submitted_price(decimal!(50i32))
    .remark("Hello from Rust SDK".to_string());

    let resp = ctx.submit_order(opts).await?;
    println!("{:?}", resp);

    Ok(())
}

框架功能

为了避免编译未使用的依赖项,Longbridge 会屏蔽某些功能,所有功能默认都是禁用的

功能 描述
blocking 提供 blocking 客户端 API。

许可证

许可协议为以下之一

依赖项

~18–31MB
~586K SLoC