Notice
Recent Posts
Recent Comments
Link
반응형
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 무료서버감시
- 오토 트레이딩
- 코인 자동 매매
- 가성비 스드메
- 배민
- 통계 업데이트
- dbeaver 느림
- 개발자팁
- uptimerobot
- db 테이블 복사
- db 통계 업데이트
- #cpu모니터링
- postgre 테이블 복사
- AWS
- 오블완
- PostgreSQL
- 리눅스 디스크 추가
- 리눅스
- 티스토리챌린지
- 코인 시뮬레이션
- #메모리관리
- 쿠팡
- #시스템관리
- 쿼리 자동완성
- 운동
- #postgresql
- 리눅스 볼륨
- statistics update
- 도보배달
- 항상 실행
Archives
- Today
- Total
Energy Drink
Upbit 자동 트레이딩 개발하기 (2) - 매수/매도 API 활용 본문
728x90
반응형
이전 글에서 Upbit API 키 발급 및 조회 방법을 알아봤습니다. 이번 글에서는 Python을 이용해 자동 매수 및 매도 기능을 구현하는 방법을 소개합니다. 이를 통해 간단한 자동 트레이딩 시스템의 기초를 다져봅시다!
1. 준비 사항
- API 키 발급
이전 포스팅에서 다룬 내용을 참고해 Upbit API 키를 발급받으세요. - 시장 정보 확인
Upbit에서 거래 가능한 가상자산의 티커(Ticker) 정보를 확인해야 합니다. 예를 들어, BTC/KRW는 비트코인의 원화 마켓입니다.
2. 매수 기능 구현
매수는 특정 금액만큼 가상자산을 시장가로 구매하는 작업입니다. pyupbit의 buy_market_order 메서드를 사용해 쉽게 구현할 수 있습니다.
- buy_market_order( ticker: str, price: float )
지정된 금액만큼 시장가로 가상자산을 매수합니다.- 매개변수
- ticker (str) : 거래 대상 티커 ( 예: "KRW-BTC" (비트코인), "KRW-ETH" (이더리움) )
- price (float) : 매수 금액 (KRW 단위)
- 반환값
- 매수가 성공하면 주문 관련 정보가 포함된 딕셔너리를 반환합니다. 반환값의 주요 필드는 다음과 같습니다:)
- uuid: 주문 고유 ID.
- side: 주문 방향 (bid는 매수).
- price: 매수 요청 금액.
- volume: 주문 후 체결된 가상자산 수량.
- 매개변수
매수 코드 예제
import pyupbit
# API 키 설정
access_key = "발급받은 Access Key를 입력하세요"
secret_key = "발급받은 Secret Key를 입력하세요"
# Upbit API 객체 생성
upbit = pyupbit.Upbit(access_key, secret_key)
# 매수 함수
def buy_crypto(currency, krw_amount):
try:
# 시장가 매수
result = upbit.buy_market_order(currency, krw_amount)
print(f"{currency} 매수 성공: {result}")
except Exception as e:
print(f"{currency} 매수 실패: {e}")
# BTC를 10,000원어치 매수
buy_crypto("KRW-BTC", 10000)
3. 매도 기능 구현
매도는 보유 중인 가상자산을 시장가로 판매하는 작업입니다. pyupbit의 sell_market_order 메서드를 활용합니다.
- sell_market_order( ticker: str, amount: float )
보유 중인 가상자산을 시장가로 매도합니다.- 매개변수
- ticker (str) : 거래 대상 티커 ( 예: "KRW-BTC" (비트코인), "KRW-ETH" (이더리움) )
- amount (float) : 매도할 가상자산의 수량 ( 예: 0.01은 비트코인 0.01개를 의미합니다.)
- 반환값
- 매도가 성공하면 주문 관련 정보가 포함된 딕셔너리를 반환합니다. 반환값의 주요 필드는 다음과 같습니다:
- uuid: 주문 고유 ID.
- side: 주문 방향 (ask는 매도).
- price: 매도 시점의 시장 가격.
- volume: 주문 후 체결된 가상자산 수량.
- 매개변수
매도 코드 예제
# 매도 함수
def sell_crypto(currency, amount):
try:
# 시장가 매도
result = upbit.sell_market_order(currency, amount)
print(f"{currency} 매도 성공: {result}")
except Exception as e:
print(f"{currency} 매도 실패: {e}")
# BTC 0.0005개 매도
sell_crypto("KRW-BTC", 0.0005)
4. 추가 Tip: 잔고 확인 후 자동 매수/매도
잔고를 확인하여 조건부로 매수/매도를 실행할 수도 있습니다.
잔고 확인 및 조건부 매수/매도
# 잔고 확인 함수
def get_balance(currency):
balances = upbit.get_balances()
for b in balances:
if b['currency'] == currency.replace("KRW-", ""):
return float(b['balance'])
return 0
# 잔고를 기준으로 조건부 매수/매도 실행
btc_balance = get_balance("KRW-BTC")
print(f"현재 BTC 잔고: {btc_balance}")
if btc_balance == 0:
print("BTC 잔고가 없으므로 10,000원어치 매수합니다.")
buy_crypto("KRW-BTC", 10000)
else:
print(f"BTC 잔고가 {btc_balance}개 있으므로 전량 매도합니다.")
sell_crypto("KRW-BTC", btc_balance)
6. 실행 결과
- 매수 실행 시
KRW-BTC 매수 성공: {'uuid': 'UUID값', 'side': 'bid', ...}
- 매도 실행 시
KRW-BTC 매도 성공: {'uuid': 'UUID값', 'side': 'ask', ...}
7. 주의 사항
- API 요청 속도 제한
Upbit API는 초당 요청 수에 제한이 있습니다. 이를 초과하면 계정이 일시적으로 차단될 수 있으니 주의하세요. - 실거래 주의
테스트 환경이 아닌 실거래 환경에서는 항상 소액으로 충분히 테스트 후 사용하세요. - 보안 관리
API 키는 외부에 노출되지 않도록 환경 변수나 설정 파일에서 관리하세요.
728x90
반응형