korea_investment_rs

Crates.iokorea_investment_rs
lib.rskorea_investment_rs
version0.1.6
created_at2025-03-19 10:24:48.771884+00
updated_at2025-10-01 02:10:41.180192+00
descriptionKorea Investment & Securities Open API
homepage
repository
max_upload_size
id1597863
size129,564
kyunhyun94 (kyunghyunHan)

documentation

README

Korea Investment API Client for Rust

korea_investment_rs는 한국투자증권의 Open Trading API를 쉽게 사용할 수 있게 해주는 Rust 라이브러리입니다. REST API와 WebSocket을 통해 국내/해외 주식 시세 조회 및 실시간 데이터 수신, 주문 등 다양한 기능을 제공합니다.

주요 기능

  • 국내주식 시세 조회 및 주문
  • 해외주식 시세 조회 및 실시간 데이터
  • ✅ WebSocket을 통한 실시간 시세 구독
  • ✅ OAuth 인증을 통한 간편한 API 접근

빠른 시작

설치

Cargo.toml에 다음 의존성을 추가하세요:

[dependencies]
korea_investment_rs = "0.1.0"
tokio = { version = "1", features = ["full"] }

인증 설정

API 사용을 위해 발급받은 앱 키와 시크릿 키를 설정하세요:

use korea_investment_rs::auth::Auth;

async fn main() {
    let auth = Auth::new("YOUR_APP_KEY", "YOUR_APP_SECRET").await.unwrap();
    println!("발급된 토큰: {}", auth.access_token);
}

예제: 일별 시세 조회

use korea_investment_rs::domestic::quotations::InquireDailyItemChartPrice;

#[tokio::main]
async fn main() {
    // 환경 변수에서 API 키 로드
    dotenv::dotenv().ok();
    let app_key = std::env::var("APP_KEY").expect("APP_KEY not set");
    let app_secret = std::env::var("APP_SECRET").expect("APP_SECRET not set");
    
    // 인증 및 API 객체 생성
    let auth = Auth::new(app_key, app_secret).await.unwrap();
    
    // 삼성전자(005930) 일별 시세 조회
    let params = InquireDailyItemChartPrice::new("J", "1", "005930");
    let response = params.send(&auth).await.unwrap();
    
    println!("조회 결과: {:?}", response);
}

사용 가능한 API 목록

국내주식

  • /uapi/domestic-stock/v1/quotations/inquire-price: 현재가 시세 조회
  • /uapi/domestic-stock/v1/quotations/inquire-daily-itemchartprice: 일별 시세 조회
  • /uapi/domestic-stock/v1/quotations/inquire-elw-price: ELW 시세 조회

해외주식

  • WebSocket을 통한 해외주식 실시간 시세 (HDFSCNT0)
  • 해외주식 현재가 및 호가 조회

실행 예제

라이브러리에 포함된 예제 코드를 실행하려면:

# 일별 시세 조회 예제 실행
cargo run --example get_inquire_daily_itemchartprice --features ex

# 실시간 시세 구독 예제 실행
cargo run --example overseas_realtime_websocket --features ex

OAuth 토큰 및 WebSocket 접속키 발급

use korea_investment_rs::websocket::oauth::ApproveOauth;

async fn get_approval_key() {
    let app_key = std::env::var("APP_KEY").expect("APP_KEY not set");
    let app_secret = std::env::var("APP_SECRET").expect("APP_SECRET not set");
    
    let oauth = ApproveOauth::new(app_key, app_secret).await.unwrap();
    println!("WebSocket 접속키: {}", oauth.approval_key);
}

주의사항

  • API를 사용하기 위해서는 한국투자증권의 Open API 서비스 신청이 필요합니다.
  • 실제 환경에서 사용하기 전에 모의투자 환경에서 충분히 테스트하세요.
  • 여러 API 호출 시 초당 요청 제한을 고려하세요.

라이선스

MIT License


Example

Korea Investment RS API 구현 현황


1. Oauth

  • ✅ 토큰 발급 [Oauth::from_env, Oauth::from_env_with_cache]

2. Domestic (국내시장)

1) 현재가/시세

  • ✅ 주식현재가 시세 [get_inquire_price]
  • ✅ 주식현재가 시세2 [get_inquire_price2]
  • ✅ 주식현재가 체결 [get_recent_ticks]
  • 주식현재가 일자별
  • 주식현재가 호가/예상체결
  • 주식현재가 투자자
  • 주식현재가 회원사

2) 차트/기간별

  • ✅ 국내주식기간별시세(일/주/월/년) [get_inquire_period_price]
  • ✅ 주식당일분봉조회 [get_today_minutes]
  • ✅ 주식일별분봉조회 [get_minutes_by_day]

3) 시간외

  • 주식현재가 당일시간대별체결
  • 주식현재가 시간외일자별주가
  • 주식현재가 시간외시간별체결
  • 국내주식 시간외현재가
  • 국내주식 시간외호가
  • 국내주식 장마감 예상체결가

4) ETF / ETN

  • ETF/ETN 현재가
  • ETF 구성종목시세
  • NAV 비교추이(종목)
  • NAV 비교추이(일)
  • NAV 비교추이(분)

3. Overseas (해외시장)

  • ✅ 해외주식 현재가 [get_overseas_price]
  • 해외주식 기간별 시세
  • 해외주식 일자별/분봉별 시세

4. Socket

1) 해외주식 실시간지연체결가 [실시간-007]

  • 미구현

2) 해외주식 실시간지연호가(아시아) [실시간-008]

  • 미구현

3) 해외주식 실시간체결통보 [실시간-009]

  • 미구현

4) 해외주식 실시간호가(미국) [실시간-021]

  • 미구현
Commit count: 0

cargo fmt