[암호화폐] 프로젝트#1 : 업비트 지정가 자동 매수/매도하기[4]

Words
213
Reading
1 min
Listen
Play
7y

업비트 지정가 자동 매수/매도 프로그램을 개발 중입니다. 오늘은 네 번째 이야기입니다.

업비트에서 지정가 자동 매수/매도를 위해서는 주문 내역 변화만으로 매매 내역을 파악해야 하는 문제를 풀어야 합니다. 우선 필요한 자료 구조를 만들어 봅니다.

매매에 대한 정보를 기술하는 구조체입니다.
ticker 정보와 매매 수량, 그리고 지정 매수/매도가를 기술합니다. 복수 가격대에 대한 주문을 위하여 list 구조체를 사용합니다.

pair_trading  = [
    {'id': 1, 'ticker':"KRW-STEEM", 'buy':272, 'sell':293, 'vol':10}, 
    {'id': 2, 'ticker':"KRW-STEEM", 'buy':262, 'sell':282, 'vol':10}
] 

매매 여부를 파악하기 위해서는 이전 상태와 현재 주문 상태를 보면서 변화가 발생하면 매매가 있었던 것으로 간주할 수 있습니다.

그래서 필요한 구조는 아래와 같습니다.

tr_info = [ 
   {'id': 1, 'pre_buy': 0, 'pre_sell': 10, 'buy': 0, 'sell': 0}
   {'id': 2, 'pre_buy': 0, 'pre_sell': 10, 'buy': 0, 'sell': 0}
]

trading_pair 각각에 대하여 가격에 대한 변화 정보가 필요하므로, 'id' 가 같은 항목끼리 연결되도록 하였습니다.


손 코딩으로 잘 동작하는지 확인해 보았습니다. 우선 매매에 따른 tr_info에 있는 값의 변화를 정리해 보면 다음과 같습니다.

최초 거래를 위한 조건으로 pre_sell 값에 거래 수량을 적어 놓으면 자동으로 매수가 시작됩니다. 왜냐하면 처음에는 주문 내역이 없기 때문에 buy, sell 값이 0으로 돌아오기 때문입니다. 즉 이전 주문 내역과 현재 주문 내역의 차이에 대하여 반대쪽 주문을 내는 방식으로 진행이 됩니다.

손 코딩으로 돌려보니 잘 돌아갑니다. 이제 기본 자료구조와 거래 알고리즘이 나왔으니 코딩만 하면 됩니다. unittest 적용해서 모듈별로 잘 쪼개서 코딩해 보겠습니다.