업비트와 바이낸스 API 연결 전 먼저 확인한 기본 설정

업비트와 바이낸스 API를 연결해서 자동매매를 시작하고 싶은데, 공식 문서만 보면 막막하죠. 3개월간 직접 삽질하며 알게 된 API 키 발급부터 보안 설정, 첫 봇 실행까지의 과정을 솔직하게 풀어봤어요.

작년 가을쯤이었거든요. 새벽 3시에 차트 보다가 매수 타이밍을 놓치는 일이 한 달에 서너 번씩 반복됐어요. “잠깐만 눈 붙이자” 했다가 눈 뜨면 이미 5% 올라 있고. 그때 처음으로 자동매매라는 걸 진지하게 찾아봤는데, 솔직히 API라는 단어 자체가 무서웠습니다.

근데 막상 해보니까요, 어렵긴 한데 ‘넘을 수 없는 벽’ 수준은 아니었어요. 물론 중간에 API 키 권한을 잘못 설정해서 주문이 안 나가거나, IP 화이트리스트를 빼먹어서 접속 차단당한 적도 있었죠. 그런 시행착오를 다 겪고 나서야 비로소 안정적으로 돌아가는 봇을 만들 수 있었거든요. 오늘은 그 과정에서 제가 겪은 실수와 해결법을 하나하나 공유하려고 해요.

코딩 1도 몰랐던 내가 자동매매에 빠진 이유

처음 코인 투자를 시작한 건 2023년이었어요. 수동 매매로 시작했는데, 문제는 사람이 24시간 깨어 있을 수 없다는 거잖아요. 비트코인은 주말에도, 새벽에도, 명절에도 움직이거든요. 특히 해외 시장 영향을 받는 새벽 1~4시 사이에 큰 변동이 잦았는데, 그 시간대를 매번 놓쳤어요.

결정적인 계기는 어느 날 새벽이었습니다. 자기 전에 “내일 아침에 사야지” 하고 잤는데, 6시간 만에 이더리움이 8% 빠졌다가 다시 원점으로 돌아온 거예요. 저 혼자 잠든 사이에 완벽한 매수-매도 기회가 왔다 간 거죠. 그 다음 날부터 파이썬 기초 강의를 들었어요.

API라는 건 쉽게 말해 거래소와 내 프로그램 사이의 ‘통신 창구’예요. 거래소 화면에서 직접 클릭하는 대신, 코드로 “이 가격에 사줘”, “지금 팔아줘” 같은 명령을 보내는 건데요. 이 통신을 하려면 ‘열쇠’가 필요하고, 그게 바로 API 키입니다. Access Key는 내 신분증, Secret Key는 비밀번호라고 생각하면 돼요.

업비트 API 키 발급, 실제로 해보니 이랬다

업비트 API 키 발급은 반드시 PC 웹에서만 가능해요. 모바일에서는 아예 메뉴가 안 보이거든요. 로그인 후 마이페이지에서 ‘Open API 관리’로 들어가면 키 발급 화면이 나옵니다. 업비트는 계정당 최대 10개의 API 키를 만들 수 있고, 각 키마다 허용 IP를 최대 10개까지 등록할 수 있어요.

권한 설정이 핵심인데요. 자산조회, 주문조회, 주문하기, 출금조회, 출금하기, 입금조회, 입금하기 중에서 골라야 해요. 자동매매만 할 거라면 자산조회 + 주문조회 + 주문하기, 이 세 가지만 켜면 됩니다. 절대로 출금하기는 체크하지 마세요. 이유는 뒤에서 자세히 말할 건데, API 키가 유출됐을 때 출금 권한까지 있으면 자산이 통째로 날아갈 수 있거든요.

IP 주소 등록 부분에서 제가 처음에 실수했어요. 집 와이파이의 사설 IP(192.168.x.x)를 넣었더니 당연히 안 되더라고요. 외부에서 확인 가능한 공인 IP를 넣어야 해요. 구글에 “내 IP 주소”라고 검색하면 바로 뜹니다. 다만 가정용 인터넷은 대부분 유동 IP라서, IP가 바뀌면 API 접속이 차단돼요. 고정 IP 서비스를 쓰거나, 클라우드 서버를 이용하는 게 안정적이에요.

발급이 완료되면 Access Key와 Secret Key가 화면에 딱 한 번 표시돼요. Secret Key는 이 순간에만 확인 가능하고, 페이지를 닫으면 다시 볼 수 없어요. 저는 이걸 모르고 넘겼다가 키를 삭제하고 재발급해야 했습니다. 반드시 메모장에 복사해서 안전한 곳에 보관하세요.

