37个版本 (破坏性更新)
0.27.0 | 2024年5月21日 |
---|---|
0.26.0 | 2022年10月5日 |
0.25.0 | 2022年8月16日 |
0.24.0 | 2022年7月30日 |
0.5.0 | 2020年10月2日 |
#37 in #api-access
每月40次下载
67KB
1.5K SLoC
tastyworks-rs
非官方的Rust tastyworks/tastytrade API。需要为您的账户启用API访问。
示例
use tastyworks::Session;
use num_traits::ToPrimitive;
// Requests made by the API are asynchronous, so you must use a runtime such as `tokio`.
#[tokio::main]
async fn main() {
let login = "username"; // or email
let password = "password";
let otp = Some("123456"); // 2FA code, may be None::<String>
let session = Session::from_credentials(login, password, otp)
.await.expect("Failed to login");
let accounts = tastyworks::accounts(&session)
.await.expect("Failed to fetch accounts");
let account = accounts.first().expect("No accounts found");
let positions = tastyworks::positions(account, &session)
.await.expect("Failed to fetch positions");
println!("Your active positions:");
for position in &positions {
let signed_quantity = position.signed_quantity();
// Quantities in the API that could potentially be decimal values are stored as
// `num_rational::Rational64`. To convert these to floats include the `num-traits` crate
// in your project and use the `ToPrimitive` trait. To convert these to integers no
// additional crate is required.
println!(
"{:>10} x {}",
if signed_quantity.is_integer() {
signed_quantity.to_integer().to_string()
} else {
signed_quantity.to_f64().unwrap().to_string()
},
position.symbol
);
}
}
依赖项
~14–29MB
~414K SLoC