개요
이 가이드는 tradesettings.yaml의 일반 설정에서 레버리지 구성 옵션을 사용하여 거래소의 모든 거래 심볼에 대한 레버리지를 관리하는 방법을 설명합니다.
1. SetLeverageStartup
SetLeverageStartup: false
목적: 봇이 시작될 때 정의된 레버리지를 모든 거래 심볼에 적용합니다.
활성화 시점 (true)
- ✅ 최초 설정: 모든 심볼에 대해 레버리지를 처음 설정해야 할 때
- ✅ 레버리지 설정 변경 후: 원하는 레버리지를 수정했을 때
- ✅ 새로운 심볼 추가 후: 거래소에 새로운 거래 쌍이 추가되었을 때
비활성화 시점 (false)
- ✅ 레버리지 업데이트 성공 후: 불필요한 API 호출을 피하기 위해
- ✅ 정상 운영: 매번 재시작 시 레버리지를 재설정하는 것을 방지하기 위해
- ✅ 레버리지가 이미 구성된 경우: 모든 심볼이 올바른 레버리지를 가지고 있을 때
⚠️ 중요 참고사항
-
레버리지가 성공적으로 업데이트된 후 항상
false로 설정하여 다음을 방지하세요:- 매 초기화 시 불필요한 API 호출
- 거래소의 잠재적 속도 제한
- 느린 시작 시간
# 1단계: 레버리지 업데이트를 위해 활성화
SetLeverageStartup: true
# 2단계: 봇 시작 (레버리지가 적용됨)
# 3단계: 봇 중지
# 4단계: 다음 시작 전 비활성화
SetLeverageStartup: false
워크플로 예시
1. 설정에서 원하는 레버리지 설정 (예: 10x)
2. SetLeverageStartup: true 활성화
3. 봇 시작 → 모든 심볼에 레버리지 적용
4. 봇 중지
5. SetLeverageStartup: false 비활성화
6. 정상 거래를 위해 봇 재시작
2. SetMaxLeverage
SetMaxLeverage: false
목적: 구성된 레버리지 값 대신 각 심볼에 대해 거래소에서 허용하는 최대 레버리지를 자동으로 사용합니다.
작동 방식
false일 때 (기본값):
- 모든 심볼에 대해 구성된 레버리지 값을 사용
- 지원되지 않을 경우 API 호출이 실패할 수 있음
true일 때:
- 각 심볼에 대해 지원되는 최대 레버리지를 가져옴
- 구성된 값과 거래소 최대값 중 더 낮은 값을 사용
예시 시나리오
# 시나리오 1: 심볼이 당신의 레버리지를 지원
당신의 설정: 20x
심볼 최대: 50x
결과: 20x
# 시나리오 2: 심볼의 최대 레버리지가 더 낮음
당신의 설정: 20x
심볼 최대: 5x
결과: 5x
봇 출력: "ℹ️ XYZUSDT 최대 레버리지는 5x, 20x 대신 5x 사용"
# 시나리오 3: 심볼의 최대 레버리지가 더 높음
당신의 설정: 10x
심볼 최대: 125x
결과: 10x
활성화 시점 (true)
- ✅ 레버리지 관련 오류를 피하기 위한 안전한 접근
- ✅ 다양한 레버리지 제한이 있는 혼합 심볼 유형
- ✅ 제한에 자동 조정하는 보수적인 거래
- ✅ 서로 다른 규칙을 가진 다중 거래소 봇
비활성화 시점 (false)
- ✅ 모든 심볼에서 균일한 레버리지 지원
- ✅ 전략이 정확한 레버리지 값을 요구할 때
- ✅ 성능 최적화 (API 호출 감소)
symbols.json과의 통합
레버리지 업데이트 흐름
1. 봇이 tradesettings.yaml에서 레버리지를 읽음
2. SetMaxLeverage: true일 경우 → 최대 레버리지를 가져옴
3. 최종 레버리지를 계산 (구성된 값과 최대값 중 최소값)
4. 거래소 API를 통해 레버리지 적용
5. ✅ 실제 적용된 레버리지로 symbols.json 업데이트
6. 봇은 거래를 위해 symbols.json의 레버리지를 사용
symbols.json 업데이트가 중요한 이유
- 거래소와의 일관성을 보장
- 재시작 간 지속
- 실제로 사용된 레버리지의 가시적 추적
⚠️ 중요: 동기화 타이밍
# ❌ 잘못된 방식
SetLeverageStartup: true
SetMaxLeverage: true
# ✅ 올바른 방식 (일회성 업데이트)
SetLeverageStartup: true
SetMaxLeverage: true
# 성공 후:
SetLeverageStartup: false
SetMaxLeverage: false
권장 구성 워크플로
초기 설정 (신규 봇)
# tradesettings.yaml
Leverage: 10
SetLeverageStartup: true
SetMaxLeverage: true
- 위 설정 구성
- 봇 시작 → 레버리지 적용 및 symbols.json 업데이트
- 봇 중지
- 두 설정 모두 비활성화
- 정상 운영을 위해 재시작
레버리지 값 변경
# tradesettings.yaml
Leverage: 15
SetLeverageStartup: true
SetMaxLeverage: true
- 레버리지 값 업데이트
SetLeverageStartup활성화- 봇 시작 → 새로운 레버리지 적용
- 봇 중지
- 다음 시작 전 다시 비활성화
정상 운영 (권장)
# tradesettings.yaml
Leverage: 10
SetLeverageStartup: false
SetMaxLeverage: false
봇은 이미 구성되고 업데이트된 symbols.json에서 레버리지를 읽습니다.
새로운 심볼 추가
# tradesettings.yaml
Leverage: 10
SetLeverageStartup: true
SetMaxLeverage: true
- 거래소에 새로운 심볼 추가
SetLeverageStartup활성화- 봇 시작 → 모든 심볼에 레버리지 적용
- 봇 중지
- 정상 거래 전 비활성화
문제 해결
- 문제: 봇이 레버리지를 계속 재설정
원인:SetLeverageStartup: true가 활성화된 상태로 유지됨
해결책: 초기 설정 후false로 설정 - 문제: 레버리지가 적용되지 않음
원인: 업데이트 중SetLeverageStartup: false
해결책: 일시적으로 활성화하고 재시작 - 문제: 레버리지 제한에 대한 API 오류
원인: 구성된 레버리지가 거래소 최대값을 초과
해결책:SetMaxLeverage: true활성화 - 문제:
symbols.json불일치
원인: 수동 변경 또는 동기화 문제
해결책:SetLeverageStartup: true를 한 번 활성화하여 재동기화
모범 사례
✅ 해야 할 것
- 업데이트 성공 후
SetLeverageStartup: false설정 - 최초 설정 시
SetMaxLeverage: true사용 symbols.json에서 레버리지 값 확인- 변경 전 백업 유지
- 모든 심볼에 적용하기 전에 한 심볼에서 테스트
❌ 하지 말아야 할 것
- 정상 운영 중
SetLeverageStartup: true유지 SetLeverageStartup활성화 없이 레버리지 변경symbols.json을 수동으로 편집- 두 설정을 반복적으로 활성화 (API 부담 초래)
빠른 참조 표
| 시나리오 | SetLeverageStartup | SetMaxLeverage | 사용 시점 |
|---|---|---|---|
| 초기 설정 | true |
true |
봇을 처음 실행할 때 |
| 정상 거래 | false |
false |
일상적인 운영 |
| 레버리지 변경 | true |
true |
레버리지 값 수정 후 |
| 새로운 심볼 추가 | true |
true |
거래소에 새로운 쌍 추가 |
| 보수적 모드 | false |
true |
거래소 제한에 자동 조정 |
| 성능 모드 | false |
false |
API 호출 최소화 |
지원
- 봇 로그에서 오류 확인
- 거래소 API 권한이 레버리지 수정 권한을 포함하는지 확인
- 모든 심볼이 거래소에 존재하는지 확인
symbols.json에서 올바른 레버리지 확인- 거래소별 레버리지 제한 검토