⚠️ 주의

업비트 API 키 발급 시 ‘출금하기’ 권한은 절대 켜지 마세요. 해킹이나 키 유출 사고 시 자산이 외부로 빠져나갈 수 있습니다. 자동매매에는 자산조회·주문조회·주문하기 세 가지면 충분해요. 출금은 반드시 업비트 앱에서 직접 하세요.

바이낸스 API 세팅에서 제가 놓친 것들

바이낸스는 업비트보다 설정할 게 조금 더 많아요. 로그인 후 프로필 아이콘에서 ‘API Management’ 페이지로 들어가면 됩니다. ‘Create API’를 누르고 ‘System generated’를 선택하면 키 생성이 시작돼요. 여기서도 2FA 인증(구글 인증기 또는 이메일)을 거쳐야 하고요.

바이낸스 API 권한은 크게 Read, Enable Spot & Margin Trading, Enable Futures, Enable Withdrawals로 나뉘어요. 자동매매 목적이라면 Read + Enable Spot & Margin Trading만 활성화하면 됩니다. Futures(선물)는 레버리지 거래인데, 초보 단계에서 건드리면 정말 위험해요. Enable Withdrawals도 당연히 끄고요.

제가 바이낸스에서 가장 크게 당한 부분이 IP 화이트리스트였어요. 바이낸스는 IP 제한 없이 키를 생성하면 90일 후에 자동 만료되거든요. 처음에는 “귀찮으니까 안 넣지 뭐” 했다가, 석 달 뒤 봇이 갑자기 멈춘 거예요. 원인을 찾는 데 이틀이나 걸렸어요. IP 화이트리스트를 등록하면 만료 없이 계속 쓸 수 있으니, 처음부터 설정하는 게 맞습니다.

바이낸스 API 키도 Secret Key가 생성 직후에만 보인다는 점은 업비트와 같아요. 한 가지 다른 점이라면, 바이낸스는 키 생성 후에도 ‘Edit restrictions’ 버튼으로 권한과 IP를 수정할 수 있다는 거예요. 업비트는 권한 변경 시 키를 삭제하고 새로 만들어야 하거든요.

업비트 vs 바이낸스 API, 실사용 기준 비교

두 거래소를 다 써본 입장에서, API 사용 경험은 꽤 달랐어요. 단순히 “어디가 좋다”가 아니라, 용도에 따라 맞는 쪽이 다르더라고요. 아래 테이블에 핵심 차이를 정리해봤습니다.

항목 업비트 바이낸스
KRW 거래 수수료 0.05% 0.1% (BNB 할인 시 0.075%)
주문 API 호출 제한 초당 8회 분당 1,200회 (가중치 기준)
파이썬 라이브러리 pyupbit / ccxt python-binance / ccxt
IP 미등록 시 키 발급 불가 90일 후 자동 만료

업비트의 장점은 국내 원화 마켓의 낮은 수수료(0.05%)와 한국어 문서예요. 처음 API를 접하는 분이라면 업비트 개발자 센터 문서가 한글로 잘 되어 있어서 진입장벽이 낮습니다. pyupbit이라는 전용 라이브러리도 있어서, 코드 몇 줄이면 잔고 조회부터 주문까지 가능하거든요.

바이낸스는 거래 가능한 코인 수가 압도적으로 많고, 선물·마진 거래 API도 지원해요. 호출 제한도 업비트보다 넉넉한 편이에요. 다만 영문 문서 위주라 처음에 헤맬 수 있고, 한국 거주자에 대한 규제 이슈도 체크가 필요해요.

📊 실제 데이터

업비트 API의 주문 생성은 초당 최대 8회, 시세 조회(캔들·호가·체결)는 초당 최대 10회로 제한돼요. 바이낸스는 분당 1,200회(가중치 합산 기준)이고, 주문 관련은 10초당 100회, 24시간 기준 200,000건까지 가능합니다. 초단타 봇을 돌리는 게 아니라면 두 거래소 모두 충분한 수치예요.

API 키 보안, 한 번 털리면 끝이더라고요

이건 정말 강조해도 모자라요. 2022년에 자동매매 플랫폼 3Commas에서 API 키 데이터베이스가 해킹당한 사건이 있었거든요. 수많은 사용자의 API 키가 유출되면서 거래소 계좌가 무단으로 조작된 사례가 실제로 발생했어요. 출금 권한까지 열어둔 사람들은 자산을 아예 잃었습니다.

