저번 글에서는 업비트 API 키를 이용하여 Upbit와 통신을 할 수 있는지 테스트하고,
KRW 잔고 조회와 KRW-BTC의 현재가 조회 기능까지 테스트해 보았습니다.
이번엔 매수와 매도 기능을 구현해서 실제 매수 주문과 매도 주문이 이루어지는지,
또한 실제 Upbit 잔고에 매수, 매도 사항이 반영이 되는지를 테스트해 보겠습니다.
매수 주문은 pyupbit 라이브러리의 buy_market_order 함수를 이용합니다.
buy_market_order 함수에 매수할 암호화폐 종목과 액수를 입력하면 매수 주문을 걸 수 있습니다.
매수 주문이 체결된 모습입니다.
KRW-BTC를 5000원 매수하였습니다.
5000원 매수를 하는 이유는 업비트 최소 매수 매도 금액이 5000원이기 때문입니다.
이제 매수된 BTC을 확인하기 위해 BTC 잔고를 조회하는 코드를 구현해 보겠습니다.
KRW 잔고를 get_balance("KRW")로 구현하였 듯이 BTC 잔고는 get_balance 함수에 인자값을 "BTC"로 설정해 조회하였습니다.
BTC를 5000원 매수하였기 때문에 KRW 잔고는 5,007원으로 줄어든 모습입니다.
그리고 BTC 잔고는 3.359e-05라고 나오는 것을 확인할 수 있습니다.
보통 잔고가 3.359e-05와 같이 알파벳이 섞여 나오지 않으므로 Cursor Agent를 이용해 해당 출력 포맷 문제를 해결해 보겠습니다.
AI가 출력 포맷을 변경해 주었고 해당 코드로 다시 BTC 잔고를 확인해 보았습니다.
제대로 출력이 되는 것을 확인할 수 있습니다.
이제 매수한 암호화폐를 매도하는 기능을 구현하겠습니다.
매도 기능은 pyupbit 라이브러리의 sell_market_order 함수를 이용합니다.
매도를 하려고 하니, '주문 가능한 최소금액은 5000KRW 입니다.'라는 에러 메시지가 출력되었습니다.
해당 에러는 업비트 최소 매도 금액이 5000KRW 이지만, 암호화폐의 가격이 떨어져서 보유한 BTC의 가치가 5000KRW 미만이거나,
업비트의 수수료로 인해 5000KRW를 만족하지 못하기 때문입니다.
따라서 애초에 매수할 때부터 매수 금액을 5500KRW로 설정하여서 최소금액을 만족하지 못하는 문제를 해결해 보았습니다.
이제 매수와 매도가 한 번의 실행으로 동시에 이루어지게 만들어보겠습니다.
매수 주문 후 매수된 BTC를 확인하고, 30초 뒤 다시 매도하는 코드를 구현했습니다.
매수와 매도가 모두 이루어지는 것을 확인했습니다.
마지막으로 매수와 매도 후 얼마만큼의 손익이 발생했는지 출력하는 코드를 구현했습니다.
처음의 KRW 잔고에서 매수와 매도 이후의 KRW 잔고를 빼서 손익을 계산하였습니다.
이렇게 매수 전 KRW 잔고 확인, KRW-BTC의 현재가 확인 후 매수 주문과 매수된 BTC 잔고 확인, 이후 매도 주문 후 손익 확인 기능까지 모두 간단하게 구현하여 테스트 후 github에 올려보았습니다.
이 다음으로는 앞으로 진행할 실제 프로젝트에서 어떤 방식으로 매매를 진행할지, 어떤 매매 기법을 이용할지, 어떤 종목을 매매할 지 등에 대해 실제 코드를 작성하기 전 사전 자료 수집과 프로젝트 설계 및 구상에 대해 작성해 보겠습니다!
'Dev > python' 카테고리의 다른 글
파이썬으로 자동 매매 프로그램 만들기 (1) (0) | 2025.07.10 |
---|