추적 매수/매도 기법(Trailing buy/sell strategy)을 이용한 자동화된 바이낸스 자동매매 프로그램
이 프로젝트는 제 코드를 테스트 하기 위한 단순한 테스트 프로젝트 입니다.
최신 업데이트 정보는 README.md에 서 확인 가능합니다. 이 페이지는 한국어로 프로그램에 대한 설명만 적혀있습니다.
이 프로그램을 이용하여 돈을 벌 수 있을지 없을지는 절대 보장하지 않습니다.
리스크를 감당하실 수 있을 경우에만 사용하세요! 이 코드를 이용하여 직/간접적으로 생긴 손실이나 경제적인 어려움이 생길 경우 절대 책임지지 않습니다.
프로그램을 업데이트하기 전에, 구매 가격을 꼭 적어두시기 바랍니다. 환경설정이나 구매 가격 정보가 손실될 수 있습니다.
이 프로그램은 가격의 하락/상승 추세를 따라가며 추적 매수/추적 매도를 하는 기법을 기반으로 작성되었습니다.
이 프로그램은 그리드 트레이딩 환경설정에 따라 코인을 모니터링합니다.
그리드 트레이딩 #1은 가장 현재 가격이 낮은 가격에 도달했을 경우에, 매수를 위한 STOP-LOSS-LIMIT 주문을 넣습니다. 현재 가격이 계속 떨어질 경우, 이전 주문을 취소하고, 새로운 가격으로 STOP-LOSS-LIMIT 주문을 넣습니다.
그리드 트리이딩 #1 이후로는, 이전 매수 가격에 따라 코인을 모니터링합니다.
예를 들어, 그리드 트레이딩 매수 환경설정이 다음과 같이 되었다고 가정해봅시다:
이해를 쉽게 할수 있도록, USDT를 $로 표시하도록 하겠습니다. 또한, 쉽게 계산할 수 있도록 커미션은 계산에 넣지 않았습니다. 실제 거래에서는 수량이 다를 수 있습니다.
첫번째 그리드 트레이드의 설정은 다음과 같습니다:
현재 가격이 최저 가격($100)까지 떨어지고, 전고점(All-Time High) 제한 가격보다 낮을 경우, 프로그램은 새로운 STOP-LOSS-LIMIT 매수 주문을 넣습니다.
마켓이 다음과 같이 변동되었다고 가정해봅시다:
그러면 프로그램은 가격 하락을 따라가면서, 새로운 STOP-LOSS-LIMIT 매수 주문을 다음과 같이 넣습니다:
마켓이 다음과 같이 변동되었다고 가정해봅시다:
이때, 첫번째 매수가 체결됩니다. 이때, 매수 가격 (Last buy price)를 $99.845로 기록합니다. 매수 수량은 0.5 입니다.
매수가 체결되면, 프로그램은 매도를 위해 모니터링을 함과 동시에, 다음 매수 그리드 트레이딩를 모니터링합니다.
두번째 그리드 트레이딩의 설정은 다음과 같습니다:
만약 현재 가격이 20% 낮은 $79.876까지 떨어지면, 프로그램은 두번째 그리드 트레이딩을 위한 STOP-LOSS-LIMIT 매수 주문을 넣습니다.
마켓이 다음과 같이 변동되었다고 가정해봅시다:
이때 프로그램은 가격 하락을 따라가면서, 새로운 STOP-LOSS-LIMIT 매수 주문을 다음과 같이 넣습니다.
마켓이 다음과 같이 변동되었다고 가정해봅시다:
이때, 두번째 매수가 체결됩니다. 매수 가격 (Last buy price)는 자동으로 아래와 같이 계산 됩니다:
상세한 매수 환경설정에 대한 설명은 아래에서 보실 수 있습니다.
https://github.com/chrisleekr/binance-trading-bot/wiki/Buy-Scenario
만약 매도를 위한 충분한 코인이 있고 매수 가격(Last buy price)가 저장되었을 경우, 프로그램은 첫번째 그리드 트레이딩을 위한 매도 신호를 모니터링하기 시작합니다. 현재 가격이 매도 시작 가격에 도달한다면, 프로그램은 매도 STOP-LOSS-LIMIT 주문을 넣습니다. 만약 현재 가격이 계속 상승한다면, 프로그램은 이전 주문을 취소하고, 새 가격으로 매도 STOP-LOSS-LIMIT 주문을 넣습니다.
예를 들어, 그리드 트레이딩 매도 환경설정이 다음과 같이 되었다고 가정해봅시다:
매수와 다르게, 매도는 수량 퍼센트를 설정합니다. 만약 보유한 모든 수량을 매도할려면, 간단하게 1 (100%)로 설정하시면 됩니다.
위에서 매수한 코인은 다음과 같습니다:
첫번째 그리드 트레이드의 설정은 다음과 같습니다:
마켓이 다음과 같이 변동되었다고 가정해봅시다:
현재 가격이 매도 시작 가격 ($87.99) 보다 높기 때문에, 새로운 STOP-LOSS-LIMIT 매도 주문을 다음과 같이 넣습니다:
마켓이 다음과 같이 변동되었다고 가정해봅시다:
그러면 프로그램은 가격 상승을 따라가면서, 새로운 STOP-LOSS-LIMIT 주문을 다음과 같이 넣습니다:
마켓이 다음과 같이 변동되었다고 가정해봅시다:
이때, 첫번째 매도 주문이 체결됩니다. 그러면 프로그램은 두번째 그리드 트레이딩 매도 시작 가격($83.80 * 1.08 = $90.504)을 기다립니다.
마켓이 다음과 같이 변동되었다고 가정해봅시다:
현재 가격 ($91)은 두번째 매도 시작 가격 ($90.504)보다 높기 때문에, 프로그램은 새로운 STOP-LOSS-LIMIT 주문을 다음과 같이 넣습니다:
마켓이 다음과 같이 변동되었다고 가정해봅시다:
그러면 프로그램은 가격 상승을 따라가면서, 새로운 STOP-LOSS-LIMIT 주문을 다음과 같이 넣습니다:
마켓이 다음과 같이 변동되었다고 가정해봅시다:
이때 두번째 매도 주문이 체결됩니다.
최종 수익은 다음과 같습니다.
상세한 매도 환경설정에 대한 설명은 아래에서 보실 수 있습니다.
https://github.com/chrisleekr/binance-trading-bot/wiki/Sell-Scenario
프론트엔드는 React.js 기반으로 개발 되었으며 웹소켓을 통해 통신합니다:
환경 변수를 이용해 환경 설정을 변경 가능합니다.
/config/custom-environment-variables.json 코드를 확인하시면 설정 가능한 환경변수 목록을 볼 수 있습니다.
아니면 프로그램 실행 후, 프론트엔드에서 설정을 변경 가능합니다.
.env.dist 파일을 .env 파일로 복사합니다| 환경 변수명 | 설명 | 예시 |
|---|---|---|
| BINANCE_LIVE_API_KEY | 실서버 Binance API key | (from Binance) |
| BINANCE_LIVE_SECRET_KEY | 실서버 Binance API secret | (from Binance) |
| BINANCE_TEST_API_KEY | 테스트서버 Binance API key | (from Binance Spot Test Network) |
| BINANCE_TEST_SECRET_KEY | 테스트서버 Binance API secret | (from Binance Spot Test Network) |
| BINANCE_SLACK_ENABLED | 슬랙(Slack) 활성화/비활성화 | true |
| BINANCE_SLACK_WEBHOOK_URL | 슬랙(Slack) 웹훅(webhook) URL | (from Slack) |
| BINANCE_SLACK_CHANNEL | 슬랙(Slack) 채널(channel)명 | "#binance" |
| BINANCE_SLACK_USERNAME | 슬랙(Slack) username | Chris |
| BINANCE_LOCAL_TUNNEL_ENABLED | 로컬터널(local tunnel) 활성화/비활성화 | true |
| BINANCE_LOCAL_TUNNEL_SUBDOMAIN | 외부 링크를 위한 로컬터널(local tunnel) 서브도메인 | binance |
| BINANCE_AUTHENTICATION_ENABLED | 프론트엔드 인증 활성화/비활성화 | true |
| BINANCE_AUTHENTICATION_PASSWORD | 프론트엔드 인증 암호 | 123456 |
로컬 터널은 봇을 외부에서 접근이 가능하도록 설정합니다. 로컬 터널의 하위도메인은 자신만 기억할 수 있는 서브도메인으로 설정하시기 바랍니다. 프론트엔드 인증 암호를 꼭 변경하시기 바랍니다. 변경하지 않으면 기본 암호를 사용하게 됩니다.
먼저 최신 코드를 Pull합니다:
bash
git pull
실서버 모드를 사용하실려면, DockerHub에서 최근에 빌드된 이미지를 사용하실 수 있습니다:
bash
docker-compose -f docker-compose.server.yml pull
docker-compose -f docker-compose.server.yml up -d
테스트 모드를 사용하실려면, 아래 명령어를 실행하시면 됩니다:
bash
docker-compose up -d
브라우저를 열어 http://0.0.0.0:8080에 접근하시면 프론트엔드에 접근하실 수 있습니다.
프로그램 실행시, 외부 URL은 슬랙(Slack)에 공지 됩니다.
| Password Protected | Frontend Mobile |
|---|---|
![]() |
![]() |
| Setting | Manual Trade |
|---|---|
![]() |
![]() |
| Frontend Desktop | Closed Trades |
|---|---|
![]() |
![]() |
| 차트 | 매수 주문 | 매도 주문 |
|---|---|---|
![]() |
![]() |
![Sell Orders](https://user |
$ claude mcp add binance-trading-bot \
-- python -m otcore.mcp_server <graph>