交易策略回测服务

Backtrader MCP是一个将Backtrader转化为AI可访问的交易沙盒的服务,允许代理运行、分析和优化端到端的交易策略。

  • by kukapay
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 kukapay/backtrader-mcp

使用说明

Backtrader MCP

一个MCP服务器,将Backtrader变成一个AI可访问的交易沙箱,允许代理端到端运行、分析和优化策略。

特性

  • 一个工具来统治他们所有人 — run_backtest 获取数据,运行模拟,并返回结果+图表
  • AI优先设计 --自然语言→ 通过内置提示生成策略代码
  • 全面交换支持 --币安、Bybit、OKX、Gate.io(现货和永久)
  • 杠杆和融资率模拟 准备
  • 美丽的Plotly股权曲线 作为嵌入图像返回

需求

  • Python 3.10+
  • 紫外线 用于依赖关系管理(推荐)

安装

# 1. Clone & enter
git clone https://github.com/kukapay/backtrader-mcp.git
cd backtrader-mcp

# 2. Install (uv recommended)
uv sync

# 3. Install to Claude Desktop / Cursor
uv run mcp install main.py

工具和提示

run_backtest (你唯一需要的工具)

run_backtest(
    exchange="binance",
    symbol="BTC/USDT",
    timeframe="1h",
    from_date="2023-01-01",
    strategy_code="import backtrader as bt\nclass MyStrategy(bt.Strategy): ...",
    initial_cash=10000.0,
    commission=0.00075,
    slippage=0.0005,
    leverage=None
)

示例提示:

为BTC/USDT的RSI+布林带生成回测策略,然后从2023年1月1日起在币安1小时内进行回测,初始资本为10000美元,并显示股权曲线。

示例输出:

Fetching data from exchange...
Fetched 15,000 candles (64%)
Fetched 18,432 candles (80%)
Data ready. Starting simulation on 18,432 bars...
Simulating... 4,608/18,432 bars (85%)
Simulating... 9,216/18,432 bars (90%)
Simulating... 13,824/18,432 bars (95%)
Generating chart...
Done!

Backtest Complete!

Symbol     : BTC/USDT
Candles    : 18,432
Final Value: $28,740.50
Return     : +187.41%
Sharpe     : 1.87
Max DD     : 21.3%

<Plotly Image>

内置提示:生成Backtrader策略代码

问问克劳德:

“为RSI+布林带生成反向交易者策略”

它将输出完美、导入完整、执行就绪的代码。

import backtrader as bt
from backtrader.indicators import BollingerBands, RSI

class BollingerRSIStrategy(bt.Strategy):
    """
    Bollinger Bands + RSI Strategy
    - Buy when price touches lower Bollinger Band AND RSI < 30 (oversold)
    - Sell/Close when price touches upper Bollinger Band OR RSI > 70 (overbought)
    """
    params = (
        ('bb_period', 20),
        ('bb_dev', 2),
        ('rsi_period', 14),
        ('rsi_oversold', 30),
        ('rsi_overbought', 70),
    )

    def __init__(self):
        # Bollinger Bands
        self.bb = BollingerBands(
            period=self.p.bb_period,
            devfactor=self.p.bb_dev
        )
        # RSI
        self.rsi = RSI(period=self.p.rsi_period)

        # For easier access
        self.bb_top = self.bb.lines.top
        self.bb_mid = self.bb.lines.mid
        self.bb_bot = self.bb.lines.bot

    def next(self):
        if not self.position:  # No position
            # Buy condition: price below lower band + oversold
            if self.data.close[0] < self.bb_bot[0] and self.rsi[0] < self.p.rsi_oversold:
                self.buy(size=0.1)  # Buy 0.1 BTC (or full available)

        else:  # In position
            # Sell condition: price above upper band OR overbought
            if self.data.close[0] > self.bb_top[0] or self.rsi[0] > self.p.rsi_overbought:
                self.close()

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。