6 个版本
0.1.6 | 2023 年 6 月 3 日 |
---|---|
0.1.5 | 2023 年 6 月 2 日 |
0.1.4 | 2022 年 11 月 5 日 |
0.1.3 | 2022 年 10 月 27 日 |
0.1.2 | 2022 年 9 月 29 日 |
#38 在 金融
50 每月下载量
190KB
3K SLoC
tdameritrade_rust
TD Ameritrade API 的非官方 Rust 库
0.1.6 版本新功能
- 实现了 SyncTDAClient 和 AsyncTDAClient 的克隆功能
0.1.5 版本新功能
- 增加了内部可变性
0.1.4 版本新功能
- 创建了 OrderBuilder 以简化 TD Ameritrade 的订单构建。
- 使用 OrderBuilder 创建了股票订单模板
- 在 examples 目录下更新了 trading_async.rs 和 trading_sync.rs 以展示 OrderBuilder
- 集成了使用 TDAClient Error 创建新客户端
- 更新了账户输出结构体
tdameritrade_rust 的 OrderBuilder 受到 Alex Golec 的 OrderBuilder 的启发,OrderBuilder 来自 tda api。他的 OrderBuilder 文档 是一个绝佳的资源,应与此库的 OrderBuilder 兼容。
功能
- tdameritrade_rust 支持同步/异步
- tdameritrade_rust 自动处理身份验证
- tdameritrade_rust 简化了从 TD Ameritrade 创建令牌文件的过程
安装
将以下内容添加到您的 Cargo.toml 中
[dependencies]
tdameritrade_rust = "0.1.6"
入门指南
- 在 TD Ameritrade API 网站 注册
- 转到“我的应用”部分并添加一个新的应用
- 点击您的应用并复制消费者密钥
- 点击应用的详细信息部分并复制回调 URL
- 下载 chromedriver
- 复制以下代码,替换字段,运行代码,并在提示时登录以从 TD Ameritrade 接收令牌文件
use tdameritrade_rust::init;
fn main() {
// Create Token File
init::create_token_file(
"chrome_driver_path".into(), // Path To Chromedriver
"[email protected]".into(), // Client Id (Consumer Key)
"redirect_uri".into(), // Redirect URI (Callback URL)
"token_file_path".into(), // Where To Put Token File After Completion
)
}
同步
- 创建令牌文件后,创建一个 TD Ameritrade 客户端以访问 API 端点。以下是一个使用同步客户端的示例
use tdameritrade_rust::{
output::quotes::{QuoteType, Quotes},
SyncTDAClient, TDAClientError,
};
mod config;
fn main() -> Result<(), TDAClientError> {
// Create Synchronous TDAClient
let client = SyncTDAClient::new(
config::client_id(),
config::redirect_uri(),
config::token_path(),
)?;
// Get Quote
let symbol = "AAPL";
let res = client.get_quote(symbol)?;
let res_json = serde_json::from_str::<Quotes>(&res)?;
if let QuoteType::Equity(equity) = &res_json.symbol[symbol] {
println!("{}", equity.close_price);
}
// Get Quotes
let symbols = vec!["AAPL", "AMZN", "AMD", "NVDA"];
let res = client.get_quotes(&symbols)?;
let res_json = serde_json::from_str::<Quotes>(&res)?;
for symbol in symbols.into_iter() {
if let QuoteType::Equity(equity) = &res_json.symbol[symbol] {
println!("{}", equity.close_price)
}
}
Ok(())
}
异步
- 创建令牌文件后,创建一个 TD Ameritrade 客户端以访问 API 端点。以下是一个使用异步客户端的示例
use tdameritrade_rust::{
output::quotes::{QuoteType, Quotes},
AsyncTDAClient, TDAClientError,
};
mod config;
#[tokio::main]
async fn main() -> Result<(), TDAClientError> {
// Create Asynchronous TDAClient
let client = AsyncTDAClient::new(
config::client_id(),
config::redirect_uri(),
config::token_path(),
)?;
// Get Quote
let symbol = "AAPL";
let res = client.get_quote(symbol).await?;
let res_json = serde_json::from_str::<Quotes>(&res)?;
if let QuoteType::Equity(equity) = &res_json.symbol[symbol] {
println!("{}", equity.close_price);
}
// Get Quotes
let symbols = vec!["AAPL", "AMZN", "AMD", "NVDA"];
let res = client.get_quotes(&symbols).await?;
let res_json = serde_json::from_str::<Quotes>(&res)?;
for symbol in symbols.into_iter() {
if let QuoteType::Equity(equity) = &res_json.symbol[symbol] {
println!("{}", equity.close_price)
}
}
Ok(())
}
未来计划
- 我计划使 watchlist 端点更容易使用
- 我计划支持流式传输
免责声明
tdameritrade_rust 在 MIT 许可证 下发布
tdameritrade_rust 是一个非官方的API包装器。它绝不代表 TD Ameritrade 或任何关联组织所认可或支持。作者对使用此包可能引起的任何损害不承担任何责任。有关更多详细信息,请参阅 LICENSE 文件。
依赖项
约 11–26MB
约 401K SLoC