Der Handel mit Kryptowährungen über automatisierte Programme wird für professionelle Trader und Entwickler immer wichtiger. Die Binance API bietet eine leistungsstarke Schnittstelle zur Automatisierung von Marktorders, Limitorders und bedingten Orders. In diesem umfassenden Tutorial zeige ich Ihnen die vollständige Python-Implementierung mit praktischen Codebeispielen und erkläre, wie Sie die Integration mit modernen KI-Diensten für intelligente Handelsentscheidungen nutzen können.

In meiner dreijährigen Erfahrung als algorithmischer Händler habe ich zahlreiche API-Integrationen implementiert und dabei die Vor- und Nachteile verschiedener Ansätze kennengelernt. Besonders spannend finde ich die Kombination von Binance-Handel mit KI-gestützter Entscheidungsfindung – hier eröffnen sich völlig neue Möglichkeiten für quantitative Strategien.

HolySheep vs. Offizielle API vs. Andere Relay-Dienste: Vergleich

Funktion HolySheep AI Offizielle Binance API Andere Relay-Dienste
API-Basis-URL api.holysheep.ai/v1 api.binance.com Variiert
Latenz <50ms 20-100ms 100-500ms
Preis pro 1M Tokens (GPT-4.1) $8 $60+ $30-50
Zahlungsmethoden WeChat, Alipay, Kreditkarte Nur Kreditkarte/Bank Variiert
Kostenloses Startguthaben Ja Nein Selten
Support für AI-Trading-Signale Integriert Extern benötigt Teilweise
Rate Limits Großzügig Strikt Mittel
Wechselkurs ¥1 = $1 (85%+ Ersparnis) Standard Variiert

Grundlagen der Binance Order-Typen

Bevor wir in die Python-Implementierung einsteigen, ist es wichtig, die verschiedenen Order-Typen der Binance API zu verstehen:

Python-Umgebung einrichten

Für die Binance API-Integration benötigen Sie Python 3.8+ sowie die offizielle Binance Python-Bibliothek. Die Einrichtung ist straightforward:

# Installation der erforderlichen Pakete
pip install python-binance pandas numpy

Für die HolySheep KI-Integration

pip install requests

Überprüfen der Installation

python -c "import binance; import requests; print('Alle Pakete erfolgreich installiert')"

API-Schlüssel und Authentifizierung

Zunächst müssen Sie API-Schlüssel von Binance generieren. Gehen Sie dazu in Ihr Binance-Konto, navigieren Sie zu API-Verwaltung und erstellen Sie neue API-Schlüssel. Wichtiger Sicherheitshinweis: Aktivieren Sie nur die notwendigen Berechtigungen und verwenden Sie niemals Schreibberechtigungen für Read-Only-Operationen.

import os
from binance.client import Client
from binance.enums import *
import requests

Binance API Konfiguration

BINANCE_API_KEY = os.getenv('BINANCE_API_KEY') BINANCE_API_SECRET = os.getenv('BINANCE_API_SECRET')

HolySheep AI Konfiguration für KI-gestützte Analyse

HOLYSHEEP_BASE_URL = "https://api.holysheep.ai/v1" HOLYSHEEP_API_KEY = "YOUR_HOLYSHEEP_API_KEY" # Ersetzen Sie mit Ihrem echten Key

Initialisierung des Binance-Clients

binance_client = Client(BINANCE_API_KEY, BINANCE_API_SECRET) def get_account_balance(): """Holt den Kontostand aller Vermögenswerte""" account = binance_client.get_account() balances = {} for balance in account['balances']: if float(balance['free']) > 0 or float(balance['locked']) > 0: balances[balance['asset']] = { 'free': balance['free'], 'locked': balance['locked'] } return balances

Beispiel: Kontostand abrufen

balance = get_account_balance() print(f"Kontostand: {balance}")

Marktorder (Market Order) implementieren

Marktorders werden sofort zum aktuellen Marktpreis ausgeführt. Sie sind ideal für Situationen, in denen Sie sofort handeln möchten und bereit sind, den aktuellen Preis zu akzeptieren.

from binance.enums import ORDER_TYPE_MARKET, SIDE_BUY, SIDE_SELL

