Categorygithub.com/hysuki/go-upbit
modulepackage
0.0.7
Repository: https://github.com/hysuki/go-upbit.git
Documentation: pkg.go.dev

# README

go-upbit

Go-Upbit업비트 API를 쉽게 사용하기 위한 Go 클라이언트 라이브러리입니다.
REST API 및 WebSocket API를 지원하며, 간단한 인터페이스로 다양한 기능을 제공합니다.

충분히 테스트 되지 않음, 테스트 코드 작성 지원 환영

요청 수 제한

업비트 API는 초당/분당 요청 수 제한이 있습니다. API 사용 시 아래 제한 사항을 반드시 확인하시기 바랍니다.

자세한 내용은 업비트 공식 문서를 참고하세요.


기능

REST API

  • 거래소 API
    • 자산 조회
    • 주문 생성 및 관리
    • 입출금 관리
  • 시세 API
    • 마켓 코드 조회
    • 캔들 데이터 조회 (분/일/주/월 단위)
    • 현재가 조회
    • 호가 정보 조회
    • 최근 체결 내역

WebSocket API

  • Public WebSocket
    • 현재가 정보
    • 체결 내역
    • 호가 정보
  • Private WebSocket
    • 내 자산 실시간 조회
    • 내 주문 실시간 조회

설치

go get github.com/hysuki/go-upbit

사용 예시

클라이언트 초기화

import (
	"log"
	"time"
	"github.com/hysuki/go-upbit"
)

func main() {
	client, err := upbit.NewUpbitClient(
		upbit.WithKeys("ACCESS_KEY", "SECRET_KEY"),
		upbit.WithPingInterval(30*time.Second),
	)
	if err != nil {
		log.Fatal(err)
	}
}

REST API 사용 예시

// 마켓 코드 조회
markets, err := client.RestAPI.GetQuotation().GetMarkets(false)
if err != nil {
	log.Printf("에러: %v", err)
	return
}
log.Printf("마켓 목록: %+v", markets)

// 계좌 조회
accounts, err := client.RestAPI.GetExchange().GetAccounts()
if err != nil {
	log.Printf("에러: %v", err)
	return
}
log.Printf("계좌 정보: %+v", accounts)

// 주문하기
order, err := client.RestAPI.GetExchange().CreateOrder(&exchange.CreateOrderRequest{
	Market:    "KRW-BTC",
	Side:      exchange.OrderSideBid,
	Volume:    "0.01",
	Price:     "30000000",
	OrderType: exchange.OrderTypeLimit,
})
if err != nil {
	log.Printf("에러: %v", err)
	return
}
log.Printf("주문 결과: %+v", order)

WebSocket API 사용 예시

// 원화 마켓 코드 필터링
var codes []string
markets, err := client.RestAPI.GetQuotation().GetMarkets(false)
if err != nil {
    log.Fatal(err)
}

for _, market := range markets {
    if strings.HasPrefix(market.Market, "KRW-") {
        codes = append(codes, market.Market)
    }
}

// WebSocket 구독 설정
isOnlyRealtime := true
opts := common.SubscribeOptions{
    IsOnlyRealtime: &isOnlyRealtime,
}

client.PublicWS.Subscribe(nil,
    public.AddSubscribe(public.MessageTypeOrderbook, codes, &opts),
    public.AddSubscribe(public.MessageTypeTicker, codes, &opts),
    public.AddSubscribe(public.MessageTypeTrade, codes, &opts),
)

// 메시지 핸들러 시작
client.PublicWS.StartMessageHandler()

// 현재가 정보 처리
go func() {
    onTicker(ctx, client, func(ticker *public.Ticker) {
        log.Printf("현재가: %+v", ticker)
    })
}()

// 체결 정보 처리
tradeChan := make(chan *public.Trade, 1000)
go func() {
    onTrade(ctx, client, func(trade *public.Trade) {
        log.Printf("체결: %+v", trade)
        tradeChan <- trade
    })
}()

// 호가 정보 처리
go func() {
    onOrderBook(ctx, client, func(orderBook *public.Orderbook) {
        log.Printf("호가: %+v", orderBook)
    })
}()

참고 문서

라이선스

MIT License

# Packages

No description provided by the author
No description provided by the author
Package websocket은 Upbit 거래소의 웹소켓 연결을 관리합니다.

# Functions

NewUpbitClient는 새로운 Upbit API 클라이언트를 생성합니다.
PrettyPrint는 JSON 데이터를 들여쓰기가 적용된 가독성 좋은 형태로 출력합니다.
WithKeys는 API 인증 키를 설정하는 옵션을 반환합니다.
WithPingInterval은 웹소켓 핑 전송 간격을 설정하는 옵션을 반환합니다.

# Constants

비공개 웹소켓 API 주소.
공개 웹소켓 API 주소.
REST API 주소.

# Structs

UpbitClient는 Upbit API 클라이언트입니다.

# Type aliases

UpbitClientOption은 UpbitClient의 설정을 변경하는 함수 타입입니다.