- Wie erstellt man Indikatoren und Strategien in TradingView und verbindet es mit einer Börse?
- Teil 1 – Erste Schritte mit Pine Script (Version 5)
- Teil 2 – Struktur von Alarmen und Webhooks in TradingView
- Teil 3 – Einrichten eines Webservers zum Empfangen von Alarmen und Senden von Aufträgen an die Börse
- Teil 4 – Sichere Serverbereitstellung (Linux/Docker/systemd)
- Abschnitt 5 – Sicherheits- und Stabilitätstipps
- Abschnitt 6 – Backtesting, Optimierung und Forward-Testing
- Abschnitt 7 – Vergleich von Rechenzentrumsstandorten für den Handel
- Abschnitt 8 – Empfohlene Serverkonfigurationen für den Handel
- Abschnitt 9 – Praktische Tipps zur Risikominderung bei der Handelsautomatisierung
- Abschluss
- Häufig gestellte Fragen
Wie erstellt man Indikatoren und Strategien in TradingView und verbindet es mit einer Börse?
Dieser umfassende und praxisorientierte Leitfaden erklärt Schritt für Schritt, wie Sie Indikatoren und Strategien mit Pine Script Version 5 entwickeln, Webhook-Alarme in TradingView erstellen, einen sicheren Webhook-Server mit Flask und ccxt einrichten sowie technische und sicherheitsrelevante Tipps und Hinweise zur Standortwahl geben, um die Latenz zu reduzieren. Der Artikel eignet sich für Trader, Entwickler und Betriebsteams.
Teil 1 – Erste Schritte mit Pine Script (Version 5)
Pine Script Version 5 bietet neue Funktionen und erweiterte Features. So legen Sie los:
- Version auswählen: Aus
//@version=5Verwenden. - Zwei Haupttypen: Indikator (zur Anzeige im Diagramm und zur Signalgenerierung) und Strategie (Zum Backtesting und zur Ausführung hypothetischer Aufträge).
- Eingabevariablen: Aus der Funktion
EingangZur Verwendung für vom Benutzer änderbare Parameter. - Alarm: Aus
AlarmzustandVerwenden Sie es, um in TradingView sinnvolle Alarmbedingungen zu definieren.
Einfaches Indikatorbeispiel (EMA Crossover + RSI-Filter)
//@version=5
indicator("EMA Crossover + RSI Filter", overlay=true)
// Inputs
shortLen = input.int(9, "EMA Short Length")
longLen = input.int(21, "EMA Long Length")
rsiLen = input.int(14, "RSI Length")
rsiThresh = input.int(50, "RSI Threshold")
// Price
price = close
// Indicators
emaShort = ta.ema(price, shortLen)
emaLong = ta.ema(price, longLen)
rsi = ta.rsi(price, rsiLen)
// Signals
bull = ta.crossover(emaShort, emaLong) and rsi > rsiThresh
bear = ta.crossunder(emaShort, emaLong) and rsi < rsiThresh
plot(emaShort, color=color.blue)
plot(emaLong, color=color.orange)
plotshape(bull, title="Long", location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")
plotshape(bear, title="Short", location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")
// Alerts
alertcondition(bull, title="Long Alert", message="LONG_SIGNAL")
alertcondition(bear, title="Short Alert", message="SHORT_SIGNAL")Praktische Tipps: Die Alarmmeldung sollte im JSON-Format oder in einer bestimmten Struktur vorliegen, damit der Webserver sie problemlos verarbeiten kann; zum Beispiel: {"signal":"LONG","symbol":"BTCUSDT","timeframe":"1m"}.
Einfaches Strategiebeispiel mit Risikomanagement
//@version=5
strategy("EMA Crossover Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1)
// inputs ...
// (same indicators as above)
shortLen = input.int(9, "EMA Short Length")
longLen = input.int(21, "EMA Long Length")
rsiLen = input.int(14, "RSI Length")
rsiThresh = input.int(50, "RSI Threshold")
price = close
emaShort = ta.ema(price, shortLen)
emaLong = ta.ema(price, longLen)
rsi = ta.rsi(price, rsiLen)
bull = ta.crossover(emaShort, emaLong) and rsi > rsiThresh
bear = ta.crossunder(emaShort, emaLong) and rsi < rsiThresh
if bull
strategy.entry("Long", strategy.long)
if bear
strategy.entry("Short", strategy.short)
// Example Stop Loss / Take Profit
strategy.exit("Exit Long", from_entry="Long", loss=100, profit=200)
strategy.exit("Exit Short", from_entry="Short", loss=100, profit=200)Erläuterung: Für genauere Backtests als Strategie Verwendung und Parameter Stop-Loss Und Gewinnmitnahme Und passen Sie die Positionsgröße an.
Teil 2 – Struktur von Alarmen und Webhooks in TradingView
Nachdem Sie einen Indikator oder eine Strategie zum Chart hinzugefügt haben, erstellen Sie über das Menü „Benachrichtigungen“ eine neue Benachrichtigung. In den Einstellungen:
- Alarmtyp: Option Webhook-URL Wählen Sie Ihre Serveradresse aus und geben Sie sie ein (z. B. https://trade.example.com/webhook).
- Nachricht: Verwenden Sie Standard-JSON; schließen Sie Felder ein.
Symbol,Aktion,Preis,Zeitrahmen,uuidUndZeitstempel.
Beispiel für eine Alarmmeldung:
{"symbol":"BTCUSDT","action":"LONG","price":"${close}","timeframe":"1m","strategy":"EMA_CROSS_V1"}
Teil 3 – Einrichten eines Webservers zum Empfangen von Alarmen und Senden von Aufträgen an die Börse
Vorgeschlagene Architektur:
- TradingView (Alarm) → HTTPS-Webhook (NGINX + Flask/Node) → Bot (Geschäftslogik) → Exchange-API (ccxt oder SDK)
Installation der Voraussetzungen (Beispiel für Ubuntu)
sudo apt update
sudo apt install -y python3 python3-venv python3-pip
python3 -m venv venv
source venv/bin/activate
pip install flask ccxtBeispiel app.py mit Flask und ccxt
from flask import Flask, request, jsonify
import ccxt, os, hmac, hashlib, time
app = Flask(__name__)
API_KEY = os.getenv("EXCHANGE_API_KEY")
API_SECRET = os.getenv("EXCHANGE_API_SECRET")
exchange = ccxt.binance({
'apiKey': API_KEY,
'secret': API_SECRET,
'enableRateLimit': True,
})
@app.route('/webhook', methods=['POST'])
def webhook():
data = request.json
# simple validation: check data presence (use HMAC in production)
if not data:
return jsonify({"error":"no data"}),400
symbol = data.get("symbol")
action = data.get("action")
qty = data.get("qty", 0.001)
try:
if action == "LONG":
order = exchange.create_market_buy_order(symbol, qty)
elif action == "SHORT":
order = exchange.create_market_sell_order(symbol, qty)
else:
return jsonify({"error":"unknown action"}),400
return jsonify(order)
except Exception as e:
return jsonify({"error":str(e)}),500
Teil 4 – Sichere Serverbereitstellung (Linux/Docker/systemd)
Empfehlung: Verwenden Sie Docker Compose mit nginx als Reverse-Proxy und certbot für TLS.
docker-compose.yml Beispiel
version: '3.8'
services:
app:
build: .
restart: always
environment:
- EXCHANGE_API_KEY
- EXCHANGE_API_SECRET
nginx:
image: nginx:stable
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./certs:/etc/letsencrypt
ports:
- "80:80"
- "443:443"Beispiel einer systemd-Unit, die ohne Docker ausgeführt werden kann
[Unit]
Description=Trading Webhook Bot
After=network.target
[Service]
User=trade
WorkingDirectory=/home/trade/app
Environment=EXCHANGE_API_KEY=your_key_here
Environment=EXCHANGE_API_SECRET=your_secret_here
ExecStart=/home/trade/venv/bin/gunicorn -w 4 -b 127.0.0.1:5000 app:app
Restart=always
[Install]
WantedBy=multi-user.targetBeispielhafte administrative Befehle:
sudo systemctl daemon-reload
sudo systemctl enable --now tradebot.service
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
Abschnitt 5 – Sicherheits- und Stabilitätstipps
- Sichere Speicherung des API-Schlüssels: Aus der Umgebungsvariablen, Datei mit
chmod 600Oder verwenden Sie Secret Manager. - TLS: Verwenden Sie ein gültiges Zertifikat (certbot + nginx) für HTTPS.
- Nachrichtenbestätigung: Verwenden Sie HMAC-SHA256, um eingehende TradingView-Nachrichten zu verifizieren.
- Einschränkungen und Wiederholungsversuche: Implementieren Sie Ratenbegrenzungs- und Wiederholungs-/Backoff-Algorithmen.
- Überwachung und Protokollierung: Verwenden Sie Prometheus + Grafana oder ELK, um den Gesundheitszustand und die Reaktionszeiten zu überwachen.
- Schutz vor Angriffen: Nutzen Sie Fail2Ban, iptables und Anti-DDoS- oder CDN-Dienste für öffentliche Endpunkte.
Abschnitt 6 – Backtesting, Optimierung und Forward-Testing
- Backtest: Aus Funktionen
Strategie.*Verwenden Sie Pine für historische Analysen, aber beachten Sie die parametrischen Einschränkungen von Pine. - Optimierung: Testen Sie die Parameter manuell oder mithilfe externer Skripte (z. B. durch Generieren mehrerer Diagramme mit unterschiedlichen Parametern).
- Vorwärtstest: Testen Sie nach dem Backtesting immer auf einem Demokonto oder mit einem geringen Datenvolumen auf einem VPS mit niedriger Latenz.
- Schlupf- und Latenzmessung: Erfassen und analysieren Sie den Zeitpunkt des Empfangs des Webhooks und den Zeitpunkt der Auftragsausführung an der Börse.
Abschnitt 7 – Vergleich von Rechenzentrumsstandorten für den Handel
Die Standortwahl für Rechenzentren kann bei Hochfrequenzstrategien über den Erfolg jeder Millisekunde entscheiden. Sie sollte auf Exchanges und BGP-Routen basieren.
- Europa (Frankfurt, Amsterdam): Geeignet für europäische Börsen und einige Liquiditätsfonds.
- Östliche USA (New York, NJ): Geeignet für Coinbase und verwandte Märkte in New York.
- Asien (Singapur, Tokio, Hongkong): Geeignet für Binance Asia, OKX und asiatische Märkte.
Wenn Sie hauptsächlich auf Binance oder asiatischen Börsen handeln, ist ein VPS in Singapur oder Tokio besser geeignet; für US-Börsen ist ein Standort in New York/New Jersey besser geeignet.
Abschnitt 8 – Empfohlene Serverkonfigurationen für den Handel
VPS für Trading (niedrige Latenz)
- CPU: 2-4 hochfrequente vCPUs
- Arbeitsspeicher: 4-8 GB
- Speicher: NVMe SSD 50-100 GB
- Netzwerk: geringe Latenz/1 Gbit/s, BGP/Anycast falls erforderlich
Server für rechenintensive Aufgaben/Backtesting
- CPU: 8+ vCPUs
- Arbeitsspeicher: 32+ GB
- Speicher: NVMe 1 TB
- GPU: Falls ML/KI zur Verarbeitung von Modellen benötigt wird
Nutzen Sie außerdem Sicherheitsfunktionen wie Anti-DDoS, Private Networking und Firewall-Management, um die Stabilität und Sicherheit des Dienstes zu erhöhen.
Abschnitt 9 – Praktische Tipps zur Risikominderung bei der Handelsautomatisierung
- Stop-Loss und maximales Exposure: Legen Sie für jede Order einen Stop-Loss und einen maximalen Expositionsbetrag fest.
- API-Kontostatus: Prüfen Sie die Einschränkungen und den KYC-Status.
- Schutzschalter: Stoppen Sie den Bot, wenn die Anzahl der Fehler oder die Latenzzeit deutlich ansteigt.
- Gesundheitsüberwachung: Überwachen Sie Verfügbarkeit, Latenz und Füllstand und richten Sie Benachrichtigungen für das Support-Team ein.
Abschluss
Dieser Leitfaden behandelt die wichtigsten Schritte vom Schreiben von Indikatoren und Strategien in Pine Script (Version 5), über das Erstellen von Webhook-Alarmen in TradingView und das Einrichten eines sicheren Webhook-Servers mit Flask/ccxt bis hin zu wichtigen Sicherheitsüberlegungen, der Wahl eines Rechenzentrumsstandorts und empfohlenen Serverkonfigurationen.
Wenn Sie Infrastrukturlösungen wie VPS mit niedriger Latenz, Anti-DDoS-Server oder Grafikserverdienste für rechenintensive Anwendungen benötigen, bietet Ihnen unser Unternehmen diese Einrichtungen an über 85 Standorten weltweit und kann Ihre Infrastruktur einrichten und optimieren.