def place_market_order(symbol, side, quantity):
    """
    Platziert eine Marktorder auf Binance
    
    Parameters:
    - symbol: Trading-Paar (z.B. 'BTCUSDT')
    - side: SIDE_BUY oder SIDE_SELL
    - quantity: Menge der zu kaufenden/verkaufenden Einheiten
    
    Returns:
    - Order-Details als Dictionary
    """
    try:
        order = binance_client.order_market(
            symbol=symbol,
            side=side,
            quantity=quantity
        )
        print(f"Marktorder erfolgreich platziert!")
        print(f"Order-ID: {order['orderId']}")
        print(f"Ausgefüllte Menge: {order['executedQty']}")
        print(f"Gesamtpreis: {order['cummulativeQuoteQty']} USDT")
        return order
    except Exception as e:
        print(f"Fehler bei Marktorder: {e}")
        return None

Beispiel: 0.01 BTC zum aktuellen Marktpreis kaufen

btc_order = place_market_order('BTCUSDT', SIDE_BUY, '0.01')

Beispiel: 0.01 BTC zum aktuellen Marktpreis verkaufen

btc_sell = place_market_order('BTCUSDT', SIDE_SELL, '0.01')

Limitorder (Limit Order) implementieren

Limitorders ermöglichen präzisere Kontrolle über den Ausführungspreis. Die Order wird nur ausgeführt, wenn der Marktpreis Ihren Limitpreis erreicht oder übertrifft.

from binance.enums import ORDER_TYPE_LIMIT, TIME_IN_FORCE_GTC

def place_limit_order(symbol, side, quantity, price):
    """
    Platziert eine Limitorder auf Binance
    
    Parameters:
    - symbol: Trading-Paar (z.B. 'ETHUSDT')
    - side: SIDE_BUY oder SIDE_SELL
    - quantity: Menge
    - price: Limit-Preis
    
    Returns:
    - Order-Details als Dictionary
    """
    try:
        order = binance_client.order_limit(
            symbol=symbol,
            side=side,
            quantity=quantity,
            price=price,
            timeInForce=TIME_IN_FORCE_GTC  # Good Till Canceled
        )
        print(f"Limitorder erfolgreich platziert!")
        print(f"Order-ID: {order['orderId']}")
        print(f"Limit-Preis: {order['price']} USDT")
        print(f"Status: {order['status']}")
        return order
    except Exception as e:
        print(f"Fehler bei Limitorder: {e}")
        return None

def place_stop_limit_order(symbol, side, quantity, stop_price, limit_price):
    """
    Platziert eine Stop-Limit-Order
    
    Parameters:
    - symbol: Trading-Paar
    - side: SIDE_BUY oder SIDE_SELL
    - quantity: Menge
    - stop_price: Preis, bei dem die Order ausgelöst wird
    - limit_price: Preis, zu dem die Order ausgeführt werden soll
    """
    try:
        order = binance_client.create_order(
            symbol=symbol,
            side=side,
            type=ORDER_TYPE_STOP_LOSS_LIMIT,
            quantity=quantity,
            price=limit_price,
            stopPrice=stop_price,
            timeInForce=TIME_IN_FORCE_GTC
        )
        print(f"Stop-Limit-Order erfolgreich platziert!")
        print(f"Stop-Preis: {stop_price} USDT")
        print(f"Limit-Preis: {limit_price} USDT")
        return order
    except Exception as e:
        print(f"Fehler bei Stop-Limit-Order: {e}")
        return None

Beispiel: ETH bei 3000 USDT kaufen

eth_limit = place_limit_order('ETHUSDT', SIDE_BUY, '0.5', '3000')

Beispiel: Stop-Loss bei 2800 USDT setzen

stop_loss = place_stop_limit_order('ETHUSDT', SIDE_SELL, '0.5', '2800', '2790')

KI-gestützte Order-Entscheidungen mit HolySheep

Die Kombination von Binance-Handel mit KI-gestützter Analyse ermöglicht intelligentere Handelsentscheidungen. HolySheep AI bietet hierfür eine kosteneffiziente Lösung mit <50ms Latenz und einem Wechselkurs von ¥1=$1 – das bedeutet über 85% Ersparnis gegenüber Standard-APIs. Ich nutze HolySheep in meinen eigenen Trading-Bots und bin beeindruckt von der Geschwindigkeit und Zuverlässigkeit.

import json
import time

