바이낸스Binance 초대코드로 누리는 수수료 할인 20%와 파격 가입 혜택! 입문부터 실전까지 꿀팁 대방출새 창 열림
작성자비어있는삵65
본문
안녕하세요 Shinekim 입니다.이번 프로그램은 예전에 계획했던 '그리드 스플릿'투자의 변형인데요, 이전에는 코인으로 하려고 했지만 코인은 아직까지는 좀 손대고 싶지는 않아서 요즘 핫한 SOXL의 선물투자인 SOXLUSDT를 바이낸스로 거래하는 자동매매프로그램을 만들어 보는 중입니다.!안녕하세요 ShineKim 입니다. 오늘자로 자동매매 프로그램 개발 진행 상황에 대해서 다시 정리하려고 합...그리드 스플릿 투자는 박성현 작가님의 세븐스플릿를 모티브로 고안을 하였으며, 변동성이 강하고 우상향하는 종목에 대해서 적용이 가능한 기법입니다. (세븐스플릿은 손절개념이 없음)기본적인 룰은 분할 매수이며, 매수의 비중을 배수로 키워가면서 하락 후 약간의 상승만으로도 큰 수익을 가져갈 수 있는 매매 방법입니다. 만약 지속적인 하락으로 인해 손실이 발생하게된다면, 비중조절을 통해 리스크를 덜어낼 수 있는 기법도 결합을 하여 큰 변동성을이용한 수익과 리스크관리를 모두 할 수 있도록 개발 하였습니다.매매는 바이낸스거래소의 API를 이용하기때문에 휴장없이 24시간 매매가 진행 되게 됩니다.왜 SOXLUSDT를 선택했을까?이번 자동매매 프로그램의 첫 번째 테스트 종목으로 SOXLUSDT를 선택했습니다.종목을 선정한 이유는 두 가지입니다.1. 변동성이 충분히 크기 때문입니다.이번 프로그램의 핵심 전략은 분할매수(Grid Averaging) 입니다.이 전략은 가격이 일정 구간 하락하면 추가 매수를 진행하고, 평균단가를 낮춘 후 반등 시 수익을 실현하는 구조입니다.따라서 가격 변동이 너무 작으면 분할매수가 거의 발생하지 않고, 전략을 충분히 검증하기 어렵습니다.SOXL은 미국 반도체 업종을 3배 레버리지로 추종하는 ETF이기 때문에 일반 ETF보다 가격 변동성이 매우 큰 편입니다.2. 거래량이 많고 유동성이 풍부합니다.Binance Futures의 SOXLUSDT는 거래량이 비교적 충분한 편입니다.자동매매에서는 원하는 가격에 주문이 체결되는 것도 매우 중요합니다.거래량이 부족한 종목은 스프레드가 커질 수 있고, 지정가 주문이 예상보다 늦게 체결되는 경우가 있습니다.SOXLUSDT는 binance 이런 문제가 상대적으로 적어 테스트 대상으로 적합했습니다.SOXLUSDT 분할매수 전략과 프로그램 구조 정리지난 글에서는 Binance API를 이용해 자동매매 프로그램을 만들기 시작한 과정과 초기 시행착오를 정리했습니다.이번 글에서는 현재까지 개발한 프로그램의 구조와 실제 적용하고 있는 매매 전략을 조금 더 자세히 정리해보려고 합니다.프로그램 개요이번에 개발 중인 프로그램은 Binance Futures API를 이용한 자동매매 프로그램입니다.현재는 SOXLUSDT를 대상으로 테스트하고 있으며, 핵심 목표는 다음과 같습니다.1차 매수는 사용자가 직접 진행이후 하락 구간마다 자동 분할매수목표 수익률 도달 시 전량 청산큰 하락이 발생하면 쿼터 손절 후 전략 재시작Gmail 알림을 통해 주요 이벤트 수신GUI를 통해 전략 설정과 상태 확인 가능처음에는 단순히 가격을 조회하고 주문을 넣는 수준이었지만, 개발을 진행하면서 점점 실제 운용에 필요한 기능들이 추가되었습니다.현재는 API 설정, 전략 설정, 주문 관리, 알림 설정, 통계, 이벤트 로그 등을 GUI에서 확인할 수 있도록 구성했습니다.기본 전략 구조이 전략의 기본 아이디어는 단순합니다.먼저 사용자가 1차 매수를 직접 합니다.그 후 프로그램이 현재 포지션을 확인하고, 전략 시작 시점의 현재가를 새로운 기준가로 잡습니다.이 기준가를 1차 기준가로 보고, 이후 회차별 하락률에 따라 지정가 매수 주문을 생성합니다.예를 들어 전략 시작 시 현재가가 240 USDT이고, 하락률을 2% 단위로 설정했다면 다음과 같이 주문 기준이 만들어집니다.1차 : 수동 매수2차 : 기준가 대비 -2%3차 : 기준가 대비 -4%4차 : 기준가 대비 -6%5차 : 기준가 대비 -8%6차 : 기준가 대비 -10%중요한 점은 회차 기준이 평균단가가 아니라 전략 시작 시점의 현재가라는 점입니다.이렇게 한 이유는 전략을 중지했다가 다시 시작할 때 더 자연스럽게 운용하기 위해서입니다.예를 들어 이미 보유 포지션의 ROI가 -10%인 상태에서 다시 전략을 시작한다고 가정해보겠습니다.이때 평균단가를 기준으로 다시 회차를 계산하면 이미 지나간 가격대에 주문이 걸릴 수 있습니다. binance 반대로 현재가를 새 기준가로 잡으면, 지금 시장 상황을 기준으로 다시 -2%, -4%, -6% 구간을 계산할 수 있습니다.즉, 전략 재시작 시에는 기존 포지션을 유지하되, 현재가를 기준으로 새로운 분할매수 전략을 시작하는 방식입니다.주문 유지 방식처음에는 2차부터 6차까지 모든 주문을 한 번에 넣는 방식도 생각했습니다.하지만 실제 운용에서는 모든 주문을 한 번에 넣는 것보다 현재 회차 기준으로 몇 개의 주문만 유지하는 편이 더 안전하다고 판단했습니다.그래서 현재 프로그램은 “주문 유지 개수”를 사용합니다.예를 들어 주문 유지 개수를 2개로 설정하면 다음과 같이 동작합니다.현재 1차 진행 중 → 2차, 3차 주문만 생성2차 체결 → 3차 주문 유지, 4차 주문 생성3차 체결 → 4차 주문 유지, 5차 주문 생성4차 체결 → 5차 주문 유지, 6차 주문 생성이 방식의 장점은 불필요하게 먼 가격대의 주문을 미리 넣지 않아도 된다는 점입니다.또 예수금이 제한적인 상황에서도 필요한 주문만 관리할 수 있어 프로그램 운용이 더 안정적입니다.회차별 매수금액초기 버전에서는 전체 예수금을 기준으로 1, 2, 4, 8, 16, 32 비중을 나누는 방식을 사용했습니다.하지만 실제 테스트를 하다 보니 더 직관적인 방식이 필요했습니다.현재는 1차 매수금액을 기준으로 다음 회차의 매수금액을 자동 계산하도록 바꾸었습니다.예를 들어 1차 매수금액이 10 USDT라면 기본값은 다음과 같습니다.1차 : 10 USDT2차 : 10 USDT3차 : 20 USDT4차 : 40 USDT5차 : 80 USDT6차 : 160 USDT즉, 2차는 1차와 같은 금액으로 시작하고, 이후에는 2배씩 증가하는 구조입니다.다만 이 값들은 GUI에서 직접 수정할 수 있습니다.따라서 사용자는 자신의 예수금 상황과 위험 선호도에 맞게 각 회차별 매수금액을 조정할 수 있습니다.익절 전략익절은 평균단가를 기준으로 판단합니다.예를 들어 평균단가가 250 USDT이고 TP 익절 기준이 10%라면, 익절가는 다음과 같습니다.250 × 1.10 USDT현재가가 275 USDT에 도달하면 프로그램은 보유 포지션을 전량 시장가로 청산합니다. binance TP 청산 후에는 설정에 따라 자동 재진입도 가능합니다.자동 재진입을 사용할 경우, Binance에서 요구하는 최소 주문금액을 계산한 뒤 그 금액을 새로운 1차 매수금액으로 사용합니다.예를 들어 현재 SOXLUSDT의 최소 주문 가능 금액이 5.29 USDT라면, TP 청산 후 5.29 USDT 수준으로 다시 1차 시장가 매수를 진행하고 전략을 새로 시작합니다.최소 매수금액 계산Binance Futures에서는 심볼마다 최소 주문수량과 최소 주문금액 조건이 있습니다.프로그램은 Binance의 exchangeInfo 정보를 조회해서 다음 값을 확인합니다.최소 주문수량수량 단위가격 단위최소 주문금액그리고 현재가를 기준으로 실제 주문 가능한 최소 수량을 계산합니다.즉 단순히 “수량이 작아도 주문 가능하겠지”라고 판단하는 것이 아니라, Binance가 요구하는 거래 규칙에 맞춰 주문 가능 여부를 먼저 확인합니다.이 기능을 추가한 이유는 테스트 중에 최소 주문금액 미만 오류가 자주 발생했기 때문입니다.현재는 주문금액이 Binance 최소 조건보다 작으면 주문을 보내지 않고 SKIP 처리합니다.예수금 부족 처리실제 테스트 중 가장 중요하게 수정한 부분 중 하나가 예수금 부족 처리였습니다.처음에는 예수금이 부족한 주문이 계속 반복 시도되면서 로그가 계속 쌓이는 문제가 있었습니다.예를 들어 4차 주문에 필요한 금액이 220 USDT인데, 사용 가능한 예수금이 130 USDT라면 주문은 실패합니다.초기에는 이 실패가 계속 반복되면서 프로그램이 느려지거나 종료될 가능성이 있었습니다.그래서 현재는 예수금이 부족한 회차는 SKIP 상태로 관리합니다.동일한 회차에 대해서는 같은 오류 로그를 반복해서 출력하지 않고, 예수금이 충분해졌을 때 다시 주문을 시도할 수 있도록 했습니다.이 수정 이후 프로그램 안정성이 많이 좋아졌습니다.쿼터 손절 전략이 프로그램의 손절 방식은 일반적인 전량 손절과 조금 다릅니다.저는 이 방식을 “쿼터 손절”이라고 부르고 있습니다.예를 들어 평균단가 기준으로 -20%에 도달하면 보유 포지션 전체를 매도하는 것이 아니라, 포지션의 25%만 시장가로 매도합니다.그 후 남은 binance 75% 포지션은 그대로 유지합니다.그리고 프로그램은 남은 포지션을 새로운 1차로 보고 전략을 다시 시작합니다.정리하면 다음과 같습니다.평균단가 기준 SL 가격 도달보유 포지션의 25% 시장가 매도미체결 주문 전체 취소남은 포지션 유지현재가를 새 기준가로 설정2차 이후 분할매수 주문 재생성이 방식은 손실을 일부 줄이면서도 시장에서 완전히 이탈하지 않는 구조입니다.급락장에서 위험을 줄이되, 반등 가능성도 함께 가져가기 위한 방식입니다.Gmail 알림프로그램에는 Gmail 알림 기능도 추가했습니다.현재 알림이 발송되는 주요 이벤트는 다음과 같습니다.전략 시작주문 생성주문 체결TP 전량 청산SL 쿼터 손절전략 중지수동 주문 취소 감지처음에는 전략 시작 메일과 TP 청산 메일만 정상적으로 수신되었고, 주문 체결 메일은 오지 않는 문제가 있었습니다.이후 주문 ID를 기준으로 체결 여부를 감지하도록 개선했고, 체결 이벤트도 Gmail로 받을 수 있도록 수정했습니다.자동매매 프로그램은 실행해놓고 계속 화면을 보고 있을 수 없기 때문에, 메일 알림은 생각보다 중요한 기능이었습니다.이벤트 로그와 체결 내역프로그램에는 일반 로그 외에도 이벤트 로그와 체결 내역 탭을 추가했습니다.이벤트 로그에는 전략의 중요한 흐름이 기록됩니다.예를 들면 다음과 같습니다.전략 시작기준가 설정2차 주문 생성2차 체결평균단가 변경TP 조건 충족전량 청산자동 재진입이런 로그가 있으면 나중에 문제가 생겼을 때 원인을 추적하기가 훨씬 쉬워집니다.체결 내역 탭에는 매수와 매도 내역을 따로 정리해서 보여줍니다.장기적으로는 이 데이터를 바탕으로 승률, 평균 수익률, 누적 실현손익 같은 통계도 더 정확하게 계산할 수 있을 것 같습니다.통계 기능현재 프로그램에는 기본적인 통계 기능도 추가했습니다.아직 완성형은 아니지만, 앞으로 아래와 같은 항목들을 계속 보완할 예정입니다.총 거래 횟수TP 횟수SL 횟수실현손익누적 수익률평균 보유 시간최대 낙폭자동매매 프로그램은 단순히 주문만 잘 넣는다고 끝나는 것이 아니라, 실제로 전략이 돈을 벌고 있는지 확인할 수 있어야 합니다.그래서 앞으로는 통계 기능을 더 중요하게 다룰 예정입니다.GUI 개선초기 binance GUI는 단순한 입력창 형태였습니다.하지만 기능이 늘어나면서 화면 구성을 다시 정리할 필요가 생겼습니다.현재는 좌측 메뉴와 우측 메인 화면 구조로 구성했습니다.주요 메뉴는 다음과 같습니다.대시보드전략 설정주문 관리알림 설정통계시스템 설정그리고 로그창은 어느 화면에 있든 항상 볼 수 있도록 하단 고정 형태로 변경했습니다.이전에는 탭을 바꾸면 로그를 보기 어려웠는데, 지금은 어떤 화면에서도 프로그램 상태를 바로 확인할 수 있습니다.현재까지의 결과현재까지 테스트한 결과, 매수와 TP 매도는 정상적으로 동작했습니다.예수금 부족, 최소 주문금액, 수동 주문 취소, API 오류 처리 등 실제 운용 중에 발생할 수 있는 여러 문제도 하나씩 수정했습니다.아직 완성된 프로그램이라고 보기는 어렵지만, 이제는 단순 테스트용이 아니라 실제 운용을 고려한 자동매매 프로그램에 가까워지고 있습니다.가격이 내려가서 매수지점을 만나게 되면 매수가 체결됩니다. 그리고 다음 회차 주문이 자동으로 들어갑니다. (정해진 비중으로 자동계산)만약에 1회차부터 끝없이 상승하여 익절이 될 경우, 자동 종료 후 1회차 부터 재시작을 하도록 되어있습니다.어젯 밤 마이크론 실적발표가 있었죠, 그래서 장 마감 후 에프터장에서 SOXL이 폭등을 하였는데, 그 전까지 4차 매수가 진행되었고, 폭등 이후 전량 익절 청산되고, 바로 다음 타점으로 1회차 진입이 되었습니다. 그리고 현재 3회차 매수 진행 중입니다.Binance 거래전략설정앞으로 개선할 부분다음 단계에서는 아래 기능들을 더 보완해보려고 합니다.통계 기능 고도화 (수익 가시화)exe 빌드 후 릴리즈자동매매 프로그램을 직접 만들어보면서 느낀 점은, 전략 자체보다도 예외 처리와 상태 관리가 훨씬 중요하다는 것입니다.주문이 실패했을 때, 예수금이 부족할 때, 프로그램을 껐다 켰을 때, 사용자가 수동으로 주문을 취소했을 때 등 여러 상황을 고려해야 실제로 사용할 수 있는 프로그램이 됩니다.이번 개발을 통해 그런 부분들을 하나씩 경험하고 있습니다.앞으로도 실제 테스트를 진행하면서 계속 개선해볼 생각입니다.곧 프로그램도 릴리즈 하겠습니다. 관심 있으신 분들은 연락주세요 !