빠른 시작
xgbCrypto API는 XGBoost 모델 기반의 암호화폐 매매 시그널을 제공합니다. 간단한 REST API 호출로 20개 주요 코인의 3개 시간 주기별 실시간 시그널을 받아볼 수 있습니다.
1. 가입 후 API Key 발급
Google 계정으로 로그인한 후 대시보드에서 API Key를 생성하세요.
2. 요청 보내기
API Key를 사용하여 시그널 엔드포인트를 호출하세요:
curl -H "X-API-Key: YOUR_API_KEY" \
https://xgbcrypto.com/api/signals/latest/?symbol=BTCUSDT3. 시그널 해석
응답의 net_signal 값 범위는 -1에서 +1입니다:
- > 0.2 → 강한 매수 신호
- 0 ~ 0.2 → 매수 신호
- ≈ 0 → 중립
- -0.2 ~ 0 → 매도 신호
- < -0.2 → 강한 매도 신호
시그널 정의
xgbCrypto는 각기 다른 트레이딩 스타일에 맞춘 3가지 사전 설정된 시그널 주기를 제공합니다. 모든 시그널은 과거 캔들스틱 데이터를 기반으로 트리플 배리어 방법(Triple Barrier Method)을 사용하여 훈련된 XGBoost 모델이 생성합니다 — 모델은 주어진 시간 창 내에서 가격이 이익 실현과 손절 중 어느 쪽에 먼저 도달할 가능성이 높은지를 예측합니다.
각 시그널은 -1에서 +1 사이의 net_signal 값을 출력합니다. 이는 P(수익) - P(손실)로 계산되며, 모델은 트리플 배리어 라벨링 방식을 사용합니다: 가격이 이익 실현 목표에 먼저 도달 → 수익; 손절 라인에 먼저 도달 → 손실; 전망 기간 내 어느 쪽에도 도달하지 않음 → 중립.
단기 시그널 (고빈도)
| 데이터 소스 | Binance 1분 캔들스틱 데이터 |
| 업데이트 주기 | 매 1분 |
| 회고 기간 | 60개 캔들 (1시간 가격 이력) |
| 예측 기간 | 향후 30분 — 가격이 ±0.5% 변동할 것인가? |
| 이익 실현 / 손절 | ±0.5% (이익 실현 및 손절) |
| 적합 대상 | 스캘퍼 및 데이 트레이더. 분 단위 모멘텀 변화를 포착합니다. 일반적 보유 기간: 수분~수시간. |
중기 시그널 (스윙)
| 데이터 소스 | Binance 1시간 캔들스틱 데이터 |
| 업데이트 주기 | 매 1시간 |
| 회고 기간 | 24개 캔들 (1일 가격 이력) |
| 예측 기간 | 향후 12시간 — 가격이 ±1% 변동할 것인가? |
| 이익 실현 / 손절 | ±1% (이익 실현 및 손절) |
| 적합 대상 | 스윙 트레이더. 시간 단위 추세 변화에 초점을 맞춥니다. 일반적 보유 기간: 수시간~수일. |
장기 시그널 (추세)
| 데이터 소스 | Binance 6시간 캔들스틱 데이터 |
| 업데이트 주기 | 매 6시간 |
| 회고 기간 | 28개 캔들 (7일 가격 이력) |
| 예측 기간 | 향후 2일 — 가격이 ±2% 변동할 것인가? |
| 이익 실현 / 손절 | ±2% (이익 실현 및 손절) |
| 적합 대상 | 추세 추종자 및 포지션 트레이더. 중장기 시장 방향을 포착합니다. 일반적 보유 기간: 수일~수주. |
net_signal 이해하기
net_signal 값은 모든 시그널의 핵심 출력입니다. P(수익) - P(손실)과 같으며 -1에서 +1 범위입니다. 양수는 모델이 가격이 손절보다 이익 실현 목표에 먼저 도달할 가능성이 높다고 판단함을 의미하며, 그 반대도 마찬가지입니다.
net_signal = P(profit) - P(loss)- > 0.2 → 강한 매수 신호
- 0 ~ 0.2 → 매수 신호
- ≈ 0 → 중립
- -0.2 ~ 0 → 매도 신호
- < -0.2 → 강한 매도 신호
타임스탬프 및 시간대
모든 시그널 타임스탬프는 Binance, CoinGecko 등 주요 플랫폼이 사용하는 업계 표준에 따라 UTC입니다. 프론트엔드 애플리케이션에서 표준 JavaScript Date 메서드를 사용하여 UTC를 사용자의 로컬 시간대로 변환할 수 있습니다.
엔터프라이즈 플랜 사용자는 맞춤 시그널 구성을 요청할 수 있습니다 — 맞춤 주기, 배리어 임계값, 회고 기간 등 트레이딩 전략에 맞게 조정 가능합니다. 자세한 내용은 문의해 주세요.
인증 방식
모든 시그널 엔드포인트는 API Key 인증이 필요합니다. 요청 헤더에 다음을 추가하세요:
X-API-Key: your_api_key최신 시그널 조회
/api/signals/latest/지정된 코인의 3개 주기별 최신 시그널을 반환합니다.
파라미터
symbol (선택) — 코인명, 예: BTCUSDT. 미입력 시 전체 반환.
import requests
resp = requests.get(
"https://xgbcrypto.com/api/signals/latest/",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"symbol": "BTCUSDT"}
)
data = resp.json()
print(data)const resp = await fetch(
"https://xgbcrypto.com/api/signals/latest/?symbol=BTCUSDT",
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log(data);응답 예시
{
"data": [
{
"symbol": "BTCUSDT",
"signals": {
"long": {
"time": "2025-02-17T12:00:00",
"prob_win": 0.53,
"prob_loss": 0.47,
"net_signal": 0.06
},
"mid": { ... },
"short": { ... }
}
}
]
}과거 시그널 조회
/api/signals/history/지정된 코인과 주기의 과거 시그널 데이터를 반환합니다.
파라미터
- symbol (필수) — 코인명
- freq (선택) — 주기: 1m / 1h / 6h, 기본값 1h
- limit (선택) — 반환 건수, 기본값 50, 최대 500
resp = requests.get(
"https://xgbcrypto.com/api/signals/history/",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"symbol": "ETHUSDT", "freq": "mid", "limit": 50}
)
print(resp.json())전략 예시
다음은 시그널에 따라 자동으로 매매를 실행하는 간단한 Python 전략 예시입니다:
import requests
import numpy as np
API_KEY = "YOUR_API_KEY"
SYMBOL = "BTCUSDT"
BASE_URL = "https://xgbcrypto.com"
# 1. 获取 xgbCrypto 信号
signal_resp = requests.get(
f"{'{'}BASE_URL{'}'}/api/signals/latest/",
headers={"X-API-Key": API_KEY},
params={"symbol": SYMBOL}
)
signal_data = signal_resp.json()["data"][0]["signals"]["mid"]
net_signal = signal_data["net_signal"]
prob_win = signal_data["prob_win"]
# 2. 获取 Binance K 线(最近 30 根 1h K 线)
klines = requests.get(
f"https://api.binance.com/api/v3/klines",
params={"symbol": SYMBOL, "interval": "1h", "limit": 30}
).json()
closes = np.array([float(k[4]) for k in klines])
current_price = closes[-1]
# 3. 计算 EMA-20
ema_20 = closes[-20:].mean() # 简化 SMA 近似
# 4. 计算布林带
bb_mid = closes[-20:].mean()
bb_std = closes[-20:].std()
bb_upper = bb_mid + 2 * bb_std
bb_lower = bb_mid - 2 * bb_std
# 5. 综合决策
score = 0
reasons = []
if net_signal > 0.05:
score += 1
reasons.append(f"信号看涨 (net={'{'}net_signal:.3f{'}'})")
elif net_signal < -0.05:
score -= 1
reasons.append(f"信号看跌 (net={'{'}net_signal:.3f{'}'})")
if current_price > ema_20:
score += 1
reasons.append("价格在 EMA20 上方")
else:
score -= 1
reasons.append("价格在 EMA20 下方")
if current_price <= bb_lower:
score += 1
reasons.append("触及布林带下轨(超卖)")
elif current_price >= bb_upper:
score -= 1
reasons.append("触及布林带上轨(超买)")
# 输出
if score >= 2:
decision = "BUY"
elif score <= -2:
decision = "SELL"
else:
decision = "HOLD"
print(f"币种: {'{'}SYMBOL{'}'}")
print(f"当前价格: {current_price:,.2f{'}'}")
print(f"决策: {'{'}decision{'}'} (综合得分: {'{'}score{'}'})")
print(f"依据: {'{'}'; '.join(reasons){'}'}")오류 코드
| Code | Description |
|---|---|
401 | 미인증 — API Key가 없거나 유효하지 않음 |
403 | 접근 거부 — API Key가 만료되었거나 비활성화됨 |
429 | 요청 과다 — 속도 제한 초과 |
500 | 서버 오류 — 잠시 후 다시 시도해 주세요 |
요금제 및 제한
| 요금제 | 주기 | 코인 | 속도 제한 |
|---|---|---|---|
| 무료 | 6h / 1h | BTCUSDT만 | 1/시간 |
| 베이직 | 6h / 1h / 1m | 전체 20개 | 1,000/시간 |
| 프로 | 6h / 1h / 1m | 전체 20개 | 3,000/시간 |
| 프리미엄 | 6h / 1h / 1m | 전체 20개 | 20,000/시간 |
| 엔터프라이즈 | 전체 | 전체 + 맞춤 | 무제한 |
온라인 테스트
API Key를 입력하여 시그널 엔드포인트를 바로 테스트해 보세요.
GET /api/signals/latest/?symbol=BTCUSDT