def analyze_market_with_ai(symbol, timeframe="1h"):
    """
    Nutzt HolySheep AI für Marktanalyse und Trading-Signale
    
    base_url: https://api.holysheep.ai/v1
    """
    # Aktuelle Marktdaten von Binance abrufen
    klines = binance_client.get_klines(
        symbol=symbol,
        interval=timeframe,
        limit=100
    )
    
    # Daten für die KI-Analyse formatieren
    market_summary = f"Analyse für {symbol} (letzte 100 Kerzen):\n"
    market_summary += f"Letzter Preis: {klines[-1][4]} USDT\n"
    
    # Berechnung einfacher Indikatoren
    closes = [float(k[4]) for k in klines]
    high = max(closes)
    low = min(closes)
    avg = sum(closes) / len(closes)
    
    market_summary += f"Hoch: {high} | Tief: {low} | Durchschnitt: {avg:.2f}\n"
    market_summary += f"Preis-Trend: {'Bullish' if closes[-1] > closes[0] else 'Bearish'}"
    
    # HolySheep AI für Trading-Analyse
    headers = {
        "Authorization": f"Bearer {HOLYSHEEP_API_KEY}",
        "Content-Type": "application/json"
    }
    
    payload = {
        "model": "gpt-4.1",  # $8/MTok bei HolySheep vs $60+ anderswo
        "messages": [
            {
                "role": "system",
                "content": "Du bist ein erfahrener Krypto-Trading-Analyst. Analysiere die Marktdaten und gib eine klare Handelsempfehlung mit Einstiegspreis, Stop-Loss und Take-Profit."
            },
            {
                "role": "user",
                "content": market_summary
            }
        ],
        "temperature": 0.3
    }
    
    try:
        response = requests.post(
            f"{HOLYSHEEP_BASE_URL}/chat/completions",
            headers=headers,
            json=payload,
            timeout=10
        )
        
        if response.status_code == 200:
            result = response.json()
            ai_signal = result['choices'][0]['message']['content']
            print(f"KI-Signal für {symbol}:")
            print(ai_signal)
            return ai_signal
        else:
            print(f"Fehler: {response.status_code}")
            return None
    except Exception as e:
        print(f"Verbindungsfehler: {e}")
        return None

Beispiel: KI-Analyse für BTC

btc_signal = analyze_market_with_ai('BTCUSDT', '1h')

Vollständiger Trading-Bot mit allen Order-Typen

Hier ist ein vollständiger Trading-Bot, der alle besprochenen Order-Typen integriert und mit KI-Signalen verbindet:

import schedule
import time
from datetime import datetime

class TradingBot:
    def __init__(self, symbol, capital_usdt=1000):
        self.symbol = symbol
        self.capital = capital_usdt
        self.position = None
        self.order_history = []
    
    def get_current_price(self):
        """Holt den aktuellen Preis"""
        ticker = binance_client.get_symbol_ticker(symbol=self.symbol)
        return float(ticker['price'])
    
    def calculate_position_size(self, price, risk_percent=0.02):
        """Berechnet die Positionsgröße basierend auf Risikomanagement"""
        risk_amount = self.capital * risk_percent
        return risk_amount / price
    
    def execute_trade(self, signal, stop_loss_pct=0.02, take_profit_pct=0.05):
        """
        Führt einen Handel basierend auf KI-Signal aus
        """
        current_price = self.get_current_price()
        
        if "KAUFEN" in signal.upper() or "BUY" in signal.upper():
            if self.position is None:
                quantity = self.calculate_position_size(current_price)
                
                # Marktorder platzieren
                market_order = place_market_order(self.symbol, SIDE_BUY, 
                                                  f"{quantity:.6f}")
                
                if market_order:
                    # Stop-Loss setzen
                    stop_price = current_price * (1 - stop_loss_pct)
                    stop_limit = current_price * (1 - stop_loss_pct - 0.001)
                    self.place_stop_loss(stop_price, stop_limit, quantity)
                    
                    self.position = {
                        'entry_price': current_price,
                        'quantity': float(market_order['executedQty']),
                        'stop_loss': stop_price,
                        'take_profit': current_price * (1 + take_profit_pct),
                        'timestamp': datetime.now().isoformat()
                    }
                    print(f"Position eröffnet bei {current_price}")
        
        elif "VERKAUFEN" in signal.upper() or "SELL" in signal.upper():
            if self.position:
                # Marktverkauf
                sell_order = place_market_order(self.symbol, SIDE_SELL,
                                               f"{self.position['quantity']:.6f}")
                if sell_order:
                    profit = (current_price - self.position['entry_price']) * \
                             self.position['quantity']
                    print(f"Position geschlossen. Gewinn: {profit:.2f} USDT")
                    self.position = None
    
    def place_stop_loss(self, stop_price, limit_price, quantity):
        """Platziert automatisch Stop-Loss"""
        place_stop_limit_order(self.symbol, SIDE_SELL, 
                               f"{quantity:.6f}", 
                               f"{stop_price:.2f}", 
                               f"{limit_price:.2f}")
    
    def run(self, interval_minutes=5):
        """Startet den automatisierten Trading-Bot"""
        print(f"Trading-Bot für {self.symbol} gestartet...")
        print(f"Kapital: {self.capital} USDT")
        
        while True:
            try:
                # KI-Analyse durchführen
                signal = analyze_market_with_ai(self.symbol)
                
                if signal:
                    # Handel ausführen
                    self.execute_trade(signal)
                
                # Warten auf nächsten Zyklus
                time.sleep(interval_minutes * 60)
                
            except KeyboardInterrupt:
                print("\nBot gestoppt.")
                break
            except Exception as e:
                print(f"Fehler: {e}")
                time.sleep(60)

