HYDRA Engine은 로컬 우선(Local-first) 철학으로 설계된 자동매매 엔진입니다. 데이터 수집 → 지표 계산 → 레짐 분류 → 시그널 생성 → 백테스트 → 실거래까지 하나의 저장소에서 관리합니다.
이 프로젝트는 교육·연구·실험용입니다. 실거래 수익을 보장하지 않으며, 사용에 따른 모든 책임은 사용자 본인에게 있습니다. 반드시 DISCLAIMER.md를 먼저 읽으세요.
- 포함된 기능
- 사용 철학 — 어떻게 접근할 것인가
- 준비물 설치
- 처음 시작하기 (5단계)
- 테스트 실행
- Docker로 전체 파이프라인 실행
- API 사용법
- CLI 사용법
- Docker 프로필 선택
- 자주 발생하는 문제 (FAQ)
- 문서
- 라이선스
| 모듈 | 설명 |
|---|---|
| FastAPI 서버 | REST API로 모든 기능 제어 |
| OHLCV 수집기 | 거래소에서 캔들 데이터 수집, SQLite/TimescaleDB 저장 |
| 지표 계산 엔진 | RSI, MACD, Bollinger Band 등 자동 계산 |
| 레짐 분류 엔진 | 시장 상태(추세/횡보/변동성) 분류 |
| 전략 시그널 엔진 | 매수/매도 시그널 생성 |
| 보조 데이터 수집 | 오더북, 이벤트 일정, 감성 점수 |
| 인메모리 백테스트 | 수집된 데이터로 전략 성과 검증 |
| Kill Switch | 긴급 전 포지션 청산 |
| 주문 큐 | 안전한 주문 처리 파이프라인 |
| 리스크 엔진 | 포지션 및 리스크 관리 |
| CLI 도구 | 터미널에서 모든 기능 제어 |
| Telegram 알림 | 주요 이벤트 실시간 알림 |
HYDRA는 한 번에 모든 기능을 켜는 프로젝트가 아닙니다.
1단계: 테스트 실행으로 코드 정상 확인
2단계: 데이터 수집 (거래소 API 키 없어도 공개 데이터 가능)
3단계: 지표·레짐·시그널 계산 확인
4단계: API/CLI로 상태 관찰
5단계: 백테스트로 전략 검증
6단계: (충분한 검증 후) 실거래 연결
처음 사용하는 분은 1~4단계부터 시작하는 것을 강력히 권장합니다.
| 소프트웨어 | 버전 | 설치 링크 |
|---|---|---|
| Python | 3.11 이상 | https://www.python.org/downloads/ |
| Git | 최신 | https://git-scm.com/ |
| Docker Desktop | 최신 | https://www.docker.com/products/docker-desktop |
Docker Desktop을 설치하면 Docker와 Docker Compose가 함께 설치됩니다.
터미널(명령 프롬프트 / PowerShell / Terminal)에서 아래 명령을 실행해 버전을 확인합니다.
python --version # Python 3.11.x 이상이어야 함
git --version
docker --version
docker compose versiongit clone https://github.com/sinmb79/Hydra-Engine.git
cd Hydra-Engine가상환경은 이 프로젝트 전용 Python 환경을 만들어 다른 프로젝트와 충돌하지 않게 합니다.
python -m venv .venvWindows (PowerShell):
.venv\Scripts\Activate.ps1PowerShell에서 실행 오류가 발생하면 먼저 아래 명령을 실행하세요:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
macOS / Linux:
source .venv/bin/activate활성화되면 터미널 앞에 (.venv)가 표시됩니다.
pip install -e .[dev]처음 설치 시 수분이 걸릴 수 있습니다.
.env.example 파일을 복사해 .env를 만듭니다.
macOS / Linux:
cp .env.example .envWindows (PowerShell):
Copy-Item .env.example .env생성된 .env 파일을 텍스트 에디터로 열어 아래 항목을 수정합니다.
# 반드시 변경하세요 — 이 값이 API 접근 비밀번호입니다
HYDRA_API_KEY=여기에-랜덤-문자열-입력
# 프로필: lite(입문) / pro(중급) / expert(고급)
HYDRA_PROFILE=lite
# Redis 주소 (Docker 사용 시 기본값 유지)
REDIS_URL=redis://localhost:6379HYDRA_API_KEY는 API 호출 시 인증에 사용됩니다. 아무 문자열이나 사용할 수 있습니다. 예:
my-hydra-secret-2024
pytest -q모든 테스트가 통과하면 준비 완료입니다.
# 전체 테스트
pytest -q
# 특정 파일만
pytest tests/test_backtest_runner.py -v
# 상세 출력
pytest -vDocker Desktop이 실행 중인지 확인한 후 아래 명령을 실행합니다.
docker compose -f docker-compose.lite.yml up --build첫 실행 시 이미지 빌드로 수분이 걸립니다.
새 터미널을 열고 헬스체크를 합니다.
curl http://127.0.0.1:8000/health아래와 같은 응답이 오면 정상입니다.
{"status": "ok"}# Ctrl+C 로 중지 후
docker compose -f docker-compose.lite.yml down모든 API 호출은 /health를 제외하고 X-HYDRA-KEY 헤더를 포함해야 합니다.
curl -H "X-HYDRA-KEY: 여기에-API-키" http://127.0.0.1:8000/엔드포인트curl http://127.0.0.1:8000/healthcurl -H "X-HYDRA-KEY: my-hydra-secret-2024" \
http://127.0.0.1:8000/marketscurl -H "X-HYDRA-KEY: my-hydra-secret-2024" \
http://127.0.0.1:8000/data/symbolscurl -G http://127.0.0.1:8000/data/candles \
-H "X-HYDRA-KEY: my-hydra-secret-2024" \
--data-urlencode "market=binance" \
--data-urlencode "symbol=BTC/USDT" \
--data-urlencode "timeframe=1h" \
--data-urlencode "limit=100"curl -X POST http://127.0.0.1:8000/backtest/run \
-H "Content-Type: application/json" \
-H "X-HYDRA-KEY: my-hydra-secret-2024" \
-d '{
"market": "binance",
"symbol": "BTC/USDT",
"timeframe": "1h",
"since": 1704067200000,
"until": 1706745600000,
"initial_capital": 10000,
"trade_amount_usd": 100,
"commission_pct": 0.001
}'
since와until은 Unix timestamp (밀리초) 입니다. 위 예시는 2024년 1월 1일 ~ 2024년 2월 1일 구간입니다.
curl -H "X-HYDRA-KEY: my-hydra-secret-2024" http://127.0.0.1:8000/positions
curl -H "X-HYDRA-KEY: my-hydra-secret-2024" http://127.0.0.1:8000/pnlcurl -X POST "http://127.0.0.1:8000/killswitch?reason=manual_test" \
-H "X-HYDRA-KEY: my-hydra-secret-2024"Kill Switch는 실거래 중 긴급 상황에서만 사용하세요.
전체 API 목록은 docs/API_REFERENCE_KO.md를 참고하세요.
# 도움말
python -m hydra.cli.app --help
# 초기 설정 마법사
python -m hydra.cli.app setup
# 현재 상태 확인
python -m hydra.cli.app status
# 시장 목록 확인
python -m hydra.cli.app market list-markets
# 시장 활성화 (paper = 모의거래)
python -m hydra.cli.app market enable binance --mode paper
# Kill Switch (긴급 청산)
python -m hydra.cli.app kill
trade,strategy,module명령 일부는 현재 개발 예정 상태입니다.
| 프로필 | 파일 | 데이터베이스 | 권장 대상 |
|---|---|---|---|
| lite | docker-compose.lite.yml |
SQLite | 처음 시작하는 분, 개인 PC |
| pro | docker-compose.pro.yml |
TimescaleDB + Redis | 중간 규모 수집·분석 |
| expert | docker-compose.expert.yml |
고사양 확장 구성 | 대용량 데이터, 고성능 서버 |
처음 사용자는 lite부터 시작하세요.
# lite
docker compose -f docker-compose.lite.yml up --build
# pro (DB_PASSWORD 설정 필요)
docker compose -f docker-compose.pro.yml up --build
# expert
docker compose -f docker-compose.expert.yml up --build가상환경이 활성화되어 있는지 확인하세요.
# 가상환경 활성화 확인
# 터미널 앞에 (.venv)가 보여야 함
# 다시 설치
pip install -e .[dev]Docker Desktop이 실행 중인지 확인하세요. 그 다음 .env 파일의 REDIS_URL을 확인합니다.
Docker Compose 환경에서는 Redis가 컨테이너로 자동 실행되므로 기본값을 유지하세요.
REDIS_URL=redis://redis:6379 # Docker Compose 내부
REDIS_URL=redis://localhost:6379 # 로컬 직접 실행X-HYDRA-KEY 헤더가 .env의 HYDRA_API_KEY와 일치하는지 확인하세요.
curl -H "X-HYDRA-KEY: 설정한-키-값" http://127.0.0.1:8000/markets로컬 테스트 목적이면 무시할 수 있지만, 외부에 서버를 노출할 경우 반드시 변경하세요.
.env 파일에서 HYDRA_API_KEY=change-me를 다른 값으로 바꾸면 경고가 사라집니다.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser처음 빌드는 수분이 걸립니다. 두 번째 실행부터는 캐시를 사용해 빠릅니다.
빌드 없이 실행하려면 --build 옵션을 제거하세요.
docker compose -f docker-compose.lite.yml up| 문서 | 설명 |
|---|---|
| docs/QUICKSTART_KO.md | 10분 빠른 시작 가이드 |
| docs/API_REFERENCE_KO.md | 전체 API 엔드포인트 레퍼런스 |
| DISCLAIMER.md | 법적 고지 및 책임 한계 |
.env파일과 API 키는 절대 Git에 올리지 마세요. (.gitignore에 이미 포함되어 있습니다)- 실거래 전에는 반드시 paper 모드와 백테스트로 전략을 충분히 검증하세요.
- 기본적으로 로컬/사설 네트워크에서만 운용하는 것을 권장합니다.
- 거래소 API 키는 필요한 최소 권한만 부여하세요.