cryptocurrency.api
Version:
Cryptocurrency API
325 lines (324 loc) • 8.54 kB
TypeScript
export interface Response<T> {
status: number;
remainingReq: {
group: string;
min: number;
sec: number;
};
data: T;
}
/**
* 마켓 코드 조회
* https://docs.upbit.com/reference#%EB%A7%88%EC%BC%93-%EC%BD%94%EB%93%9C-%EC%A1%B0%ED%9A%8C
**/
export interface MarketType {
market: string;
korean_name: string;
english_name: string;
market_warning?: string;
}
/**
* 캔들 타입
* https://docs.upbit.com/reference#%EC%8B%9C%EC%84%B8-%EC%BA%94%EB%93%A4-%EC%A1%B0%ED%9A%8C
**/
export interface CandleType {
market: string;
candle_date_time_utc: string;
candle_date_time_kst: string;
opening_price: number;
high_price: number;
low_price: number;
trade_price: number;
timestamp: number;
candle_acc_trade_price: number;
candle_acc_trade_volume: number;
}
export interface CandleMinuteType extends CandleType {
unit: number;
}
export interface CandleDayType extends CandleType {
prev_closing_price: number;
change_price: number;
change_rate: number;
converted_trade_price?: number;
}
export interface CandleWeekType extends CandleType {
first_day_of_period: string;
}
export interface CandleMonthType extends CandleType {
first_day_of_period: string;
}
export interface TradeTickType {
market: string;
trade_date_utc: string;
trade_time_utc: string;
timestamp: number;
trade_price: number;
trade_volume: number;
prev_closing_price: number;
change_price: number;
ask_bid: 'ASK' | 'BID';
sequential_id: number;
}
export interface TickerType {
market: string;
trade_date: string;
trade_time: string;
trade_date_kst: string;
trade_time_kst: string;
trade_timestamp: string;
opening_price: number;
high_price: number;
low_price: number;
trade_price: number;
prev_closing_price: number;
change: 'RISE' | 'EVEN' | 'FALL';
change_price: number;
change_rate: number;
signed_change_price: number;
signed_change_rate: number;
trade_volume: number;
acc_trade_price: number;
acc_trade_price_24h: number;
acc_trade_volume: number;
acc_trade_volume_24h: number;
highest_52_week_price: number;
highest_52_week_date: string;
lowest_52_week_price: number;
lowest_52_week_date: string;
timestamp: number;
}
export interface OrderbookType {
market: string;
timestamp: number;
total_ask_size: number;
total_bid_size: number;
orderbook_units: {
ask_price: number;
bid_price: number;
ask_size: number;
bid_size: number;
}[];
}
export interface AccountType {
currency: string;
balance: number;
locked: number;
avg_buy_price: number;
avg_buy_price_modified: boolean;
unit_currency: string;
}
/**
* {
* // 매수 수수료 비율 NumberString
* "bid_fee": "0.0005",
* // 매도 수수료 비율 NumberString
* "ask_fee": "0.0005",
* "maker_bid_fee": "0.0005",
* "maker_ask_fee": "0.0005",
* // 마켓에 대한 정보 Object
* "market": {
* // 마켓의 유일 키 String
* "id": "KRW-BTC",
* // 마켓 이름 String
* "name": "BTC/KRW",
* // 지원 주문 방식 Array[String]
* "order_types": [
* "limit"
* ],
* // 지원 주문 종류 Array[String]
* "order_sides": [
* "ask",
* "bid"
* ],
* // 매수 시 제약사항 Object
* "bid": {
* // 화폐를 의미하는 영문 대문자 코드 String
* "currency": "KRW",
* // 주문금액 단위 String
* "price_unit": null,
* // 최소 매도/매수 금액 Number
* "min_total": "5000.0"
* },
* // 매도 시 제약사항 Object
* "ask": {
* // 화폐를 의미하는 영문 대문자 코드 String
* "currency": "BTC",
* // 주문금액 단위 String
* "price_unit": null,
* // 최소 매도/매수 금액 Number
* "min_total": "5000.0"
* },
* // 최소 매도/매수 금액 Number
* "max_total": "1000000000.0",
* // 마켓 운영 상태 String
* "state": "active"
* },
* // 매수 시 사용하는 화폐의 계좌 상태 Object
* "bid_account": {
* // 화폐를 의미하는 영문 대문자 코드 String
* "currency": "KRW",
* // 주문가능 금액/수량 NumberString
* "balance": "132568.11667565",
* // 주문 중 묶여있는 금액/수량 NumberString
* "locked": "0.0",
* // 매수평균가 NumberString
* "avg_buy_price": "0",
* // 매수평균가 수정 여부 Boolean
* "avg_buy_price_modified": true,
* // 평단가 기준 화폐 String
* "unit_currency": "KRW"
* },
* // 매도 시 사용하는 화폐의 계좌 상태 Object
* "ask_account": {
* // 화폐를 의미하는 영문 대문자 코드 String
* "currency": "BTC",
* // 주문가능 금액/수량 NumberString
* "balance": "0.0",
* // 주문 중 묶여있는 금액/수량 NumberString
* "locked": "0.0",
* // 매수평균가 NumberString
* "avg_buy_price": "60887000",
* // 매수평균가 수정 여부 Boolean
* "avg_buy_price_modified": false,
* // 평단가 기준 화폐 String
* "unit_currency": "KRW"
* }
* }
**/
export interface OrderChanceType {
bid_fee: number;
ask_fee: number;
maker_bid_fee: number;
maker_ask_fee: number;
market: {
id: string;
name: string;
order_types: string[];
order_sides: string[];
bid: {
currency: string;
min_total: number;
};
ask: {
currency: string;
min_total: number;
};
max_total: number;
state: string;
};
bid_account: {
currency: string;
balance: number;
locked: number;
avg_buy_price: number;
avg_buy_price_modified: boolean;
unit_currency: string;
};
ask_account: {
currency: string;
balance: number;
locked: number;
avg_buy_price: number;
avg_buy_price_modified: boolean;
unit_currency: string;
};
}
export interface OrderType {
uuid: string;
side: 'bid' | 'ask';
ord_type: 'limit' | 'price' | 'market';
price: number;
state: 'wait' | 'watch' | 'done' | 'cancel';
market: string;
created_at: string;
volume: number;
remaining_volume: number;
reserved_fee: number;
remaining_fee: number;
paid_fee: number;
locked: number;
executed_volume: number;
trades_count: number;
identifier?: string;
}
export interface OrderDetailType extends OrderType {
trades: [
{
market: string;
uuid: string;
price: number;
volume: number;
funds: number;
trend: 'up' | 'down';
side: 'bid' | 'ask';
created_at: string;
}
];
}
/**
* 캔들 Params
* https://docs.upbit.com/reference#%EC%8B%9C%EC%84%B8-%EC%BA%94%EB%93%A4-%EC%A1%B0%ED%9A%8C
**/
export interface CandleParam {
market: string;
to?: string;
count?: number;
}
/**
* 캔들 Params Extensions
* https://docs.upbit.com/reference#%EC%9D%BCday-%EC%BA%94%EB%93%A4-1
**/
export interface CandleParamEx extends CandleParam {
convertingPriceUnit?: string;
}
/**
* 체결 Params
* https://docs.upbit.com/reference#%EC%B5%9C%EA%B7%BC-%EC%B2%B4%EA%B2%B0-%EB%82%B4%EC%97%AD
**/
export interface TradeTickParam {
market: string;
to?: string;
count?: number;
cursor?: number;
daysAgo?: number;
}
export interface OrderDetailParam {
uuid?: string;
identifier?: string;
}
export interface OrderListParam {
market?: string;
uuids?: string[];
identifiers?: string[];
state?: 'wait' | 'watch' | 'done' | 'cancel';
states?: ['wait' | 'watch' | 'done' | 'cancel'];
page?: number;
order_by?: 'desc' | 'asc';
}
export interface OrderLimitParam {
market: string;
ord_type: 'limit';
side: 'bid' | 'ask';
volume: number;
price: number;
identifier?: string;
}
export interface OrderPriceParam {
market: string;
ord_type: 'price';
side: 'bid';
price: number;
identifier?: string;
}
export interface OrderMarketParam {
market: string;
ord_type: 'market';
side: 'ask';
volume: number;
identifier?: string;
}
export interface CancelParam {
uuid?: string;
identifier?: string;
}