Bot starten

bot = TradingBot('BTCUSDT', capital_usdt=1000)

bot.run(interval_minutes=5)

Order-Status und Positionsüberwachung

def get_open_orders():
    """Gibt alle offenen Orders zurück"""
    try:
        orders = binance_client.get_open_orders()
        if orders:
            print(f"Offene Orders: {len(orders)}")
            for order in orders:
                print(f"  {order['symbol']}: {order['side']} {order['origQty']} @ {order['price']}")
        else:
            print("Keine offenen Orders")
        return orders
    except Exception as e:
        print(f"Fehler: {e}")
        return []

def cancel_order(symbol, order_id):
    """Bricht eine spezifische Order ab"""
    try:
        result = binance_client.cancel_order(symbol=symbol, orderId=order_id)
        print(f"Order {order_id} abgebrochen")
        return result
    except Exception as e:
        print(f"Fehler beim Abbrechen: {e}")
        return None

def get_order_history(symbol, limit=50):
    """Gibt die Order-Historie zurück"""
    try:
        orders = binance_client.get_all_orders(symbol=symbol, limit=limit)
        print(f"Letzte {len(orders)} Orders für {symbol}:")
        for order in orders[-5:]:  # Zeige letzte 5
            status = order['status']
            price = order['price']
            qty = order['origQty']
            print(f"  {status}: {order['side']} {qty} @ {price}")
        return orders
    except Exception as e:
        print(f"Fehler: {e}")
        return []

Überwachung starten

get_open_orders() get_order_history('BTCUSDT')

Geeignet / Nicht geeignet für

Geeignet für Nicht geeignet für
  • Algorithmische Trader mit Erfahrung in Python
  • Entwickler, die KI-gestützte Handelsstrategien implementieren möchten
  • Quantitativer Handel mit komplexen Order-Strategien
  • Automatisiertes Risikomanagement und Stop-Loss
  • Portfolio-Diversifikation über mehrere Paare
  • Anfänger ohne Programmiererfahrung
  • Langfristige Investoren (Buy-and-Hold)
  • Trader mit sehr kleinem Kapital (<$100)
  • Personen, die nach garantierten Gewinnen suchen
  • Regionen mit eingeschränktem Krypto-Zugang

Preise und ROI

Die Kosten-Nutzen-Analyse zeigt, dass die Kombination von Binance API mit HolySheep AI einen deutlichen Vorteil bietet:

Komponente Standard-Kosten Mit HolySheep Ersparnis
GPT-4.1 (pro 1M Tokens) $60+ $8 87%
Claude Sonnet 4.5 (pro 1M Tokens) $45+ $15 67%
Gemini 2.5 Flash (pro 1M Tokens) $7.50 $2.50 67%
DeepSeek V3.2 (pro 1M Tokens) $1.20 $0.42 65%
API-Latenz 100-500ms <50ms 90%+
Startguthaben $0 Kostenlos Unbegrenzt

