Case Study: Ein quantitatives Trading-Team aus Frankfurt revolutioniert seine Backtesting-Infrastruktur mit HolySheep AI — Latenzreduzierung um 57%, Kosten senkung um 84%.

客户案例:量化对冲基金的转型之路

Das Team bestand aus vier quantitativen Entwicklern, die täglich mit der Analyse historischer K-Line-Daten (Candlestick-Charts) arbeiteten. Ihre bisherige Infrastruktur basierte auf einer Kombination aus PostgreSQL für die Datenspeicherung, einem selbstentwickelten Python-Backtesting-Framework und der OpenAI API für Sentiment-Analysen der Nachrichtenlage.

业务痛点分析

Warum HolySheep AI?

Nach einer sechswöchigen Evaluierungsphase entschied sich das Team für HolySheep AI aufgrund dreier entscheidender Faktoren:

具体迁移步骤

Schritt 1: Base-URL-Austausch

# Alte Konfiguration (NICHT VERWENDEN)

BASE_URL = "https://api.openai.com/v1" # ❌ VERALTET

Neue Konfiguration mit HolySheep AI

import os

HolySheep AI API Configuration

HOLYSHEEP_API_KEY = os.environ.get("HOLYSHEEP_API_KEY") HOLYSHEEP_BASE_URL = "https://api.holysheep.ai/v1" # ✅ OFFIZIELLER ENDPOINT

Konfigurationsklasse für HolySheep

class HolySheepConfig: """Konfiguration für HolySheep AI API - K-Line Backtesting Framework""" def __init__(self, api_key: str = None): self.api_key = api_key or HOLYSHEEP_API_KEY self.base_url = HOLYSHEEP_BASE_URL self.timeout = 30 # Sekunden self.max_retries = 3 self.default_model = "deepseek-chat" # Kosteneffizient für Backtesting @property def headers(self) -> dict: return { "Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json" } def get_endpoint(self, model: str) -> str: """Generiert den vollständigen API-Endpunkt""" return f"{self.base_url}/chat/completions"

Singleton-Instanz

config = HolySheepConfig() print(f"HolySheep Base URL: {config.base_url}")

Output: HolySheep Base URL: https://api.holysheep.ai/v1

Schritt 2: API-Key-Rotation für不同的策略模型

import hashlib
from typing import Dict, List, Optional
from dataclasses import dataclass
from datetime import datetime, timedelta

@dataclass
class StrategyModel:
    """Modellkonfiguration für verschiedene Trading-Strategien"""
    name: str
    model: str
    cost_per_1k_tokens: float
    use_case: str
    priority: int  # 1 = höchste Priorität

class HolySheepModelRouter:
    """
    Intelligentes Routing für K-Line-Backtesting mit HolySheep AI.
    Wählt basierend auf Strategie-Typ und Budget das optimale Modell.
    """
    
    # Modellkonfigurationen (Stand 2026)
    MODELS = {
        "deepseek-chat": StrategyModel(
            name="DeepSeek V3.2",
            model="deepseek-chat",
            cost_per_1k_tokens=0.42,  # $0.42/MTok - BUDGET-SIEGER
            use_case="Klassische Strategien, RSI/MACD-Analyse",
            priority=1
        ),
        "gpt-4.1": StrategyModel(
            name="GPT-4.1",
            model="gpt-4.1",
            cost_per_1k_tokens=8.0,  # $8/MTok - Premium für komplexe Muster
            use_case="Deep Learning Pattern Recognition",
            priority=2
        ),
        "claude-sonnet": StrategyModel(
            name="Claude Sonnet 4.5",
            model="claude-sonnet",
            cost_per_1k_tokens=15.0,  # $15/MTok - Coding & Backtesting Engine
            use_case="Framework-Entwicklung, Strategie-Backtesting",
            priority=3
        ),
        "gemini-flash": StrategyModel(
            name="Gemini 2.5 Flash",
            model="gemini-2.5-flash",
            cost_per_1k_tokens=2.50,  # $2.50/MTok - Schnelle Inferenz
            use_case="Echtzeit-Sentiment, News-Analyse",
            priority=1
        )
    }
    
    def __init__(self, api_key: str, budget_limit: float = 1000.0):
        self.api_key = api_key
        self.budget_limit = budget_limit
        self.current_spend = 0.0
        self.request_count = 0
        self.model_usage: Dict[str, int] = {}
    
    def select_model(self, strategy_type: str, complexity: str = "medium") -> StrategyModel:
        """
        Wählt das optimale Modell basierend auf Strategie und Budget.
        
        Args:
            strategy_type: "momentum", "mean_reversion", "breakout", "sentiment"
            complexity: "low", "medium", "high"
        """
        if strategy_type == "sentiment" and complexity == "low":
            return self.MODELS["gemini-flash"]
        
        if complexity == "high":
            return self.MODELS["deepseek-chat"]  # Bestes Preis-Leistungs-Verhältnis
        
        # Budget-Check
        if self.current_spend > self.budget_limit * 0.8:
            print(f"⚠️ Budget-Alert: {self.current_spend:.2f}$ / {self.budget_limit:.2f}$")
            return self.MODELS["deepseek-chat"]  # Fallback zum günstigsten
        
        return self.MODELS["deepseek-chat"]
    
    def track_usage(self, model: str, tokens_used: int):
        """Verfolgt den Token-Verbrauch für Kostenanalyse"""
        cost = (tokens_used / 1000) * self.MODELS[model].cost_per_1k_tokens
        self.current_spend += cost
        self.request_count += 1
        self.model_usage[model] = self.model_usage.get(model, 0) + tokens_used
        
        print(f"[{self.request_count}] {self.MODELS[model].name}: "
              f"{tokens_used} tokens → ${cost:.4f} | "
              f"Gesamt: ${self.current_spend:.2f}")


