#stock #market #api #jquants

jquants_rs

Unofficial wrapper for jquants api

2 releases

0.1.1 Jan 24, 2025
0.1.0 Jan 24, 2025

#85 in Finance

Download history 200/week @ 2025-01-22

200 downloads per month

MIT license

40KB
817 lines

  • これは何? J-Quants APIの非公式ラッパーです。

  • 使い方

** インストール

#+begin_src shell cargo add jquants_rs #+end_src

** 使い方

対応するエンドポイントのRequest構造体に必要事項を入力して

*** インスタンス生成と認証 #+begin_src rust let mut client = HttpClient::new(); client.set_id_token("your_id_token".to_string()); #+end_src

*** リクエスト送信 対応するエンドポイントのRequest構造体に必要事項を入力して client.send_request(request).await でリクエストを送信します。

** 例 下記は

  1. メールアドレスとパスワードを使ってリフレッシュトークンを取得
  2. リフレッシュトークンを使ってIDトークンを取得
  3. IDトークンを使って各エンドポイントを叩く

という流れを示しています。

#+begin_src rust let user_id = "your_user_id".to_string(); let user_password = "your_password".to_string();

let mut client = HttpClient::new();

// リフレッシュトークン作成 let login_request = token_auth_user::AuthUserRequest { mailaddress: user_id, password: user_password, }; let login_response: Result<token_auth_user::AuthUserResponse, _> = client.send_request(login_request).await; let refresh_token = login_response.unwrap().refreshToken;

// IDトークン作成 let id_token_request = token_auth_refresh::AuthRefreshRequest { refreshtoken: refresh_token, }; let id_token_response: Result<token_auth_refresh::AuthRefreshResponse, _> = client.send_request(id_token_request).await; client.set_id_token(id_token_response.unwrap().idToken);

// 上場銘柄一覧 let stock_list_request = api::listed_info::ListedInfoRequest::builder().code("13010".to_string()).build(); let stock_list_response: Result<api::listed_info::ListedInfoResponse, _> = client.send_request(stock_list_request).await; println!("{:?}", stock_list_response);

// 日足データ取得 let daily_query = api::prices_daily_quotes::DailyQuotesRequest::builder().code("13010".to_string()).date("20240605".to_string()).build(); let res = client.send_request(daily_query).await; println!("{:?}", res);

// 投資部門別情報 let query = api::markets_investment_sector::InvestmentSectorRequest::builder().code("13010".to_string()).from("20240324".to_string()).to("20240601".to_string()).build(); let res = client.send_request(query).await; println!("{:?}", res);

// 信用取引週末残高 let query = api::markets_weekly_margin_interest::WeeklyMarginInterestRequest::builder().code("13010".to_string()).from("20240324".to_string()).to("20240601".to_string()).build(); let res = client.send_request(query).await; println!("{:?}", res);

// 業種別空売り残高 let query = api::markets_short_selling::ShortSellingRequest::builder().sector33code("0050".to_string()).from("20240324".to_string()).to("20240601".to_string()).build(); let res = client.send_request(query).await; println!("{:?}", res);

// 取引カレンダー let query = api::markets_trading_calendar::TradingCalendarRequest::builder().holidaydivision("1".to_string()).from("20240324".to_string()).to("20240601".to_string()).build(); let res = client.send_request(query).await; println!("{:?}", res);

// 指数四本足 let query = api::indices::IndicesRequest::builder().code("13010".to_string()).from("20240324".to_string()).to("20240601".to_string()).build(); let res = client.send_request(query).await; println!("{:?}", res);

// // TOPIX let query = api::indices_topix::TopixRequest::builder().from("20240324".to_string()).to("20240601".to_string()).build(); let res = client.send_request(query).await; println!("{:?}", res);

// 財務情報 let query = api::fins_statements::StatementsRequest::builder().code("86970".to_string()).date("20230130".to_string()).build(); let res = client.send_request(query).await; println!("{:?}", res);

// 決算発表日 let query = api::fins_announcement::AnnouncementRequest::builder().build(); let res = client.send_request(query).await; println!("{:?}", res);

// オプションデータ let query = api::option_index_option::IndexOptionRequest::builder().date("20240601".to_string()).build(); let res = client.send_request(query).await; println!("{:?}", res);

#+end_src

  • 対応済みAPI
    • /token/auth_user
    • /token/auth_refresh
    • /listed/info
    • /prices/daily_quotes
    • /prices/prices_am
    • /markets/trades_spec
    • /markets/weekly_margin_interest
    • /markets/short_selling
    • /markets/breakdown
    • /markets/trading_calendar
    • /indices
    • /indices/topix
    • /fins/statements
    • /fins/fs_details
    • /fins/dividend
    • /fins/announcement
    • /option/index_option

Dependencies

~7–18MB
~239K SLoC