제 주변에도 비슷한 일이 있었어요. 깃허브(GitHub)에 코드를 올리면서 API 키가 들어있는 설정 파일을 같이 푸시한 친구가 있었는데, 불과 30분 만에 누군가가 그 키로 이상한 코인을 마구 사고팔았더라고요. 소위 ‘펌핑’ 용도로 악용당한 거죠. 다행히 출금 권한은 없어서 자산 유출까지는 안 갔지만, 쓸모없는 알트코인을 고점에 매수당해서 꽤 손해를 봤어요.

API 키 보안의 기본 원칙은 세 가지예요. 첫째, 출금 권한은 절대 켜지 않는다. 둘째, IP 화이트리스트를 반드시 설정한다. 셋째, 키를 코드에 직접 적지 말고 환경 변수나 별도 설정 파일로 분리하고, 그 파일은 .gitignore에 추가한다. 이 세 가지만 지켜도 대부분의 사고를 막을 수 있어요.

한 가지 더. 제3자 자동매매 서비스에 API 키를 넘기는 경우도 있는데, 이때는 해당 서비스의 보안 수준을 꼭 따져봐야 해요. “편하니까”라는 이유로 검증 안 된 서비스에 키를 등록하는 건, 현관 열쇠를 모르는 사람한테 맡기는 거나 마찬가지거든요.

파이썬으로 첫 번째 매매 봇 만들기

여기서부터가 진짜 재밌는 부분이에요. 파이썬 설치는 됐다는 전제로 진행할게요. 업비트의 경우 터미널에서 pip install pyupbit 한 줄이면 전용 라이브러리 설치 끝이에요. 바이낸스까지 같이 쓰고 싶다면 pip install ccxt를 추천합니다. ccxt는 100개가 넘는 거래소를 하나의 통일된 인터페이스로 지원하는 라이브러리거든요.

제일 먼저 해볼 건 잔고 조회예요. pyupbit 기준으로 코드 세 줄이면 됩니다. import pyupbit → upbit 객체 생성(Access Key, Secret Key 전달) → upbit.get_balance(“KRW”) 호출. 이게 정상적으로 숫자가 찍히면 API 연결은 성공한 거예요. 저는 이 숫자가 처음 터미널에 뜰 때 진짜 소름 돋았어요. “아, 코드로 내 계좌를 볼 수 있구나.”

바이낸스는 ccxt로 하면 비슷해요. ccxt.binance() 객체를 만들 때 apiKey와 secret을 넘기고, fetch_balance() 메서드를 호출하면 전체 자산 정보가 딕셔너리로 돌아옵니다. 여기까지 왔으면 주문도 비슷한 패턴이에요. create_market_buy_order(종목, 수량) 한 줄로 시장가 매수가 되거든요.

💡 꿀팁

처음 봇을 테스트할 때는 절대 큰 금액으로 하지 마세요. 저는 1만 원으로 시작했어요. 그리고 업비트의 ‘주문 생성 테스트’ API를 활용하면 실제 주문 없이 요청 형식만 검증할 수 있어요. 바이낸스도 테스트넷(testnet.binance.vision)을 제공하니까, 가상 자금으로 먼저 연습하는 게 안전합니다.

흔한 오해 하나 짚고 갈게요. “자동매매 봇이면 무조건 수익이 나는 거 아니야?”라고 생각하시는 분이 많은데, 전혀 아니에요. 봇은 사람 대신 ‘실행’을 해주는 것뿐이고, 어떤 전략을 넣느냐에 따라 결과가 완전히 달라져요. 잘못된 전략을 넣으면 사람이 매매하는 것보다 더 빠르게 돈을 잃을 수도 있습니다. 봇은 도구일 뿐이에요.

실전에서 터진 문제와 해결법

봇을 처음 실행시키고 2주 정도는 순조로웠어요. 근데 한 달쯤 지나니까 문제가 하나둘 생기기 시작하더라고요. 첫 번째 문제는 Rate Limit(요청 수 제한) 초과였어요. 업비트는 주문 API가 초당 8회인데, 제가 시세 조회와 주문을 동시에 돌렸더니 429 에러가 연달아 터진 거예요. 계속 무시하고 요청을 보내니까 결국 IP가 일시 차단까지 당했습니다.

해결은 의외로 간단했어요. 업비트 응답 헤더에 Remaining-Req 값이 들어있거든요. 이 값을 읽어서 잔여 횟수가 2 이하면 0.5초 sleep을 거는 식으로 코드를 바꿨더니 429 에러가 완전히 사라졌어요.