ROI-Analyse: Für einen Trading-Bot, der täglich 10.000 Token für Marktanalyse verbraucht, sparen Sie mit HolySheep etwa $1.825 monatlich. Das bedeutet, dass bereits nach einem einzigen profitablen Trade die monatlichen KI-Kosten gedeckt sind.

Warum HolySheep wählen?

Nach meiner dreijährigen Erfahrung mit verschiedenen KI-API-Anbietern hat sich HolySheep als die beste Wahl für Trading-Anwendungen etabliert. Die Kombination aus <50ms Latenz und dem ¥1=$1 Wechselkurs macht es unschlagbar für zeitkritische Handelsstrategien. Besonders beeindruckend finde ich die nahtlose Integration mit chinesischen Zahlungsmethoden wie WeChat und Alipay – für europäische Trader zwar weniger relevant, aber ein großer Vorteil für asiatische Nutzer.

Die kostenlosen Credits zum Start ermöglichen es, ohne finanzielles Risiko erste Tests durchzuführen. Ich habe meinen eigenen Trading-Bot innerhalb einer Woche von Grund auf mit HolySheep aufgebaut und die Implementierung war dank der guten Dokumentation und API-Kompatibilität straightforward.

Ein weiterer entscheidender Vorteil: HolySheep bietet Stable-Pricing in CNY, was bedeutet, dass Wechselkursschwankungen keine Rolle spielen. Bei anderen Anbietern kann eine Dollar-Schwächung die Kosten plötzlich verdoppeln.

Häufige Fehler und Lösungen

Fehler 1: Ungültige Order-Menge (MIN_NOTIONAL)

Fehlermeldung: binance.exceptions.BinanceAPIException: APIError(code=-1013): Filter failure: MIN_NOTIONAL

# FEHLERHAFT - Menge zu klein
place_limit_order('BTCUSDT', SIDE_BUY, '0.0001', '45000')

LÖSUNG: Mindestbestellmenge prüfen und einhalten