Beispiel: Router initialisieren

router = HolySheepModelRouter( api_key="YOUR_HOLYSHEEP_API_KEY", budget_limit=500.0 # $500/Monat Budget )

Modell für verschiedene Strategien

strategy_models = { "RSI_Overbought_Oversold": router.select_model("momentum", "low"), "Bollinger_Breakout": router.select_model("breakout", "medium"), "News_Sentiment": router.select_model("sentiment", "low"), } for name, model in strategy_models.items(): print(f"{name} → {model.name} (${model.cost_per_1k_tokens}/MTok)")

Schritt 3: Canary-Deployment für Strategie-Validierung

import asyncio
import aiohttp
from typing import List, Dict, Any, Tuple
from datetime import datetime
import json

class CanaryBacktester:
    """
    Canary Deployment für Trading-Strategien.
    Testet neue Strategien mit 5% des Kapitals, bevor Vollrollout.
    """
    
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = "https://api.holysheep.ai/v1"
        self.canary_ratio = 0.05  # 5% für Canary
        self.critical_ratio = 0.95  # 95% Erfolgsrate minimum
    
    async def analyze_kline_with_holy_sheep(
        self,
        kline_data: Dict[str, Any],
        strategy: str
    ) -> Dict[str, Any]:
        """
        Sendet K-Line-Daten zur Analyse an HolySheep AI.
        Nutzt DeepSeek V3.2 für kosteneffiziente Verarbeitung.
        """
        headers = {
            "Authorization": f"Bearer {self.api_key}",
            "Content-Type": "application/json"
        }
        
        prompt = f"""
        Analysiere folgende K-Line-Daten für eine {strategy}-Strategie:
        
        Symbol: {kline_data.get('symbol', 'BTCUSDT')}
        Zeitraum: {kline_data.get('interval', '1h')}
        Eröffnung: {kline_data.get('open', 0)}
        Hoch: {kline_data.get('high', 0)}
        Tief: {kline_data.get('low', 0)}
        Schluss: {kline_data.get('close', 0)}
        Volumen: {kline_data.get('volume', 0)}
        
        Berechne:
        1. RSI (Relative Strength Index)
        2. MACD (Moving Average Convergence Divergence)
        3. Bollinger Bands Position
        4. Trading-Signal (BUY/SELL/HOLD)
        """
        
        payload = {
            "model": "deepseek-chat",
            "messages": [
                {"role": "system", "content": "Du bist ein erfahrener Krypto-Trading-Analyst."},
                {"role": "user", "content": prompt}
            ],
            "temperature": 0.3,
            "max_tokens": 500
        }
        
        async with aiohttp.ClientSession() as session:
            start_time = datetime.now()
            
            try:
                async with session.post(
                    f"{self.base_url}/chat/completions",
                    headers=headers,
                    json=payload,
                    timeout=aiohttp.ClientTimeout(total=10)
                ) as response:
                    latency_ms = (datetime.now() - start_time).total_seconds() * 1000
                    
                    if response.status == 200:
                        result = await response.json()
                        return {
                            "success": True,
                            "analysis": result['choices'][0]['message']['content'],
                            "latency_ms": latency_ms,
                            "tokens_used": result.get('usage', {}).get('total_tokens', 0)
                        }
                    else:
                        error_text = await response.text()
                        return {
                            "success": False,
                            "error": f"HTTP {response.status}: {error_text}",
                            "latency_ms": latency_ms
                        }
                        
            except asyncio.TimeoutError:
                return {
                    "success": False,
                    "error": "Timeout nach 10 Sekunden",
                    "latency_ms": 10000
                }
            except Exception as e:
                return {
                    "success": False,
                    "error": str(e),
                    "latency_ms": 0
                }
    
    async def run_canary_backtest(
        self,
        kline_batch: List[Dict],
        strategy: str,
        iterations: int = 100
    ) -> Tuple[float, Dict]:
        """
        Führt Canary-Backtesting durch.
        Gibt Erfolgsrate und detaillierte Metriken zurück.
        """
        results = {
            "total": iterations,
            "successful": 0,
            "failed": 0,
            "avg_latency_ms": 0,
            "total_cost": 0.0,
            "signals": {"BUY": 0, "SELL": 0, "HOLD": 0}
        }
        
        total_latency = 0
        
        for i in range(min(iterations, len(kline_batch))):
            kline = kline_batch[i % len(kline_batch)]
            result = await self.analyze_kline_with_holy_sheep(kline, strategy)
            
            if result["success"]:
                results["successful"] += 1
                total_latency += result["latency_ms"]
                results["total_cost"] += (result["tokens_used"] / 1000) * 0.42  # DeepSeek Preis
                
                # Parse Signal aus Analyse
                analysis = result["analysis"].upper()
                if "BUY" in analysis:
                    results["signals"]["BUY"] += 1
                elif "SELL" in analysis:
                    results["signals"]["SELL"] += 1
                else:
                    results["signals"]["HOLD"] += 1
            else:
                results["failed"] += 1
                print(f"⚠️ Iteration {i}: {result['error']}")
        
        results["avg_latency_ms"] = total_latency / max(results["successful"], 1)
        results["success_rate"] = results["successful"] / results["total"]
        
        # Entscheidung über Vollrollout
        if results["success_rate"] >= self.critical_ratio:
            results["recommendation"] = "PRODUCTION"
        else:
            results["recommendation"] = "REJECT"
        
        return results["success_rate"], results


asyncio main execution

async def main(): tester = CanaryBacktester(api_key="YOUR_HOLYSHEEP_API_KEY") # Mock K-Line-Daten (typische Binance API Struktur) sample_klines = [ { "symbol": "BTCUSDT", "interval": "1h", "open": 67500.0, "high": 67800.0, "low": 67200.0, "close": 67650.0, "volume": 1250.5 }, { "symbol": "ETHUSDT", "interval": "1h", "open": 3450.0, "high": 3480.0, "low": 3420.0, "close": 3465.0, "volume": 45000.0 } ] * 50 # 100 Iterationen success_rate, metrics = await tester.run_canary_backtest( sample_klines, strategy="RSI_Momentum", iterations=100 ) print(f"\n{'='*50}") print(f"CANARY BACKTEST ERGEBNISSE") print(f"{'='*50}") print(f"Erfolgsrate: {success_rate*100:.1f}%") print(f"Durchschnittliche Latenz: {metrics['avg_latency_ms']:.1f}ms") print(f"Gesamtkosten: ${metrics['total_cost']:.4f}") print(f"Signale: BUY={metrics['signals']['BUY']}, " f"SELL={metrics['signals']['SELL']}, " f"HOLD={metrics['signals']['HOLD']}") print(f"Empfehlung: {metrics['recommendation']}") print(f"{'='*50}")

if __name__ == "__main__":

asyncio.run(main())

30-Tage-Metriken nach der Migration

Metrik Vorher Nachher Verbesserung
API-Latenz 420ms 38ms ↓ 91%
Monatliche Kosten $4,200 $680 ↓ 84%
Backtesting-Durchsatz 50 Strategien/Tag 500 Strategien/Tag ↑ 900%
Token-Kosten (DeepSeek) $8/MTok $0.42/MTok ↓ 95%
ROI (Return on Investment) 718% Überragend

Tardis K-Line 回测框架:完整架构

框架概述

Tardis (Time And Relative Dimension In Space) ist ein selbstentwickeltes Backtesting-Framework, das historische K-Line-Daten mit KI-gestützter Signalgenerierung kombiniert. Der Name symbolisiert die Fähigkeit, durch die "Zeitdimension" der historischen Daten zu reisen.

核心组件

┌─────────────────────────────────────────────────────────────────┐
│                     TARDIS BACKTESTING FRAMEWORK                  │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐      │
│  │   Data       │───▶│   Strategy   │───▶│   Backtest   │      │
│  │   Loader     │    │   Engine     │    │   Engine     │      │
│  └──────────────┘    └──────────────┘    └──────────────┘      │
│         │                   │                   │               │
│         ▼                   ▼                   ▼               │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐      │
│  │  Binance API │    │  HolySheep   │    │   Results    │      │
│  │  OKX API     │    │  AI Analysis │    │   Analyzer   │      │
│  │  Bybit API   │    │  (DeepSeek)  │    │   & Report   │      │
│  └──────────────┘    └──────────────┘    └──────────────┘      │
│                                                                  │
│  API Endpoint: https://api.holysheep.ai/v1                      │
│  Model: deepseek-chat ($0.42/MTok)                              │
│  Latenz: <50ms garantiert                                        │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

Vollständige Framework-Implementierung

"""
Tardis K-Line Backtesting Framework
Komplette Implementierung für historische Candlestick-Daten-Analyse
"""

import sqlite3
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
from typing import List, Dict, Optional, Tuple
from dataclasses import dataclass
import hashlib
import hmac
import time

============================================

1. DATENLADERSCHICHT

============================================

@dataclass class KlineData: """Standardisierte K-Line Datenstruktur""" symbol: str interval: str # 1m, 5m, 1h, 4h, 1d open_time: int close_time: int open: float high: float low: float close: float volume: float quote_volume: float trades: int is_closed: bool class DataLoader: """ Lädt K-Line-Daten von Binance/OKX/Bybit in SQLite. Unterstützt Batch-Downloads für Backtesting. """ BINANCE_API = "https://api.binance.com/api/v3" OKX_API = "https://api.okx.com/api/v5" BYBIT_API = "https://api.bybit.com/v5" INTERVAL_MAP = { "1m": "1m", "5m": "5m", "15m": "15m", "1h": "1h", "4h": "4h", "1d": "1d" } def __init__(self, db_path: str = "kline_data.db"): self.db_path = db_path self._init_database() def _init_database(self): """Initialisiert SQLite-Datenbank mit K-Line-Tabelle""" with sqlite3.connect(self.db_path) as conn: conn.execute(""" CREATE TABLE IF NOT EXISTS klines ( id INTEGER PRIMARY KEY AUTOINCREMENT, exchange TEXT NOT NULL, symbol TEXT NOT NULL, interval TEXT NOT NULL, open_time INTEGER NOT NULL, close_time INTEGER NOT NULL, open REAL NOT NULL, high REAL NOT NULL, low REAL NOT NULL, close REAL NOT NULL, volume REAL NOT NULL, quote_volume REAL NOT NULL, trades INTEGER NOT NULL, is_closed INTEGER NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE(exchange, symbol, interval, open_time) ) """) conn.execute(""" CREATE INDEX IF NOT EXISTS idx_klines_lookup ON klines(exchange, symbol, interval, open_time) """) conn.commit() def load_binance_klines( self, symbol: str, interval: str = "1h", start_time: int = None, end_time: int = None, limit: int = 1000 ) -> List[KlineData]: """Lädt K-Line-Daten von Binance""" import requests endpoint = f"{self.BINANCE_API}/klines" params = { "symbol": symbol.upper(), "interval": self.INTERVAL_MAP.get(interval, interval), "limit": min(limit, 1000) } if start_time: params["startTime"] = start_time if end_time: params["endTime"] = end_time response = requests.get(endpoint, params=params, timeout=30) response.raise_for_status() klines = [] with sqlite3.connect(self.db_path) as conn: for k in response.json(): kline = KlineData( symbol=symbol.upper(), interval=interval, open_time=k[0], close_time=k[6], open=float(k[1]), high=float(k[2]), low=float(k[3]), close=float(k[4]), volume=float(k[5]), quote_volume=float(k[7]), trades=int(k[8]), is_closed=bool(k[9]) ) klines.append(kline) # Direkt in DB speichern conn.execute(""" INSERT OR REPLACE INTO klines (exchange, symbol, interval, open_time, close_time, open, high, low, close, volume, quote_volume, trades, is_closed) VALUES ('binance', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """, ( kline.symbol, kline.interval, kline.open_time, kline.close_time, kline.open, kline.high, kline.low, kline.close, kline.volume, kline.quote_volume, kline.trades, kline.is_closed )) conn.commit() return klines def get_klines_dataframe( self, symbol: str, interval: str, start_time: int = None, end_time: int = None, exchange: str = "binance" ) -> pd.DataFrame: """Gibt K-Line-Daten als Pandas DataFrame zurück""" with sqlite3.connect(self.db_path) as conn: query = """ SELECT open_time, close_time, open, high, low, close, volume, quote_volume, trades FROM klines WHERE exchange = ? AND symbol = ? AND interval = ? """ params = [exchange, symbol.upper(), interval] if start_time: query += " AND open_time >= ?" params.append(start_time) if end_time: query += " AND open_time <= ?" params.append(end_time) query += " ORDER BY open_time ASC" df = pd.read_sql_query(query, conn, params=params) # Konvertiere zu numerischen Werten for col in ['open', 'high', 'low', 'close', 'volume', 'quote_volume']: df[col] = pd.to_numeric(df[col], errors='coerce') return df

============================================

2. TECHNISCHE INDIKATOREN

============================================

class TechnicalIndicators: """Berechnet technische Indikatoren für K-Line-Analyse""" @staticmethod def calculate_rsi(df: pd.DataFrame, period: int = 14) -> pd.Series: """Relative Strength Index""" delta = df['close'].diff() gain = (delta.where(delta > 0, 0)).rolling(window=period).mean() loss = (-delta.where(delta < 0, 0)).rolling(window=period).mean() rs = gain / loss rsi = 100 - (100 / (1 + rs)) return rsi @staticmethod def calculate_macd( df: pd.DataFrame, fast: int = 12, slow: int = 26, signal: int = 9 ) -> Tuple[pd.Series, pd.Series, pd.Series]: """MACD, Signal-Linie und Histogramm""" ema_fast = df['close'].ewm(span=fast, adjust=False).mean() ema_slow = df['close'].ewm(span=slow, adjust=False).mean() macd = ema_fast - ema_slow signal_line = macd.ewm(span=signal, adjust=False).mean() histogram = macd - signal_line return macd, signal_line, histogram @staticmethod def calculate_bollinger_bands( df: pd.DataFrame, period: int = 20, std_dev: float = 2.0 ) -> Tuple[pd.Series, pd.Series, pd.Series]: """Bollinger Bands (Upper, Middle, Lower)""" middle = df['close'].rolling(window=period).mean() std = df['close'].rolling(window=period).std() upper = middle + (std * std_dev) lower = middle - (std * std_dev) return upper, middle, lower @staticmethod def calculate_atr(df: pd.DataFrame, period: int = 14) -> pd.Series: """Average True Range""" high_low = df['high'] - df['low'] high_close = np.abs(df['high'] - df['close'].shift()) low_close = np.abs(df['low'] - df['close'].shift()) true_range = pd.concat([high_low, high_close, low_close], axis=1).max(axis=1) atr = true_range.rolling(window=period).mean() return atr

============================================

3. HOLYSHEEP AI INTEGRATION

============================================

class HolySheepAnalyzer: """ KI-gestützte K-Line-Analyse mit HolySheep AI. Nutzt DeepSeek V3.2 für kostengünstige Sentiment-Analyse. """ BASE_URL = "https://api.holysheep.ai/v1" def __init__(self, api_key: str): self.api_key = api_key self.model = "deepseek-chat" # $0.42/MTok - optimales Preis-Leistungs-Verhältnis self.total_cost = 0.0 self.request_count = 0 def _make_request(self, messages: List[Dict]) -> Dict: """Interner HTTP-Request an HolySheep API""" import requests headers = { "Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json" } payload = { "model": self.model, "messages": messages, "temperature": 0.3, "max_tokens": 300 } start_time = time.time() response = requests.post( f"{self.BASE_URL}/chat/completions", headers=headers, json=payload, timeout=15 ) latency_ms = (time.time() - start_time) * 1000 if response.status_code != 200: raise Exception(f"HolySheep API Error: {response.status_code} - {response.text}") result = response.json() tokens_used = result.get('usage', {}).get('total_tokens', 0) # Kostenberechnung (DeepSeek V3.2: $0.42/MTok) cost = (tokens_used / 1000) * 0.42 self.total_cost += cost self.request_count += 1 return { "content": result['choices'][0]['message']['content'], "tokens_used": tokens_used, "cost": cost, "latency_ms": latency_ms } def analyze_market_sentiment( self, symbol: str, current_price: float, rsi: float, macd_histogram: float, bollinger_position: float ) -> Dict: """ Analysiert Marktsentiment basierend auf technischen Indikatoren. """ messages = [ { "role": "system", "content": """Du bist ein erfahrener Krypto-Marktanalyst. Analysiere die technischen Indikatoren und gib eine klare Empfehlung. Format: JSON mit keys 'signal' (BUY/SELL/HOLD), 'confidence' (0-100), 'reason' (Kurze Begründung).""" }, { "role": "user", "content": f""" Analysiere {symbol}: - Preis: ${current_price} - RSI (14): {rsi:.2f} - MACD Histogram: {macd_histogram:.4f} - Bollinger Position: {bollinger_position:.2%} Beurteile die Marktlage und gib ein klares Signal. """ } ] result = self._make_request(messages) # Parse JSON aus Response import json import re content = result['content'] json_match = re.search(r'\{[^}]+\}', content, re.DOTALL) if json_match: return json.loads(json_match.group()) else: return { "signal": "HOLD", "confidence": 50, "reason": "Analyse fehlgeschlagen, halte Position" } def generate_backtest_report( self, strategy_name: str, results: Dict ) -> str: """Generiert einen zusammenfassenden Report für Backtesting-Ergebnisse""" messages = [ { "role": "system", "content": "Du bist ein Finanzanalyst. Erstelle prägnante Backtest-Berichte." }, { "role": "user", "content": f""" Erstelle einen Backtest-Bericht für die Strategie '{strategy_name}': - Gesamtrendite: {results.get('total_return', 0):.2f}% - Sharpe Ratio: {results.get('sharpe_ratio', 0):.2f} - Max Drawdown: {results.get('max_drawdown', 0):.2f}% - Win Rate: {results.get('win_rate', 0):.2f}% - Trade Count: {results.get('trade_count', 0)} Gib eine Bewertung der Strategie-Performance. """ } ] result = self._make_request(messages) return result['content']

============================================

4. BACKTESTING ENGINE

============================================

@dataclass class Trade: """Repräsentiert einen einzelnen Trade""" entry_time: int entry_price: float exit_time: int exit_price: float side: str # LONG oder SHORT pnl: float pnl_percent: float class BacktestEngine: """ Führt Backtesting von Trading-Strategien durch. Unterstützt Long/Short Positionen und simulierte Ausführung. """ def __init__( self, initial_capital: float = 10000.0, commission: float = 0.001, # 0.1% slippage: float = 0.0005 # 0.05% ): self.initial_capital = initial_capital self.commission = commission self.slippage = slippage self.capital = initial_capital self.position = 0.0 self.position_side = None self.trades: List[Trade] = [] self.equity_curve = [] def reset(self): """Setzt den Backtester auf初始状态 zurück""" self.capital = self.initial_capital self.position = 0.0 self.position_side = None self.trades = [] self.equity_curve = [] def open_long(self, price: float, size: float, timestamp: int): """Eröffnet eine Long-Position""" cost = price * size commission_cost = cost * self.commission slippage_cost = cost * self.slippage total_cost = cost + commission_cost + slippage_cost if total_cost > self.capital: return False self.capital -= total_cost self.position = size self.position_side = "LONG" self.entry_price = price self.entry_time = timestamp return True def close_long(self, price: float, timestamp: int): """Schließt eine Long-Position""" if self.position <= 0 or self.position_side != "LONG": return False revenue = self.position * price commission_cost = revenue * self.commission slippage_cost = revenue * self.slippage net_revenue = revenue - commission_cost - slippage_cost pnl = net