두 번째 문제는 더 어이없었는데, 집 공유기를 재부팅했더니 공인 IP가 바뀐 거예요. 업비트는 등록된 IP가 아니면 API 호출을 아예 거부하거든요. 새벽에 갑자기 봇이 멈추길래 원인을 찾느라 한참 걸렸어요. 이후로 AWS 같은 클라우드 서버에서 봇을 돌리는 걸로 바꿨습니다. 고정 IP가 보장되니까 이런 문제가 원천 차단돼요. 비용은 월 1~2만 원 수준이에요.

세 번째는 수수료 계산 실수. 업비트 KRW 마켓 수수료가 0.05%잖아요. 매수할 때 잔고 전액으로 주문을 넣으면 수수료만큼 금액이 부족해서 주문이 실패해요. 주문 금액에서 수수료분(0.05~0.1%)을 빼고 넣어야 한다는 걸, 저는 주문 실패 로그를 열다섯 번쯤 보고 나서야 알았어요.

💬 직접 써본 경험

3개월째 봇을 운영 중인 지금, 업비트에서는 pyupbit으로 단순 변동성 돌파 전략을, 바이낸스에서는 ccxt로 그리드 전략을 돌리고 있어요. 수익이 극적으로 크진 않지만, 새벽에 차트 안 봐도 된다는 것만으로도 삶의 질이 달라졌거든요. 가장 큰 교훈은 “봇이 돈을 벌어다주는 게 아니라, 내가 세운 전략의 실행을 봇이 도와준다”는 거였어요.

Q. 코딩을 전혀 모르는데 자동매매를 시작할 수 있나요?

파이썬 기초(변수, 조건문, 반복문)만 알면 pyupbit 같은 라이브러리로 시작할 수 있어요. 유튜브에 “pyupbit 자동매매” 검색하면 무료 강의가 꽤 많습니다. 다만 전략 개발까지 가려면 추가 학습이 필요해요.

Q. API 키가 유출되면 어떻게 해야 하나요?

즉시 거래소에 로그인해서 해당 API 키를 삭제하세요. 업비트는 Open API 관리에서, 바이낸스는 API Management에서 바로 삭제할 수 있어요. 그다음 모든 미체결 주문을 취소하고 자산 이동 내역을 확인해야 합니다.

Q. 업비트와 바이낸스 API를 동시에 쓸 수 있나요?

네, ccxt 라이브러리를 쓰면 하나의 코드에서 두 거래소를 동시에 제어할 수 있어요. 거래소별로 객체만 따로 만들면 되거든요. 차익거래(아비트라지) 봇은 이 방식을 많이 씁니다.

Q. 클라우드 서버 없이 내 PC에서만 돌려도 되나요?

가능하지만, PC가 꺼지거나 와이파이가 끊기면 봇도 멈춰요. 24시간 안정적으로 돌리려면 AWS, GCP 같은 클라우드 서버를 쓰는 게 현실적이에요. 프리 티어로 시작하면 무료 구간도 있습니다.

Q. 자동매매 봇으로 반드시 수익이 나나요?

절대 아닙니다. 봇은 전략을 자동 실행하는 도구일 뿐이에요. 전략 자체가 잘못되면 수동 매매보다 더 빠르게 손실이 날 수 있어요. 백테스팅(과거 데이터로 전략 검증)을 반드시 거치고, 소액으로 시작하세요.

본 포스팅은 개인 경험과 공개 자료를 바탕으로 작성되었으며, 전문적인 의료·법률·재무 조언을 대체하지 않습니다. 정확한 정보는 해당 분야 전문가 또는 공식 기관에 확인하시기 바랍니다. 본 글의 내용은 정보 제공 목적이며, 개인 상황에 따라 결과가 다를 수 있습니다. 암호화폐 투자는 원금 손실 위험이 있으므로, 반드시 전문가와 상담 후 결정하시기 바랍니다.

API 자동매매의 시작은 거창한 게 아니에요. 키 발급하고, 잔고 한 번 조회하고, 1만 원짜리 주문 한 번 넣어보는 것. 그게 전부입니다. 다만 보안 설정은 처음부터 빡세게 해두세요. 출금 권한 끄기, IP 화이트리스트, 키 분리 보관 — 이 세 가지가 여러분의 자산을 지켜줄 거예요. 코딩이 어려운 분이라면 업비트 + pyupbit 조합으로 시작하는 걸 추천하고, 좀 더 다양한 코인과 전략을 쓰고 싶은 분은 바이낸스 + ccxt 조합이 맞을 거예요.


여러분도 자동매매 첫걸음을 떼어보셨거나 준비 중이라면, 댓글로 경험을 나눠주세요. 궁금한 점이 있으면 편하게 물어봐 주시고요. 이 글이 도움이 됐다면 공유도 부탁드려요!