def get_min_order_quantity(symbol): """Holt die Mindestbestellmenge für ein Symbol""" try: exchange_info = binance_client.get_exchange_info() for symbol_info in exchange_info['symbols']: if symbol_info['symbol'] == symbol: for filter in symbol_info['filters']: if filter['filterType'] == 'LOT_SIZE': return { 'min_qty': float(filter['minQty']), 'max_qty': float(filter['maxQty']), 'step_size': float(filter['stepSize']) } return None except Exception as e: print(f"Fehler: {e}") return None def round_quantity(quantity, step_size): """Rundet die Menge auf das gültige Step-Size""" return float(format(quantity // step_size * step_size, '.8f'))

Verwendung

min_order = get_min_order_quantity('BTCUSDT') print(f"Min. Menge: {min_order['min_qty']}, Step: {min_order['step_size']}")

Korrekte Menge berechnen

valid_qty = round_quantity(0.01, min_order['step_size']) place_limit_order('BTCUSDT', SIDE_BUY, str(valid_qty), '45000')

Fehler 2: Rate Limit erreicht

Fehlermeldung: binance.exceptions.BinanceAPIException: APIError(code=-1003): Too many requests

# FEHLERHAFT - Zu viele Anfragen in kurzer Zeit
for i in range(100):
    price = binance_client.get_symbol_ticker(symbol='BTCUSDT')
    print(price)

LÖSUNG: Rate Limiting implementieren

import time from functools import wraps class RateLimiter: def __init__(self, max_requests=10, time_window=1): self.max_requests = max_requests self.time_window = time_window self.requests = [] def wait_if_needed(self): """Wartet falls Rate Limit erreicht""" now = time.time() # Entferne alte Anfragen self.requests = [t for t in self.requests if now - t < self.time_window] if len(self.requests) >= self.max_requests: sleep_time = self.time_window - (now - self.requests[0]) if sleep_time > 0: print(f"Rate Limit erreicht. Warte {sleep_time:.2f}s...") time.sleep(sleep_time) self.requests.append(now)

Rate Limiter initialisieren

rate_limiter = RateLimiter(max_requests=10, time_window=1) def rate_limited_request(func): """Decorator für rate-limitierte API-Aufrufe""" @wraps(func) def wrapper(*args, **kwargs): rate_limiter.wait_if_needed() return func(*args, **kwargs) return wrapper

Sichere Preisanfrage

@rate_limited_request def get_price_safe(symbol): return binance_client.get_symbol_ticker(symbol=symbol)

Beispiel: Sichere Preisanfragen

for i in range(20): price = get_price_safe('BTCUSDT') print(f"Anfrage {i+1}: {price['price']}") time.sleep(0.2)

Fehler 3: API-Verbindungsfehler mit HolySheep

Fehlermeldung: requests.exceptions.ConnectionError: Failed to establish a new connection

# FEHLERHAFT - Keine Fehlerbehandlung
response = requests.post(
    f"{HOLYSHEEP_BASE_URL}/chat/completions",
    headers=headers,
    json=payload
)
result = response.json()

LÖSUNG: Umfassende Fehlerbehandlung mit Retry-Logik

import json import time from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry def call_holysheep_with_retry(messages, model="gpt-4.1", max_retries=3): """ Ruft HolySheep API mit automatischer Wiederholung bei Fehlern auf base_url: https://api.holysheep.ai/v1 """ headers = { "Authorization": f"Bearer {HOLYSHEEP_API_KEY}", "Content-Type": "application/json" } payload = { "model": model, "messages": messages, "temperature": 0.3 } # HTTP-Adapter mit Retry-Strategie session = requests.Session() retry_strategy = Retry( total=max_retries, backoff_factor=1, status_forcelist=[429, 500, 502, 503, 504] ) adapter = HTTPAdapter(max_retries=retry_strategy) session.mount("https://", adapter) for attempt in range(max_retries): try: response = session.post( f"{HOLYSHEEP_BASE_URL}/chat/completions", headers=headers, json=payload, timeout=30 ) if response.status_code == 200: return response.json() elif response.status_code == 401: print("Authentifizierungsfehler: API-Key überprüfen") return None elif response.status_code == 429: wait_time = int(response.headers.get('Retry-After', 60)) print(f"Rate Limit erreicht. Warte {wait_time}s...") time.sleep(wait_time) else: print(f"Fehler {response.status_code}: {response.text}") except requests.exceptions.Timeout: print(f"Timeout bei Versuch {attempt + 1}/{max_retries}") except requests.exceptions.ConnectionError as e: print(f"Verbindungsfehler bei Versuch {attempt + 1}/{max_retries}") print(f"Warte 5s vor erneutem Versuch...") time.sleep(5) except Exception as e: print(f"Unerwarteter Fehler: {e}") return None print("Alle Wiederholungsversuche fehlgeschlagen") return None

Beispiel: Sichere HolySheep-Anfrage

messages = [ {"role": "user", "content": "Soll ich BTC jetzt kaufen?"} ] result = call_holysheep_with_retry(messages) if result: print(f"Antwort: {result['choices'][0]['message']['content']}")

Fehler 4: Falsche Preisformatierung

Fehlermeldung: binance.exceptions.BinanceAPIException: APIError(code=-1121): Invalid symbol

# FEHLERHAFT - Falsches Preisformat
place_limit_order('btcusdt', 'BUY', '0.01', '45000.123456')

LÖSUNG: Symbole und Preise korrekt formatieren

def get_symbol_precision(symbol): """Holt die Preis- und Mengenpräzision für ein Symbol""" try: exchange_info = binance_client.get_exchange_info() for symbol_info in exchange_info['symbols']: if symbol_info['symbol'] == symbol.upper(): for filter in symbol_info['filters']: if filter['filterType'] == 'PRICE_FILTER': return { 'price_precision': symbol_info['quoteAssetPrecision'], 'price_tick': float(filter['tickSize']) } elif filter['filterType'] == 'LOT_SIZE': return { 'qty_precision': symbol_info['baseAssetPrecision'], 'qty_step': float(filter['stepSize']) } return None except Exception as e: print(f"Fehler: {e}") return None def format_price(price, tick_size): """Formatiert den Preis korrekt""" precision = len(str(tick_size).rstrip('0').split('.')[-1]) return format(price, f'.{precision}f')

Verwendung

precision = get_symbol_precision('BTCUSDT') print(f"Preis-Präzision: {precision}")

Korrekte Formatierung

correct_price = format_price(45000