파이썬으로 코인 자동매매 프로그램 만들기 - 6: 지정가, 시장가 주문하기, 주문 취소하기
첫글 파이썬으로 코인 자동매매 프로그램 만들기 - 1 : 업비트에서 API 불러오기
이전글 파이썬으로 코인 자동매매 프로그램 만들기 - 5: API키 발급받기, 잔고 확인하기
안녕하세요 ㅎㅎ 오랜만에 포스팅하네요. 학교 공부가 너무 바빠서 + 게을러서 이제야 다음 포스팅을 올리게 됐네요.
이번엔 지정가, 시장가로 코인을 직접 사고 팔아보겠습니다.
지정가 주문
지정가 주문은 주문자가 가격을 결정해서 매수, 매도를 하는 방식입니다. 예를 들어 지금 리플이 1200원인데 저는 1150원에 사고 싶다면 1150원에 주문을 걸어놓고 가격이 떨어질 때까지 기다리는 방식이죠. 시장가보다 싸게 사고 싶거나, 비싸게 팔고 싶을 땐 지정가 주문으로 하면 됩니다.
저번 포스팅에서 설명드렸던 것 처럼 키 값이 저장된 파일을 열고 키 값을 불러오는 코드가 필요합니다.
buy_limit_order 메서드를 사용하면 지정가로 코인을 매수할 수 있습니다.
메서드에 코인의 티커 이름, 주문할 가격, 수량을 입력하면 입력한 주문 가격으로 입력한 수량만큼 주문합니다.
저는 리플을 1000원으로 10개를 매수해보겠습니다.
import pyupbit
f = open("C:/코인자동매매/moroco.txt")
lines = f.readlines()
access = lines[1].strip() # access key
secret = lines[3].strip() # secret key
f.close()
upbit = pyupbit.Upbit(access, secret)
print(upbit.buy_limit_order("KRW-XRP", 1000, 10))
입력한대로 리플이 주문한 가격으로 입력한 수량만큼 주문된 것을 확인하실 수 있습니다. 당연히 미체결되었고요.
이번엔 반대로 매도주문도 해보겠습니다. sell_limit_order 메서드를 써서 같은 방식으로 값을 입력하면 됩니다.
이번엔 리플을 2000원으로 10개를 매도해보겠습니다.
import pyupbit
f = open("C:/코인자동매매/moroco.txt")
lines = f.readlines()
access = lines[1].strip() # access key
secret = lines[3].strip() # secret key
f.close()
upbit = pyupbit.Upbit(access, secret)
print(upbit.sell_limit_order("KRW-XRP", 2000, 10))
마찬가지로 매도주문이 입력된 것을 확인하실 수 있습니다.
시장가 주문
다음은 시장가 주문입니다. 지정가 주문과 달리 현재 시장가격으로 바로 주문하는 방식입니다.
현재 시장가격이 내가 생각하는 매수 가격보다 낮거나, 매도 가격보다 높을 때 사용하는 방식입니다.
이번엔 buy_market_order 메서드를 사용해 시장가로 주문해보겠습니다.
지정가 주문에서는 주문할 가격과 수량을 입력했는데, 시장가 주문은 가격을 입력할 필요가 없고, 대신 주문할 액수를 입력합니다. 지정가 주문에서 수량을 입력했던 것과 달리, 시장가 주문에서는 액수를 입력합니다.
제가 비트코인을 시장가 주문 매수로 10000원 입력하면 비트코인을 현재 가격으로 10000원 만큼만 매수하는 겁니다.
한번 시장가 주문으로 요즘 뜨거운 도지코인을 10000원 매수해보겠습니다.
import pyupbit
f = open("C:/코인자동매매/moroco.txt")
lines = f.readlines()
access = lines[1].strip() # access key
secret = lines[3].strip() # secret key
f.close()
upbit = pyupbit.Upbit(access, secret)
print(upbit.buy_market_order("KRW-DOGE", 10000))
시장가 주문으로 바로 매수가 된 걸 확인할 수 있습니다. 매수 액수에 수수료가 붙어서 총 10005원이 매수되었네요.
하지만 저는 쫄보라 이런 코인은 오래 들고 싶지 않기 때문에, 시장가 주문으로 모두 팔아버리겠습니다. 소액이라도 나중에 조금 후회할 선택이 아니길 바라며...
시장가 매도 주문은 sell_market_order 메서드를 사용합니다. 지정가 매도 주문과 달리 수량을 기준으로 매도합니다.
import pyupbit
f = open("C:/코인자동매매/moroco.txt")
lines = f.readlines()
access = lines[1].strip() # access key
secret = lines[3].strip() # secret key
f.close()
upbit = pyupbit.Upbit(access, secret)
print(upbit.sell_market_order("KRW-DOGE", "매도할 수량"))
아까 매수한 수량을 그대로 입력해 도지코인을 모두 매도했습니다. 이제 다시 제 지갑에 도지코인은 없네요.
주문 취소
이번엔 아까 매수, 매도 했던 리플 주문을 취소해보겠습니다.
주문 취소는 cancel_order 메서드를 사용합니다.
지금까지 매수, 매도를 하면서 뭔가 숫자들이 많이 써있는 화면이 출력된 걸 볼 수 있었는데요.
여기서 노란색으로 표시한 부분인 uuid가 취소에 필요한 값입니다. uuid는 각 주문에 부여되는 고유한 값인데요.
cancel_order에 uuid 값을 입력하면 그 uuid가 부여된 주문을 취소할 수 있습니다.
리플을 매수, 매도할 때 출력된 uuid 값을 가지고 주문을 취소하겠습니다.
import pyupbit
f = open("C:/코인자동매매/moroco.txt")
lines = f.readlines()
access = lines[1].strip() # access key
secret = lines[3].strip() # secret key
f.close()
upbit = pyupbit.Upbit(access, secret)
print(upbit.cancel_order('3e2c6fd3-f70c-4939-8054-686ce6bad2d4'))
print(upbit.cancel_order('62d6e7ec-6cce-41b8-b065-29dc3d2611cb'))
주문이 잘 취소되었습니다.
이번 포스팅은 여기서 마치고요. 다음 포스팅에서는 RSI기법을 사용해서 실제 자동매매를 구현해보겠습니다!
감사합니다.
참고한 자료
github.com/sharebook-kr/pyupbit
sharebook-kr/pyupbit
python wrapper for upbit API . Contribute to sharebook-kr/pyupbit development by creating an account on GitHub.
github.com
www.youtube.com/watch?v=9yMMLT2KAM8