Skip to content

完整的量化交易解决方案,涵盖策略开发、回测、模拟、实盘全流程

License

Notifications You must be signed in to change notification settings

Aixtrade/QuantTrader

Repository files navigation

QuantTrader

Python 3.11+ License: MIT

中文文档

A quantitative trading engine toolkit for strategy development, backtesting, paper trading, and live trading.


Features

  • Strategy Framework: Modular strategy system with hot-reload support
  • Multi-Exchange Support: 100+ exchanges via CCXT
  • Technical Indicators: 60+ indicators powered by talipp
  • Futures Trading: Perpetual futures with hedge mode
  • Event Contracts: Binary options style trading
  • Risk Management: Multi-level risk control (WARNING/CRITICAL)
  • Smart Caching: LRU + TTL caching with circuit breaker

Installation

Requirements

  • Python >= 3.11
  • uv (recommended) or pip

Install

# Clone the repository
git clone https://github.com/yourusername/QuantTrader.git
cd QuantTrader

# Install dependencies with uv
uv sync --dev

# Or with pip
pip install -e ".[dev]"

Quick Start

1. Create a Strategy

from quanttrader.strategies.base import (
    BaseStrategy,
    StrategyContext,
    StrategyResult,
)

class MyStrategy(BaseStrategy):
    def __init__(self):
        super().__init__(name="my_strategy", version="1.0.0")

    def execute(self, context: StrategyContext) -> StrategyResult:
        close_prices = context.market_data.get("close", [])
        if not close_prices:
            return StrategyResult(
                signals=[self.create_signal("HOLD", context.symbol)],
                indicators={},
                metadata={},
                execution_time=0.0,
                success=True,
            )

        # Your trading logic here
        signal = self.create_signal("LONG", context.symbol, confidence=0.8)
        return StrategyResult(
            signals=[signal],
            indicators={},
            metadata={},
            execution_time=0.0,
            success=True,
        )

2. Run Backtest

import asyncio
from datetime import datetime, timedelta, timezone
from quanttrader.engine.backtest import BacktestConfig, BacktestEngine

async def main():
    strategy = MyStrategy()
    engine = BacktestEngine()

    now = datetime.now(timezone.utc)
    config = BacktestConfig(
        symbol="BTC/USDT",
        interval="1h",
        initial_capital=10000.0,
        start_time=int((now - timedelta(days=7)).timestamp() * 1000),
        end_time=int(now.timestamp() * 1000),
    )

    async for event in engine.run(strategy, config):
        if event.event_type == "trade":
            print(f"Trade: {event.data}")
        elif event.event_type == "complete":
            print(f"Final balance: {event.data.get('final_balance')}")

asyncio.run(main())

Signal Conventions

Contract Type Signals
Perpetual/Futures LONG, SHORT, CLOSE_LONG, CLOSE_SHORT, CLOSE
Event Contracts UP, DOWN, HOLD

Event trader also accepts LONG/SHORT/BUY/SELL and auto-maps to UP/DOWN.


Architecture

quanttrader/
├── strategies/     # Strategy system - BaseStrategy and dynamic loader
├── engine/         # Execution engines - BacktestEngine / RealtimeEngine
├── accounts/       # Account management - SimulatedAccount / FuturesSimulatedAccount
├── traders/        # Trade executors - EventsTrader / FuturesTrader
├── data/           # Data services - DataCenterService + CCXT adapters
│   └── adapters/   # Exchange adapters - CCXTAdapter / BinanceAdapter
├── indicators/     # Technical indicators - 60+ indicators via talipp
├── risk/           # Risk management - RiskManager (WARNING/CRITICAL levels)
├── reports/        # Report generation - BacktestReport / TradeRecord
└── config/         # Configuration management

Data Flow

Market Data (OHLCV) → Indicator Engine → Strategy Context → Strategy Execution
     ↓                                                            ↓
DataCenterService                                          StrategyResult
                                                                  ↓
Account Update ← Trade Execution ← Risk Check ← Trading Signals
     ↓
BacktestReport

Examples

See the examples/ directory for complete examples:

  • MACD Strategy: examples/macd_strategy/
    • macd_strategy.py - Strategy implementation
    • run_backtest_futures.py - Futures backtest
    • run_backtest_events.py - Event contracts backtest

Development

# Run all tests
uv run pytest

# Run specific test file
uv run pytest tests/test_data_center.py -v

# Run specific test class
uv run pytest tests/test_data_center.py::TestLRUCache -v

# Run examples
uv run python examples/macd_strategy/run_backtest_futures.py

Risk Rules

Rule Warning Critical
Daily Loss 3.5% 5%
Max Drawdown 10% 15%

Roadmap

  • MVP v0: Single-asset backtesting
  • MVP v1: Real-time paper trading
  • MVP v2: Funding rate optimization
  • MVP v3: Multi-asset portfolio
  • MVP v4: Live trading interface

See docs/trading_system_roadmap.md for details.


Dependencies

Package Purpose
ccxt Exchange connectivity
talipp Technical indicators
numpy Numerical computing
pydantic Data validation
httpx Async HTTP client

License

MIT License - see LICENSE for details.


Contributing

Contributions are welcome! Please read the AGENTS.md for coding conventions.

About

完整的量化交易解决方案,涵盖策略开发、回测、模拟、实盘全流程

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages