빗썸 api 를 활용해서 비트스플릿 로직을 구현해보려고 한다.
비트스플릿 전략은 그리드 매매라고도 하며, 빗썸에 오토트레이딩 기능과 유사하다.
api로 구현했을때의 장점은 예수금을 유연하게 사용할 수 있다는 점이다.
코드는 아래 링크와 유튜브 영상을 참고하였다.
https://github.com/youtube-jocoding/python-bithumb
https://www.youtube.com/watch?v=g71g8GKlmjE
비트스플릿에서 입력 필요한 값들
종목, 시작가격, 차수당 금액(수량), 매수간격, 매도간격, 최대차수
내 전략을 csv 로 저장하고 코드에서 불러온 후 로직이 돌아가도록 설정하였다.
ticker | start_price | unit_quantity | unit_quantity_type | buy_interval | buy_interval_type | sell_interval | sell_interval_type | max_levels |
KRW-BTC | 160000000 | 300000 | KRW | 0.3 | PERCENT | 0.3 | PERCENT | 50 |
KRW-XRP | 3400 | 30 | UNIT | 5 | KRW | 5 | KRW | 50 |
KRW-USDT | 1420 | 300 | UNIT | 1 | KRW | 2 | KRW | 50 |
# 전략 설정 읽기
strategy_settings = []
with open("strategy_settings.csv", newline="", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
strategy_settings.append({
"ticker": row["ticker"],
"start_price": float(row["start_price"]),
"unit_quantity": float(row["unit_quantity"]),
"unit_quantity_type": row.get("unit_quantity_type", "UNIT").upper(), # UNIT 또는 KRW
"buy_interval": float(row["buy_interval"]),
"buy_interval_type": row.get("buy_interval_type", "KRW").upper(), # KRW 또는 PERCENT
"sell_interval": float(row["sell_interval"]),
"sell_interval_type": row.get("sell_interval_type", "KRW").upper(), # KRW 또는 PERCENT
"max_levels": int(row["max_levels"])
})
max_level을 50차수로 설정한 경우, 각 차수에 대한 목표가와 주문 정보를 저장하여 json 파일로 저장한 후 활용하였다.
코드를 실행하니 주문이 들어가면서 그리드가 생성되었다. XRP(5원 매수, 5원매도 전략)
XRP, BTC, USDT 3가지 종목에 대해서 test 진행 중..