Trading Bot Entwicklungs-Tagebuch - 1
Hallo, ich bin inkompetent.
Dies ist eine Geschichte über einen Bot, an dem ich seit etwa einem Jahr arbeite.
Einleitung
Ich habe bisher viel Backtesting gemacht und dabei viel ausprobiert, aber am Ende dachte ich, es wäre schneller, tatsächlich mit dem Bau eines Bots zu beginnen, also habe ich es versucht.
Der schmerzhafte Teil des Backtestings ist, dass bei einem Backtest über einen langen Zeithorizont die Änderung der Parameter technischer Indikatoren zu einer Datenverzerrung bei den maximalen Renditeergebnissen durch Versuch und Irrtum führen kann. Daher ist es notwendig, OHLCV-Daten für einen bestimmten Zeitraum zu extrahieren. Das ist mühsam.
Dateistruktur
Seit letztem Jahr habe ich alles in eine einzige Datei main.py gekritzelt, aber ich habe einige Verbesserungen vorgenommen.
Das Signalsystem wurde ziemlich redundant, also habe ich beschlossen, die Signale zu trennen.

Tatsächlich gibt jede Datei unter signals einfach bull/bear und go/stop zurück, und nachdem diese Rückgabewerte empfangen wurden, führt main.py einfach die Bestellungen aus.
- Handel
- Einstieg in die Richtung, wenn die Rückgabewerte von bull/bear übereinstimmen
- Handelsbedingungen
- Beurteilung mit go/stop, und wenn auch nur ein stop-Rückgabewert zurückkommt, wird kein Einstieg vorgenommen
Derzeit wird der Prozess selbst mit cron ausgeführt, ohne als Daemon zu laufen.
Bestellmenge
Dies ist die größte Herausforderung, aber ich kaufe mit einem bestimmten Prozentsatz des Kapitals.
In dieser Hinsicht könnte es, wenn es nicht mit ATR oder ähnlichem variabel gemacht wird, ein Faktor sein, der das Kapital erheblich reduziert, wenn man nach einem Aufwärtstrend in einen Seitwärtsmarkt eintritt.
Abgesehen davon suche ich immer noch nach einer Möglichkeit, Gelder zu sichern, nachdem sie einmal gestiegen sind, aber es gibt noch keine grundlegende Lösung.
Modularisierung von Signalen
Dies war der beste Teil; dank dieses Mechanismus war es ein großer Vorteil, Redundanz zu vermeiden.
Außerdem ist es jetzt einfach, schnell zu erstellen, wenn man es einem LLM übergibt.
Zum Beispiel muss man nur einen Beispielcode bereitstellen und eine Funktion implementieren, die letztendlich einen Rückgabewert liefert.
Herausforderungen
- Dynamische Anpassung der Bestellmenge
- Dynamische Anpassung von Gewinnmitnahme/Stop-Loss
- Auswahl der Handelsinstrumente
Insbesondere bei der Auswahl der Handelsinstrumente: Wenn es ein Instrument mit einem kurzfristigen Trend gibt, sollte man diesem folgen. Wenn man es jedoch erkennen und dann eine Bestellung aufgeben will, stellt sich die Frage, welche Kriterien für die Bestimmung eines Instruments, das für den kurzfristigen Trendhandel geeignet ist, verwendet werden sollen, was ein weiteres Kopfzerbrechen bereitet.
Was die Sprache betrifft, gibt es keinen Grund, von Python zu wechseln, da es sich nicht um einen auf Geschwindigkeit ausgerichteten Arbitrage-Bot handelt. Bei einem Mechanismus wie diesem könnte Go jedoch eine gute zweite Option für das Design der Funktionsimporte selbst sein.
Daher habe ich versucht, einen Handelsbot zu schreiben, als einen Ansatz, der sich von einem Arbitrage-Bot unterscheidet, da nicht viele Leute selbst Handelsbots schreiben.
Bis zum nächsten Mal. Mit freundlichen Grüßen.