Crates.io | krx-rs |
lib.rs | krx-rs |
version | 0.1.0 |
created_at | 2025-06-20 08:08:48.827293+00 |
updated_at | 2025-06-20 08:08:48.827293+00 |
description | KRX Open API를 위한 Rust 클라이언트 |
homepage | https://github.com/seobaeksol/krx-rs |
repository | https://github.com/seobaeksol/krx-rs |
max_upload_size | |
id | 1719274 |
size | 26,863,588 |
KRX(한국거래소) Open API를 위한 현대적이고 타입 안전한 Rust 클라이언트 라이브러리입니다.
API 인증키를 발급 받아야합니다. 시작하기 참고.
중요: KRX Open API는 **2010년 이후부터 조회일 기준 전일(T-1)**까지의 데이터만 제공합니다. 라이브러리를 통해 당일 데이터를 조회할 수 없으니 이용에 참고 부탁드립니다.
Cargo.toml
에 다음을 추가하세요:
[dependencies]
krx-rs = "0.1.0"
use krx_rs::Client;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new("your_auth_key");
// 특정 날짜의 데이터 조회
let data_by_date = client
.stock()
.kospi_daily()
.date("20240105")
.fetch()
.await?;
println!("20240105 데이터:\\n{}", data_by_date);
// 가장 최신(전일) 데이터 조회
let latest_data = client
.stock()
.kospi_daily()
.latest()
.fetch()
.await?;
println!("가장 최신 데이터:\\n{}", latest_data);
Ok(())
}
// KOSPI 일별 시세
let kospi_daily = client.stock().kospi_daily().today().fetch().await?;
// KOSDAQ 종목 기본정보
let kosdaq_info = client.stock().kosdaq_base_info().fetch().await?;
// KRX 지수
let krx_index = client.index().krx_daily().date("20240105").fetch().await?;
// KOSPI 지수
let kospi_index = client.index().kospi_daily().today().fetch().await?;
// 국채 전문시장
let treasury = client.bond().kts_daily().today().fetch().await?;
// ETF 일별 시세
let etf = client.etp().etf_daily().date("20240105").fetch().await?;
// 선물 일별 시세
let futures = client.derivative().futures_daily().today().fetch().await?;
// 유가 정보
let oil = client.general().oil_daily().today().fetch().await?;
// SRI 채권 정보
let sri_bonds = client.esg().sri_bond_info().fetch().await?;
use krx_rs::{Client, logging::LoggingConfig};
let logging_config = LoggingConfig {
level: "debug".to_string(),
json_format: false,
filter_sensitive: true,
file_path: Some("krx.log".to_string()),
};
let client = Client::builder()
.auth_key("your_auth_key")
.logging(logging_config)
.build()?;
use std::time::Duration;
let client = Client::builder()
.auth_key("your_auth_key")
.timeout(Duration::from_secs(60))
.user_agent("MyApp/1.0")
.build()?;
모든 API 응답은 Polars DataFrame으로 반환됩니다:
let df = client.stock().kospi_daily().today().fetch().await?;
// DataFrame 작업
let filtered = df.lazy()
.filter(col("등락률").gt(lit(2.0)))
.select([col("종목명"), col("종가"), col("등락률")])
.sort("등락률", SortOptions::default().with_order_descending(true))
.collect()?;
더 많은 예제는 examples 디렉토리를 참조하세요:
simple_fetch.rs
- 기본 데이터 조회with_logging.rs
- 로깅 설정 예제전체 API 문서는 docs.rs에서 확인할 수 있습니다.
이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
기여를 환영합니다! 이슈나 풀 리퀘스트를 자유롭게 제출해주세요.
이 라이브러리는 KRX(한국거래소)와 공식적으로 제휴하거나 승인받은 것이 아닙니다.