본문 바로가기
자동매매 프로그래밍/업비트

[업비트/자동매매] Python으로 쉽게 하는 매수/매도 : 비트코인 자동매매 프로그램 만들기

by me_in_sk 2023. 5. 20.
반응형

 

 

자동매매 프로그램을 만드는 것에 있어 가장 기초 중의 기초는 매수와 매도를 하는 것이다. 이번 포스팅에서는 업비트 거래소에서 제공해주는 Open API를 이용하여 Python을 통해 매수·매도하는 방법을 알아보자.

시작하기에 앞서 원활한 거래를 위해 pyupbit 모듈을 설치할 필요가 있다. 해당 모듈은 Open API를 통한 매매를 보다 간편하게 하기 위한 모듈이니 본인이 사용하는 IDE에 맞춰 아래의 코드를 통해 설치해주기를 바란다. (VSC 경우 터미널에 설치)

 

pip install pyupbit

 

 

먼저 거래를 위한 객체를 생성해 보자

import pyupbit

access = "본인의 고유 Access Key"
secret = "본인의 고유 Secret Key"

upbit = pyupbit.Upbit(access, secret)	# 객체 생성

 

Python을 통해 매매하기 위해서는 해당 거래소의 API와 Python을 연결해주는 연결다리가 필요하다. 위의 코드는 이러한 연결다리를 만드는 과정으로써, Open API를 생성할 때 발급받은 본인의 Access Key와 Secret Key를 통해 객체를 생성하는 것으로 거래소와의 연결다리를 만들 수 있다.

 

 

매수와 매도를 하는 것에 있어서 선택지는 크게 2가지로 나뉜다.

  1. 시장가(현재가)에 매수·매도를 진행한다.
  2. 지정가에 매수·매도를 진행한다.

 

 

먼저 시장가에 매수·매도를 해보자

# 매매할 티커 지정
target_ticker = "KRW-BTC"	# 타겟 티커: 비트코인

# 시장가에 매수
print(upbit.buy_market_order(target_ticker, buy_money))

# 시장가에 매도
amount = upbit.get_balance(target_ticker)  	  # 현재 비트코인 보유 수량
print(upbit.sell_market_order(target_ticker, amount))

# 내가 가진 잔고 데이터를 다 가져온다.
balances = upbit.get_balances()

 

매수와 매도는 모두 업비트 거래소와의 연결다리인 upbit 객체를 통해 수행할 수 있다. 이때, 매수를 진행하는 것에 있어서는 내가 매수하고 싶은 금액을 인수로 주면 원하는 만큼 매수를 할 수 있지만, 매도는 그렇지 않다.

시세가 계속해서 변동되는 코인의 특성상 우리가 매도해야 할 금액이 실시간으로 변하기 때문에 매도를 진행할 때는 보유한 코인의 수량을 통하여 매도하는 방법이 더욱더 효과적이다. 그러기 위해서 upbit 객체를 통해 타겟으로 지정한 티커의 보유량을 불러올 수 있다.

 

추가로 자동매매 프로그램을 만드는 과정에서 매수·매도를 진행하게 된다면, 잔고 데이터를 새롭게 업데이트해 주는 습관을 지니는 것이 좋다.

 

 

다음으로 지정가 매수·매도를 해보자

# 매매할 티커 지정
target_ticker = "KRW-BTC"	# 타겟 티커: 비트코인

# 매매할 지정가 지정
target_price = 40000000

# 가격과 수량으로 지정가 매수
print(upbit.buy_limit_order(target_ticker, target_price, amount))

# 가격과 수량으로 지정가 매도
amount = upbit.get_balance(target_ticker)  	  # 현재 비트코인 보유 수량
print(upbit.sell_limit_order(target_ticker, target_price, amount))

# 내가 가진 잔고 데이터를 다 가져온다.
balances = upbit.get_balances()

 

지정가 매매는 기본적으로 3개의 인수가 필요하다는 점에서 시장가 매매와 차이를 가지며, 시장가 매매와 마찬가지로 매매를 수행한 후에는 잔고 데이터를 새롭게 업데이트해 주어야 한다.

 

 

첫 번째 인수는 목표 티커, 두 번째 인수는 지정가, 세 번째 인수가 매매 수량이며 예시는 아래와 같다.

 

비트코인이 40,000,000원일 때, 1.5 BTC만큼 매수하겠다 ▶ 총 60,000,000원 매수
upbit.buy_limit_order("KWC-BTC", 40000000, 1.5)

 

비트코인이 40,000,000원일 때, 1.5 BTC만큼 매도하겠다 ▶ 총 60,000,000원 매도
upbit.sell_limit_order("KWC-BTC", 40000000, 1.5)

 

 

이번 포스팅에서는 간단하게 매수·매도하는 코드를 작성해 보았다. 참고할 점이 있다면, 모든 매수 로직은 보유 현금이 매수하려는 금액보다 적다면 매수가 이루어지지 않고 오류가 나며 업비트 거래소에서는 최소 주문금액이 5,000원부터이기 때문에 해당 사실들을 인지하고 테스트해 보길 바란다. 다음 포스팅에서는 본격적인 로직을 구성해 보도록 하고 이번 포스팅은 이만 마친다.

 

 

[업비트/자동매매] Python으로 RSI 지표를 이용한 자동매매 프로그램 만들기 (1)

 

[업비트/자동매매] Python으로 RSI 지표를 이용한 자동매매 프로그램 만들기 (1)

자동매매 프로그램 만들기 상대강도지수(RSI)는 투자자가 매수와 매도를 하는 시점에서 과매수 구간인지, 과매도 구간인지를 판단할 수 있게 도와주는 보조 지표이다. 이번 포스팅에서는 해당

me-in-journey.com


 

함께 보면 좋은 글

 

반응형

댓글