Learnings & ML-AlgoTrader-Releases
Das Logbuch wird von oben nach unten geführt, so dass die aktuellsten Einträge immer oben stehen. Das ganze System ist ausschließlich (vorerst) für meine private Nutzung. Ich dokumentiere hier nur meinen Fortschritt und Erkenntnisse. Es geht dabei gar nicht um die Ergebnisse selbst, sondern sich selbst nur einmal klar zu schreiben und die eigenen Gedanken etwas zu strukturieren. Ich selbst bin hauptberuflich als PO tätig und daher kein Hard-Core-Entwickler. Ich habe aber Spaß daran, die Sachen für mich zum Laufen zu bringen und meine Dev-Skills nicht komplett einrosten zu lassen.
2024-06-30
Detail-Chart-Konfiguration
Viele Einstellungen für die Charteinstellungen sind nun direkt sichtbar und nutzbar:
- Ein/Ausblenden der Transaktionsliste zum aktuellen Titel/Markt unterhalb des Chats
- Ein/Ausblenden der Transaktionen direkt im Chat
- Ein/Ausblenden der Wirtschaftstermine direkt im Chart
- Ein/Ausblenden der Deadzones d.h. der berechneten volatilen Seitwärtsphasen
Automatische Wiederholung von Trades in bestimmten Fehlerfällen
Für bestimmte Fehlerfälle bei automatisch ausgeführten Trades auf Produktion wird nun bis zu einer konfigurierbaren Grenzen der Trade nochmals versucht. Die Steuerung erfolgt über ein CronJob d.h. er kann in beliebigen zeitlichen Abständen und Zeitpunkten erfolgen. Aktuell ist das Setup max. 3 Tage zurück (Wochenende) der Wiederversuch max. 24x jeweils zur vollen Stunde für folgende Fehler:
- E:4 - Not enough money
- E:1 - Request has a pending state
- E:4 - Market closed
- E:4 - FIX - Other
Hintergrund ist, dass wiederholt gute Trades "verloren" gingen aufgrund von temporären Problemen.
Die Informationen werden auch im Monitoring angezeigt und kann nun einfach gesucht werden.
Die Aktivierung eines möglichen Re-Try-Mechanismus wird nicht global eingeführt, sondern wird bewusst nur für bestimmte Strategien aktivierbar gemacht. Der aktuelle Status wird auch im Frontend angezeigt als letzte Spalte:
Aktualisierung des Architekturbilds
Anpassungen:
- + OpenAI-Assistents
- + Langfuse-Monitoring
- + SimD1, Sim2-Mirror-Accounts
- + Mobile | Desktop-Usage
- + Trailing-Stopp-Level
Harmonisierung der Strategien
Die verwendeten Strategien sind jetzt nochmals alle im Zeitfenster und den Settings harmonisiert und aufgeräumt, so dass nicht relevante Modelle herausgenommen sind und die verwendeten Zeitfenster für das Trading (15min, 30min, 1h, 2h, 4h) weiter optimiert sind. Auch die Namensgebungen sind angepasst, so dass das Setup auf Datenseite ein sauberes Setup besitzt.
Tradingkonto (P1) und Investmentkonto (P2)
Bisher habe ich auf XTB das Trading-Setup laufen gehabt und auf Scalable-Capital dann hiervon getrennt die Investitionen in ETFs und Einzelaktien. Ich habe dies nun zusammengelegt und auch für die Kinder in jeweils eigene Sparpläne gepackt. Da beides dann über XTB läuft, lässt sich auch leicht eine transparente Sicht erreichen. Da der Transfer zwischen XTB-Konten in Sekunden funktioniert, lassen sich auch in der Anlagestrategie sehr dynamische Anpassungen vornehmen.
Besonders gefallen tut mir aber auch die Möglichkeit auf den ETF-Sparplanen Adhoc-Investments mit fester Größe vorzunehmen, ebenso wie automatisierte Umsetzungen von ETF-Investments, wenn auf das definierte Zielkonto eine Einzahlung von außen vorgenommen wird. Dies erlaubt mir die Einzahlung von außen mit automatischem Kauf nach Geldeingang und ist extrem flexibel.
Short-Long-Einstellung pro Strategie
Es ist nun möglich die Auswertung der Strategien getrennt nach Short-Long-Ergebnissen darzustellen. Gleichzeitig kann dabei auch pro Strategie und pro Stage (P1, D1, D2) entschieden werden welches Signalrichtung für die Strategie gelten soll. Dies ermöglicht die doch sehr unterschiedliche Trefferqualität deutlich differenzierter zu steuern. Bisher hatte ich die Trading-Signal je nach Richtung unterbunden, was aber im Sinne Transparenz und Steuerung unnötig ist.
Performance-Boost in der App
Ich habe mittels KI gestützte Refactorings d.h. Umbauten im Code deutliche Performance-Optimierungen durchführen können. Die Startseite baut nun die Einzelinhalte in weniger als 1.5s auf, was zuvor eher 5s gedauert hat. Ich habe hierfür "nativ" gpt4o genutzt und zuvor mit GitHub-CoPilot, Cody, Bito.AI und Jetbrains.AI verschiedene andere Optionen ausprobiert mit unbefriedigendem Ergebnis. Daher direkt GPT4o :) inkl. Git-Commit-Message, die durch die Reihe von Anpassungen direkt auch von dem LLM geschrieben wurde.
vStops umgestellt auf vStop-MTF
Die vStopps sind nun im Durchschnitt 1h von zuvor 30min Fenster umgestellt und gleichzeitig der zugehörige Berechnungs-Indikator (ATR-Basis) umgestellt. Dieser erlaubt eine bessere Handhabung auch von trendbestätigenden Signalen. Diese werden vorerst aber nicht benutzt.
2024-05-20
Nachrichten-Auswertung nun auf GPT4o
Die Nachrichten werden nun mit dem OpenAI-Modell: gpt4o statt gtp-4-turbo umgesetzt. Dies verdoppelt die Performance und halbiert die Kosten.
2024-01-24
Umstellung von Prompt-Wrangler auf GPT-Assistents
Da Prompt-Wrangler den Dienst eingestellt hat und gleichzeitig die Prompts auch deutlich besser in den OpenAI-Assistants gepflegt werden können, habe ich das Setup entsprechend umgestellt
Tracing und Cost-Tracking sowie LLM-Monitoring über Langfuse
Das komplette Tracking und Monitoring aller KI-Aktivitäten d.h. der News-Auswertung erfolgt nun über Langfuse. Mit meinem Datenvolumen ist dies auch im Free-Tier nutzbar.
Bot-Settings
Über die Bot-Settings sind über die verschiedenen Stages und Mirror-Stages die individuellen Settings einsehbar inkl. den statistischen Ergebnissen. Dies vereinfacht die Kontrolle über alle Einstellungen hinweg.
Strategien können ausgeblendet werden
Einige Strategien weisen sich als unzureichend in der Praxis. Diese können daher visuell nun direkt per Klick in der UI ausgeblendet werden. Sie sind dann allerdings nur noch über die DB wieder sichtbar zu stellen. Dies entspricht aber meinem Vorgehen uns passt perfekt.
2023-10-31
Manuelles Trading
So kann es aussehen, wenn manuelles Trading erfolgt :)
Pivot-Points in einem Langfrist-Chart
Um immer wieder sich auch das Big-Picture am Markt klar zu machen ist nun ein Pivot-Point-Chart integriert. Dieser macht Pivot-Punkte sichtbar. Diese markieren Wendepunkte, die durch geschaffene Fakten oder Überzeugungen am Markt für relevante mittelfristige Kursbewegungen sorgen. Die Grundorientierung für bevorzugte Trade-Richtungen (Short|Long) soll damit unterstützt werden. Das Setup ist zunächst nur visuell zur manuellen Auswertung und hat noch keine direkte automatische Verankerung im System.
2023-10-27
Transaktionsstatistiken
Die Idee ist es das Long/Short-Ratio im Überblick zu sehen, um evtl. Ableitungen für sinnvolle manuelle oder später auch automatische Positionierungen zu machen z.B. nur noch Long-Only bei >75% auf D2. Das Setup wäre aber erheblich verzögert, könnte aber unnötige Trades in die falsche Richtung vermeiden. Ich würde es auf SimD1, SimD2 evtl. in den folgenden Tagen einmal ausprobieren.
Es wird eine 100% Skala verwendet für den Vergleich zwischen den verschiedenen Stages. Die effektiven Nominalwerte werden nur als Beschriftung angezeigt.
vStops reaktiviert
Um die Stopp-Kurse effektiver zu setzen bei Gewinn-Positionen und nicht nur BES und ein Trailing-Stopp-Einstieg ab einem bestimmten Niveau zu haben, sondern wieder vStops reaktiviert.
2023-10-26
Strategie-Ansicht nun abhängig von der Displaygröße entweder als Grid oder Tabelle
In der Gesamt-Ansicht wird nun auch eine Tabellenansicht aktiviert, die es einfacher macht schnell eine konsistente Sicht zwischen den Daten zu erreichen. In Spalten lassen sich hier leichter notwendige Anpassungen erkennen, als im Grid-Modus. Auf dem Handy bleibt der Modus aber weiterhin parallel bestehen.
Performance-Logs werden nun durch DB-Einträge historisiert angezeigt
Startseite optimiert auf die Kerninformationen
Um eine bessere Übersicht auf der Startseite zu erreichen, werden verschiedene Einstellungen angepasst:
- Kalendereinträge nur mit Impact >3. Die Gesamtansicht muss unter Kalender eingesehen werden
- Deadzones sind in die Navigation verschoben
- News werden begrenzt auf 4 Einträge pro Symbol (Spalte)
2023-10-07
Optimierungen insb. für Responsive-Anzeigen
- Add Symbols Google/Meta
- Jump-Anker, um einen schnelleren Sprung auf Mobil-Geräten zwischen den Navigationspunkten zu erlauben
- Strategy-Details für Candlesticks, Bulls-Eye ergänzt
- Strategy-Anzeige auch für aktuell nicht getradete Positionen angepasst
KI-Bot für Website und WIKI mit Option dies auch für den Algotrader einzusetzen
Setup mit Flowise, PgVector, SSL und Konfiguration inkl. Optimierungen der Vektorisierungen, um für die WIKI-Seite und der Shareholder-Website einen KI-Bot bereitstellen zu können. Dabei sollten auch Optionen für den ML-Algobot geprüft werden.
2023-10-03
Einführung einer Toggle-History
Alle Anpassungen an Aktivierungszuständen der Strategien werden jetzt protokolliert, um "schnelle" Änderungen auch automatisch nachvollziehen zu können.
Einführung eines Backtest-Protokolls
Das Protokoll wird auf Basis von Tradingview-Backtests erstellt und erlaubt eine Nachvollziehbarkeit und auch spätere systematische Auswertung. Das Mitführen von Excel-Listen/Wiki-Einträgen ist hier wenig hilfreich.
Optimierung der Strategie-Parameter inkl. Protokollierung
Für L* - Strategie wurde dabei für alle Symbole eine Optimierung der Strategie-Parameter vorgenommen. Die Settings sind im Backtest-Protokoll entsprechend protokolliert und durch die UI-Anpassungen auch unmittelbar dargestellt.
Chart und Transaktionslisten-Darstellung von Strategie-Einstellungen
Innerhalb der Darstellungen werden die Aktivierungsgrade als Badges dargestellt, ebenso wie die Konfigurationsparameter aus dem Backtesting (wenn die Strategie dies erlaubte).
Ziel ist es leichter verifizieren zu können, ob die Settings hier optimal sind.
2023-10-01
Echtzeit-Realtime-Chartbilder
Die Chartbilder nutzen nun die Realtime-Chartdaten von XTB in allen Darstellungen. Durch den Refresh-Button kann es zudem von der UI jederzeit aktualisiert werden.
Darstellung von Trading-Positionen optimiert insb. um Haltedauer und Aktivitäten zu optimieren
Die Interpretation und Lesen des Trading-Tages ist nun deutlich vereinfach mit:
- Wechsel zwischen den Stage-Umgebungen direkt im Chart möglich
- Refresh der der Ansicht über eigenen Refresh-Button
- Darstellung der Kauf/Verkaufszeitpunkte optimiert mit heller Beschriftung bei erfolgreichen Trades und dunkler Schritt bei Fails
- Noch offene Positionen werden zusätzlich dargestellt
- Ausstiegspunkte werden je nach Profit in der Kreis-Darstellung optimiert
- Auswahl-Positionen für die gewünschten Zeiträume sind jetzt ebenfalls in eine Dropbox verschoben, damit die Darstellung auf dem Handy besser funktioniert.
Im Learning sind ALLE News-Trading-Events mit "schließen" aller vorherigen Positionen deaktiviert. Diese sind im Chart mit "Calendar-Stop" im Label sichtbar und zeigen allein hier im Silber-Chart sehr viele unnötige vorzeitige Positions-Schließungen.
2023-09-24
Trading-Modus: Mirror-Only-Modus zusätzlich möglich
Der Algobot kann ein Direkt-Trading vornehmen, oder über Mirroring von anderen Accounts arbeiten. Die Arbeitsweise ist unterschiedlich. Hinter dem Mirroring steht die Idee, dass zunächst "Gewinn-Schwellen" erreicht werden sollten, um in das Live-Trading überzugehen über verschiedene Stages.
Spezifische Deaktivierung von Trailing und BES für Trading-Strategien
Bestimmte Strategien gehen immer nahtlos zwischen Long und Short-Setups über. Bisher wurden dabei über BES und Trailing-Stopps die Gewinnmitnahmen sichergestellt. Dies kann jedoch deutlich optimiert werden, wenn die Strategie selbst beim Wechsel die vorherige Position schließt.
Die Einstellung ist pro Trading-Strategie möglich. Gewinne werden dabei uneingeschränkt laufen gelassen.
Fehlermails bei Failed-Trading-Positions
Wenn beim Trading Fehler bei der Direkt-Ausführung von Trades erzeugt werden, wird automatisch eine Mail gesendet mit
"algobot:error". Damit werden derartige Konstellationen "aktiv" gepusht und sind damit sichtbarer und können geprüft werden.
Reaktiviere Kalendar-Report in der V1-Version
Die Übersicht von den Kalenderdarstellungen ist sehr hoch, so dass nochmals in der UI-V1 die Darstellung wieder reaktiviert wurde. Die neue UI bleibt hiervon natürlich unberührt.
2023-09-17
Trading-Modus: ALL-OFF
Es kann nun das komplette Trading in den "Trading-Modus: OFF" gesetzt werden. Damit werden das Mirror-Trading als auch Direkt-Trading deaktiviert.
Deaktiviere Trading und schließe Position bei volatilen Marktphasen getrieben durch anstehende Wirtschaftsnachrichten
Es kann jetzt das Trading bei anstehenden Wirtschaftsnachrichten mit hoher Volatilität und Nervosität des Marktes im Vorfeld aufgesetzt werden und optional auch alle bestehenden Positionen geschlossen werden. Genau diese Marktphasen zerstören eine zuvor mühsam aufgebaute Performance.
Kursbewegende Nachrichten mit starkem Überraschungspotential (Minus-Performance) deaktivieren
Der Bot kann regulär Trades deaktivieren und auch alle Trades schließen, wenn bestimmte Wirtschaftsnachrichten auftreten. Da hierfür bereits jetzt Monate Erfahrungen vorliegen, können sehr simpel die Toggles automatisiert gesetzt werden. Es werden dabei alle Wirtschaftsnachrichten mehr als 500€ Minus deaktiviert.
INSERT INTO calendar_toggles (regEx, country, toggle_deactivate_new_trades, toggle_deactivate_high_volume_trades, toggle_close_all_positions_before, toggle_actiontime_minutes_window_after, toggle_actiontime_minutes_window_before)
select t.title, t.country, 1, 0, 1, 0, 0 from
(select c.country, c.title, round(sum(t.profit), 2) as sum_profit, count(*) as cnt
from calendar c
left join `xtb-trades` t
on (t.entry_time >= date_sub(c.timestamp, INTERVAL 15 MINUTE) and
t.entry_time <= date_add(c.timestamp, INTERVAL 60 MINUTE)) or
(t.exit_time >= date_sub(c.timestamp, INTERVAL 15 MINUTE) and
t.exit_time <= date_add(c.timestamp, INTERVAL 60 MINUTE))
where t.refID = 'D1'
and t.profit <> 0
group by c.country, c.title
order by sum_profit desc
) t where t.sum_profit<-500
In der Oberfläche können diese dann automatisiert im Kalender eingesehen werden, hier am Beispiel von FED-Interest-Rate-Decision.
Nach der Prompt-Optimierung ist vor der Prompt-Optimierung
Die Zusammenfassung des News-Feeds ist nun noch fokussierter und unterscheidet zwischen Kursbewegenden Infos, Statistiken und Ausblick. Dabei werden Emojis benutzt zur Auflockerung der Informationen. Die Inhalte werden nur noch als Stichworte gezeigt, um leichter lesbar zu sein.
Da ich Prompt-Wrangler für die Versionierung und Pflege der Prompts nutze, kann ich ohne Eigenentwicklung relativ gut die Ausführungszeiten als Percentile, die Cache-Rates als auch die Gesamtkosten sehr gut überwachen. Hier als Snapshot:
Strategie-Auswertungen mit Fokus-Zeitraum und -7d Auswertung
Um Strategien besser bewerten zu können, zeigen diese im Strategiefenster neben der Profit-Aggregation auch die Auswertung immer auf Sicht der letzten 7 Tagen. Damit ist eine zusätzliche Bewertungs-Dimension vorhanden und Entscheidungen für On-Off der Strategien leichter möglich.
Performancechart-Annotations für Trading-Anpassungen hinzugefügt
Chart-Anzeigen mit Sub-Titles
In der Chart-Ansicht werden die Charts gruppiert nach Typen wie Rohstoffen, Währungen etc. gezeigt. Diese zeigen daher nun Sub-Titles.
Bot-Setting-Charts nun mit Mouse-Over-Infos
Zur besseren Orientierung und Lesbarkeit der Charts sind die Mouse-Over-Funktionen im Chart wieder aktiviert.
2023-08-27
Prompt-Optimierungen
Umstellung auf GPT-4K32 leider mangels Verfügbarkeit noch nicht erfolgt. Über reine Prompt-Anpassungen wurden kleine Optimierungen erreicht:
- Aktuell werden praktisch irrelevante % Tagesentwicklungen nicht mehr als relevante Nachrichten ausgegeben
Durch den Einsatz einer Prompt-Engine, konnten die Anpassungen ohne Code-Anpassungen leichtgewichtig umgestellt werden.
Ideen für die Anpassungen und Entwicklung im News-Bereich:
- Nachrichten sind manchmal komplementär, manchmal durch die Aktualisierung der Infos bereits überholt. Das aktuelle Modell bildet dies noch nicht ab, so dass die Informationen zeitlich linear interpretiert werden müssten. Als Workarround werden nur Nachrichten des selben Tages verwendet.
- Die News sind aktuell unabhängig vom Alogbot-Setup d.h. die News-Interpretation beeinflusst das Trading nicht. Idee wäre es aber die News-Interpretation in Richtung steigender und fallender Märkte zu nutzen, um Trading-Signale in die geeignete Richtung zu filtern.
2023-06-04
Nutzung von Prompt-Versionierungen
Die News-Auswertungen und Aggregationen erfolgen über LLM (GPT-4). Um hier nach vorne flexibler und professioneller ausgerichtet zu sein, sind diese nun über eine Management-UI (über prompt-wrangler) abgebildet.
Hier nochmals zum Nutzen, der sich sehr schnell nochmals bestätigt hat in der praktischen Anwendung:
- Automatische saubere Versionierung für alle genutzten Prompts, womit Prompts als Teil der Entwicklung verstanden werden.
- Die aktuelle Version ist dabei über die Major-Version ansprechbar z.B. ki-algobot/llm-news-sumup@3.X.X greift immer die letzte 3.x Version. Die Versionierung erfolgt teilweise automatisch, wenn Kernaspekte verändert wurden z.B. Typen oder Parameter-Settings
- GPTx.x Anfragen werden über das System geleitet und auch beantwortet, womit ein durchgängiges Logging entsteht inkl. RAW-Data, Laufzeit und Kostenbetrachtungen für Auswertungen
- Durch die Nutzung von Parametern für Prompts die dann über die API selbst übergeben werden können, kann sauber die Assistant-Anweisungen von den User-Daten getrennt werden.
- Wenn das System einmal eingebunden ist, kann praktisch instant fachlich die Logik angepasst werden, was mehr als sinnvoll ist
- Das System benutzt Caching, so dass exakt gleiche Anfragen nicht "teuer" über die GPT-API gesendet werden
System ist aktuell in der Betaphase und (noch) kostenlos. Die Einbindung ist extrem einfach:
Prompt-Optimierungen und Erkenntnisse
Prompt News-Aggregation
- Die Nutzung von JSON-Schemen ist möglich, um die Struktur der JSON-Ausgabe zu validieren. Ein JSON-Schema ist eine leistungsstarke Methode zur Beschreibung des Formats und der Datenvalidierung für JSON-Daten. Jedoch ist es wichtig zu beachten, dass die Definition eines JSON-Schemas außerhalb der Fähigkeiten von GPT-3 oder GPT-4 liegt, da es sich um ein maschinelles Lernmodell für natürliche Sprache und nicht um ein Datenvalidierungs- oder Schematisierungstool handelt. Die Erstellung von JSON-Schemas würde typischerweise von einem Entwickler oder Datenarchitekten durchgeführt werden.
-
Sprache: Im Prompt wird nun spezifisch angegeben, dass die Sprache Deutsch ist. Prompt 2 gibt keine bestimmte Sprache an.
-
Bei sehr kurzen Informationen: Im Prompt wird angegeben, dass auch bei sehr kurzen Informationen Details übernommen werden sollen. Dies ist eine zusätzliche Anforderung, die im Prompt 2 nicht genannt wird.
-
Wichtig: Vermeide leere Teaser-Elemente: Prompt 1 hat eine spezifische Anforderung, leere Teaser-Elemente zu vermeiden ("symbol": { "teaser": [] }). Die Alternative: Vor der Rückgabe der JSON-Ausgabe prüfe ob eine technische Kürzung der Struktur möglich ist: Diese Anforderung ist spezifisch für Prompt 2 und erfordert eine Überprüfung und mögliche Reduzierung der JSON-Struktur vor der Rückgabe hat weniger gut funktioniert.
Prompt News-Tageszusammenfassung
- "Wichtig: Nutze NICHT die Eingangs-JSON-Struktur!". Diese Anforderung legt nahe, dass der Benutzer die ursprüngliche JSON-Struktur nicht in der Ausgabe sehen möchte. Diese Anforderung ist hier hilfreich, um Fehlinterpretationen zu vermeiden!
Weitere Punkte zur Berücksichtigung
-
Klarheit und Präzision: Stellen Sie sicher, dass Ihre Anweisungen klar und präzise sind. Vermeiden Sie Mehrdeutigkeiten, da dies zu unerwarteten Ergebnissen führen kann.
-
Kontext und Rolle: Stellen Sie sicher, dass die KI den Kontext der Aufgabe und ihre Rolle in der Aufgabe versteht. Das kann helfen, die Qualität der Antworten zu verbessern.
-
Beispiel-Inputs und Outputs: Geben Sie, wenn möglich, Beispiele für erwünschte Outputs an. Das hilft dem Modell, Ihre Erwartungen besser zu verstehen.
-
Angemessene Länge: Zu lange oder zu kurze Prompts können zu Problemen führen. Lange Prompts können zu einer Überinformation führen und könnten wichtige Details verdecken. Zu kurze Prompts könnten jedoch nicht genug Kontext bieten.
-
Verwenden Sie den richtigen Ton und Stil: Die Art und Weise, wie Sie Ihre Prompt schreiben, kann auch die Art und Weise beeinflussen, wie die KI antwortet. Wenn Sie zum Beispiel einen formellen Ton verwenden, wird die KI wahrscheinlich auch formell antworten.
-
Datums- und Zeitspezifikationen: Wenn Ihre Aufgabe zeitlich relevante Informationen beinhaltet, stellen Sie sicher, dass Sie die Zeitrahmen klar spezifizieren (z.B. "Wie haben sich die Preise für diese Symbole in den letzten sieben Tagen verändert?").
-
Im Falle von Fehlern: Geben Sie Anweisungen darüber, was die KI tun sollte, wenn sie auf Probleme stößt, z.B. fehlende oder widersprüchliche Informationen.
-
Einschränkungen und Ausnahmen: Geben Sie klar an, was die KI vermeiden sollte, wie im Prompt 1 "Wichtig: Vermeide leere Teaser-Elemente!".
2023-05-21
D3-Charts-Links
Direktsprünge zu den bisherigen D3-Charts ist nun direkt aus den Chart-Modulen heraus möglich.
Prompt-Weiterentwicklungen
Die bisherigen Prompts um die Details zusammenzufassen, als auch die Tageszusammenfassungen konnten nochmals optimiert werden über angepasste GPT4-Prompts. Auch die Textlängen werden nun besser ausgenutzt.
Trailing-Stopp-Berechnungen: Markierung der relevanten Höchstmarken
Trailing-Stopp-Berechnungen mit Einleitungstexten angepasst und automatischem Markierung der relevanten Höchstmarken
Trade-Fail-Markierungen
Es kann aus noch nicht nachvollziehbaren Gründen dazu kommen, da offene Trades ohne Profit ausgewiesen werden. Dies ist für das Spiegel-Mirroring so extrem verstörend.
2023-05-14
Datengetriebene Optimierung BES
Darüber hinaus habe ich eine Berechnungslogik gefunden, die für das Setzen eines BES verwendet werden kann.
Kernfrage ist immer, ob der BES wirklich größere Gewinne oder nur größere Verluste vermieden hat. Dies lässt sich aus dem Bauch kaum entscheiden.
Dabei werden Positionen gesucht, die zunächst über den BES laufen, dann unter 0 und damit ausgestoppt würden und danach wieder über den BES laufen. Da D1, D2 aktuell aber einen BES von 25€ hatten, kann aktuell keine sinnvolle Optimierung auf Daten durchgeführt werden über 25€. Ich muss jetzt zunächst die kommenden Wochen Daten sammeln und es dann schrittweise anpassen.
Für D1, D2 wurden die Break-Even-Stopp-Schwelle angepasst auf 70€. Damit sind dann sinnvolle Messungen möglich, ohne den BES für die Konten komplett zu deaktivieren. Da der Trailing-Stopp sehr hoch gesetzt wurde, würde es die Performance-Statistiken der Strategien sonst beeinflussen. Die berechneten Nach-Stopps greifen aktuell noch nicht überall und sind daher noch unzuverlässig.
Datengetriebene Optimierung MinProfit-Schwellwert fürs Mirroring
Hintergrund der Überlegung ist, dass ich Verlusttrades durch Anpassung des Schwellwertes vermeiden kann und dessen finaler Profit aufsummiert werden kann, auf der anderen Seite führt das Anheben des Schwellwertes zu einer Verzögerung des Einstiegs und damit eine Reduktion des Gewinns für alle Positionen. Der Schwellwert für diese Betrachtung liegt auf der D1 bei 5€. Die Schwellwertes sind daher vereinheitlicht.
2023-05-13
Datenaggregation aller Trade-Verläufe aus den Log-Daten
Auf Basis von Log-Aufzeichnungen wird jeder Trade im Verlauf analysierbar und ein entsprechender Datenpool wird automatisiert nachträglich aufgebaut. Mit diesen Daten lassen sich Analysen durchführen, wie sich ein Trade im Verlauf mit einem Abstand von mind. 5min entwickelt hat. Damit lassen sich dann auch die sinnvollen BES und Trailing-Stopps datengetrieben visualisieren und auch automatisch optimieren. Zunächst wurde aber in einem Endpunkt die automatische nachträgliche Datenbetrachtung auf Basis der JSON-Logdaten vorgenommen. Es werden dabei Delta-Analysen durchgeführt und die Ergebnisse relational gespeichert.
Profit-Prognose für die Trailing-Stopps durch Percentile-Analysen und Scatter-Charts
Auf Basis der gesammelten Trade-Positions-Verläufen lassen sich Min-Max-Berechnungen der Profit-Werte im zeitlichen Verlauf pro Trade durchführen. Damit ist auch definierbar bei welchem Profit-Wert ein enger Trailing-Stopp oder eine sofortige Gewinnmitnahme sinnvoll ist. Wie sehr schön zu erkennen, ist das Optimum in meinem Setup für D2 ca. bei 70€, bei D1 eher bei 60€. Da P1 gespiegelt zu D1 sich verhält, können so die Werte datengetrieben ermittelt werden.
Weitere Datenoptimierungen werden wahrscheinlich aber notwendig sein.
Der Profit-Forecast beruht auf der Annahme, dass ich bei einer sortierten Liste der Trades nach dem maximalen erreichten Profit im Zeitverlauf (desc) die Indexposition multiplizieren kann mit dem jeweiligen eigenen erreichten Profit, da mind. der aktuelle Profitwert bei gesetzten Trailing-Stopp erreicht werden würde (+-). Beginnt die Liste daher bei 155€ und wird dann mit 150€ fortgesetzt, so kann die obersten Position nur sich selbst zum Erfolg machen d.h. 155x1. Die zweite Position aber bereits 150x2 etc. Da die Verteilung der Trades jedoch nicht linear ist, ist die einmalige Berechnung hierfür sinnvoll und der Peak leicht ermittelbar.
2023-05-12
Datengetriebene Optimierung der Strategie-Parameter
Es sind nun im Bot-Settings-Bereich alle Strategien inkl. Parametrisierung aufgeführt. Dabei können sowohl die Tagesergebnisse, als auch Wochenergebnisse betrachtet werden. Ziel ist es die Einstiegs, Break-Even und Trailing-Stopp-Niveaus zu optimieren.
Erste Erkenntnisse:
- Performance-Unterschiede sind massiv mit Anpassungen diese Parameter. Die Optimierung hierzu Bedarf aber etwas mehr Zeit und Betrachtungen.
Auswertungs-Script für die nachträgliche Analyse der Profit-Situationen
Aus den zuvor in die Logdaten geschriebenen Informationen wurden nachträglich die Profit-Daten über den Tag für jede Position geschrieben. Damit lassen sich Percentile-Werte ableiten für die Festlegung der Parameter insb. für die Aktivierung der Trailing-Stopps, ohne alle Wertstufen mit dem SimD1-SimD3-Konten durchzutesten:
2023-05-01
News-Aggregation automatisiert inkl. Kostenoptimierung bei Nutzung von GPT-4
Nachrichten werden automatisiert pro Einzelmeldung zusammengefasst und OnDemand auch aggregiert auf Tagesebene. Dabei werden die Nachrichten den Symbolen zugeordnet. Das Modell ist so erweitert, dass automatisiert nur Abfragen gegen GPT laufen, wenn Daten neu oder verändert vorliegen.
Der Datenabruf erfolgt dabei weitgehend parallelisiert, so dass der Abruf gleichzeitig zwischen KI-Aufbereitungen und bereits gespeicherten Inhalten erfolgen können. Die Antworten der KI werden dann automatisiert in der UI nachgezogen und dargestellt.
Die 8192-Token-Beschränkungen vom GPT-4-Modell über die API wird dabei automatisch eingehalten. Für spätere Nach-Analysen oder z.B. Wochenauswertungen werden alle KI-Antworten zwischengespeichert. Auch die Prompt-Strukturen liegen versioniert vor.
Trading-Log und Mirror-Trading-Log
Um Fehler-Analyse zu vereinfachen, werden die Log-Daten nun ausgegeben. Über eine Detail-Ansicht stehen dann die kompletten JSON-Logs zur Verfügung. Gleichzeitig kann über eine Suche alle relevanten Logs des Tages im Volltext durchsucht werden. Im Ergebnis erscheinen die relevanten Einträge aus den Trades und aus dem Copy-Trading.
Deadzones werde separat ausgewiesen inkl. aktuellen Konten-Settings
Damit die aktuellen Einstellungen für automatisch erstellte Deadzones nachvollziehbar sind, werden dies nun ebenfalls ausgewiesen.
Simulationskonto-Darstellung zeigt die Referenzdaten bei Mirror-Trading-Positionen
Um auch hier das Mirror-Trading nachvollziehen zu können, werden auf dem D1-Konto die Bezugs-Positionen auf den Live-Konten dargestellt. Das Setup lässt sich damit besser kontrollieren und bei Fehlern auch reagieren.
2023-04-23
Strategie-Grid-Filter für Aktivierungsstatus
Um schneller auch die Aktivierungs-Staties prüfen zu können, kann nun der Status als separater Filter benutzt werden.
Briefing: Mit Wirtschaftskalender auf der Startseite
Um einen besseren Überblick zu bekommen, werden direkt auf der Startseite die Wirtschaftsnachrichten des vorhergehenden Tages und die anstehenden News dargestellt. Das mühsame Lesen im Chart ist dabei nicht mehr notwendig.
Deadzone-Management für Seitwärtsbewegungen
Der Freitag hat mich etwas Performance gekostet, da die Märkte komplett unentschlossen sich in einer engen Grenze bewegten. Dies verursachte eine Reihe von Fehl-Signalen. "Schiebezonen" werden jetzt automatisch erkannt und als "Deadzones" markiert. In diesen Zonen werden zeitlich befristet keine neuen Trades mehr eröffnet.
Die Deadzones können vorerst nicht manuell verändert werden, da das Kernprinzip der vollständigen Automatisierung beibehalten werden soll. Die Zonen werden im Chartbild transparent mit rötlichem Balken dargestellt, um die Zonenerkennung optimisch nachvollziehen zu können.
Trades unterhalb des Chartbilds
Unterhalb der Charts werden nun alle Trades dargestellt.
2023-04-08
Logo eingeführt
Nachdem ich lange gespielt habe, welches Logo ich nutzen kann, habe ich mich nun entschieden und das Setup aktualisiert.
BES/Trailing-Stops werden dargestellt für offene Positionen
Um besser nachvollziehen zu können, welche Absicherungsmethode aktuell greift, werden die Break-Even-Stopps und die Trailing-Stopps nun direkt zusätzlich dargestellt. Gleichzeitig wird mit dem Mirror-Copy-Link-Icon dargestellt, ob eine Position auch in P1 vorhanden ist.
Dupliziere Trade
Alle Trades können nun dupliziert werden. Dies funktioniert für D1->P1, D2->P1 und auch innerhalb von P1. In P1 wird die Position damit verdoppelt.
Automatische News-Aggregation durch chatGPT 3.5 (noch) weiter optimiert
Es können nun ohne relevante Längenbeschänkungen die XTB-Broker-News automatisiert durch das KI-Sprachmodell von openAI analysiert werden. Es werden dann automatisch die Zusammenfassungen generiert und an den Ticker-Symbolen geschrieben wie bisher. Die Qualität ist durch optimierte Prompts und Nutzung einer iterativen Bewertungsmodells deutlich verbessert. Nach Freischaltung von GPT4 sollte dies nochmals besser werden können.
2023-03-26
Break-Even-Stopp & Trailing-Stopp
Es kann nun mit einer Mindestprofit z.B. 50€ automatisch ein Break-Even-Stopp gesetzt werden. Gleichzeitig kann aber eine Mindest-Profit-Größe z.B. 250€ automatisch ein Trailing-Stopp erstellt werden, der dann automatisch alle Bewegungen ohne Verzögerungen nachvollzieht.
Die Umsetzung ist ein Learning aus den sehr scharfen Bewegungen Anfang dieser Woche, wo große Gewinnpositionen durch die Geschwindigkeit der Bewegung nicht gesichert worden sind und sogar noch zu kleineren Verlusten am Anfang der Woche führten.
Optimierung der Chart-Darstellungen für Stopps, News und Entries/Exits
Die Chartdarstellungen sind nun speziell optimiert für kleine Bildschirme, so dass die große Anzahl von Einzelinformationen dennoch ablesbar sind.
Offene Positionen nun auch im Chartbild
Auch offene Positionen werden nun direkt mit im Chartbild aufgenommen und dargestellt. Diese enthalten keine [x] Referenznummer und sind dadurch nicht weiter unterschieden. Im Zusammenspiel mit den speziellen Stopp-Mechanismen ist das Setup aber so gut auch optisch zu optimieren ohne sich allein auf statistische Mittelwerte zu verlassen.
Chartdarstellungen nun gruppiert
Die Charts werden nun gruppiert nach Segmenten angezeigt und nicht alle Charts nur 1:1. Damit ist die Ladezeit deutlich reduziert und gleichzeitig ist ein schnelles Anspringen eines Chartbildes deutlich effektiver.
AUS200 als neues Symbol aktiviert
AUS200 ist mit zwei Strategien + VStop-Setup eingeführt und aktiviert.
2023-03-19
Boxplot-Charts überarbeitet
Die Charts sind überarbeitet und auch inhaltlich korrigiert, so dass für aktive und inaktive Strategien eine Betrachtung der Ergebnisse mit Box-Plots d.h. Min | Max | Q1 | Median | Q3 - Percentile vorgenommen werden kann. Die Einstellungen können für den Account und für den Zeitraum verändert werden.
chatGPT-Auswertungen deutlich optimiert
Die Verwendung ist nochmals optimiert, so dass die Textlängen im Prompt besser benutzt werden und insb. HTML-Tags bereinigt werden. Zugleich sind in den SLIDER-Elemente die dargestellten Charts verbessert und die Farben werden je nach % Veränderungen korrekt gesetzt.
Trading-Ergebnisse mit mehr Details
Die OrderIDs werden nun mitausgegeben, ebenso wie Entry/Exit-Zeitpunkte. Dies macht die Nachvollziehbarkeit der Trades deutlich besser. In der Darstellung kann das Konto verändert werden über ein Dropdownfeld.
2023-03-16
chat-GPT Einbindung für die Verdichtung der Nachrichten
Mit dem davinci-3-Modell von GTP-3-5 (4er-Modelle sind noch nicht verfügbar für mich) werden nun automatisch Zusammenfassungen für die XTB-News erstellt und an den Markt-Charts zielgerichtet ergänzt pro Symbol. Dabei wird auch eine wahrscheinliche Entwicklung angegeben.
Die jetzige Version ist noch stark eingeschränkt, da nur 4,097 Token verwendet werden können, was die Anzahl der verarbeiteten News stark einschränkt. Es wird aber sichtbar, dass eine sehr schöne Zusammenfassung direkt an den Chartbildern ergänzt werden kann. Im Kommentar wird die Entwicklungsidee dargestellt.
Das GPT-Modell-4 zeigt Ihr mit manuellem Test mit der GPT-4-Plus-Variante noch deutlich Potential. Ich stehe auf der Warteliste und hoffe auf eine baldige Freischaltung.
Markt-Slider mit Entwicklungscharts im Briefing
Es werden nun Marktentwicklungs-Charts dargestellt für die relevanten Märkte. Dabei wird auch eine % Darstellung errechnet und angezeigt.
2023-03-12
Daily-Briefing mit Wechsel auf die verschiedenen Trading-Konten
Im Hintergrund wird nun ein XTB-Account-Pooling durchgeführt. Dies beschleunigt die Zugriffe und Performance ernom mit dem Faktor 10x. Dabei ist es auch möglich zwischen den verschiedenen Konten zu wechseln.
Trade-Schließung nun direkt aus der App
Trades können nun pro Konto individuell geschlossen werden. Die Position wird dabei instant ohne Refresh der Seite geschlossen inkl. Graphen.
Kalender-Setups nun direkt auch schreibend möglich
Es können die Kalender-Trading-Einstellungen (Switches) nun nicht nur lesend benutzt werden, sondern auch schreibend.
Strategie-Setups nun mit Wunsch-Zeitraum und ebenfalls schreibender Option
Die Strategie-Einstellungen können nun auf verschiedenen Zeiträumen vorgenommen werden. In den Kacheln erscheinen die entsprechenden Statistiken aus den XTB-Accounts. Die Aktivierung kann nun auch schreibend final genutzt werden.
BoxPlots als neue Statistiken
Performance-Graphen nun für alle Trading-Konten umschaltbar
Die Performanceauswertungen können nun für Ziel-Accounts eingestellt werden.
Darstellung Transaktionen
... nun mit Symbol-Icons
2023-03-06
Trading-Mode
Das Mirror-Trading und die UI unterstützt nun verschiedene Modis mit On | Off | long-only | short-only.
2023-03-04
Strategie-Filter nach verschiedenen Symbolen und Kriterien
Die Strategien können nun unmittelbar nach sinnvollen Kombinationen gefiltert werden.
Statistiken weiter ausgebaut
Die Statistiken arbeiten nun auch mit "Datenlücken" korrekt innerhalb von Stacked-Charts. Es sind nun Performance-Auswertung nach Tageszeit, Wochentag und natürlich nach Performance über das Symbol und über die Strategie realisiert.
Neue Strategien live genommen
Es sind intern weitere Strategien aktiviert. Das Basis-Setup bleibt aber ...
Charts nun mit Stopp-Kurs-Leveln und interaktivem Chart
Die Charts zeigen nun auch die genutzten Stopp-Kurs-Level an (sehr kleine dunkle Punkt-Zonen). Zudem sind verschieden Zoom-Level aktiviert und umgesetzt für 4h, 1d, 2d und 1w.
2023-02-28
Strategie-Reports und Statistiken
Schrittweise baue ich erste Statistiken um. Rechts ist hier die Performance auf Basis von Wochentagen als Stacked-Chart ausgewertet. Stacked-Charts deshalb, um spezielle Wochenergebnisse im Ergebnis erkennen zu können. Sehr schön ist zu sehen, dass Mo, Do und Fr erfolgreiche Trading-Tage im Schnitt der letzten 2 Monate sind. Di und Mi sind eher Verlusttage.
Strategie-Ergebnisse und Filterungen
Es werden nun Abweichungen für High-Volume-Trading und Mirror-Trading-Einstellungen und der Recommendations dargestellt. Der Filter erlaubt nun die korrekte Volltext-Filterung, ebenso wie Symbol-Filterungen und für Ergebnistypen.
2023-02-26
Strategie-Grid-Board
Eine erste Version ist nun umgesetzt und die vorhandenen Strategien inkl. Basis-Statistiken und vor allem Möglichkeiten zur Anpassung der Aktivierungs-Staties sind nun ebenfalls aufgebaut. Es ist bewusst ein Card-Layout verwendet, um so eine Nutzbarkeit auch auf dem Smartphone sicherzustellen. Übergeordnet stehen Filter für Zeit, Symbole, Profit-Grenzen neben einer Volltextsuche zur Verfügung. Damit lässt sich das Setup jeweils individualisieren und anpassen.
"Noised"-Stoppkurs - Level
Stoppkurse werden automatisch durch einen eigenen Indikator gesetzt. Bisher wurden alle offenen Positionen dabei auf den gleichen Level gesetzt. Ab sofort werden diese zufällig gesetzt und dabei bei Wiederholungen dennoch immer enger zusammen gesetzt auf den Wunsch-Stopplevel durch den Indikator.
Das Setup soll Exits wie diese verhindern, wo praktisch alle Chancen gleichzeitig geschlossen werden und Folge-Bewegungen dabei nach unten praktisch vollständig nicht mitgenommen werden können.
2023-02-25
Calendar/News-Bot-Setup (lesend)
Alle anstehenden Wirtschafts-Events werden nun je nach Impact farbcodiert in einem flexiblen Kalender angezeigt. Dabei werden bereits auch die aktiven Staties für die Kalender-Steuerung des Algo-Traders mit angezeigt. Über eine eigene Description-Datenbank werden die Events zudem erklärt.
Portfolio-Performance mit % Entwicklungen
Die Portfolio-Performance ist nun ebenfalls schrittweise optimiert. Es wird nun die % Entwicklung in den Zeitebenen berechnet und angezeigt. Die Balance ist nun ein Echtzeitwert aus dem Portfolio.
Daily-Briefing-Setup inkl. Newsfeed
Wirklich gut ist jetzt das Daily-Briefing-Center geworden. Dabei wird für den S&P500 aktuell ein Market-Graph inkl. News-Events und Trades eingeblendet. Bei den Trades wird zwischen Long/Short unterschieden und Events auf dem selben Zeitpunkt werden automatisch gestappelt. Die offenen Trades sind dabei Realtime-Sichten aus dem XTB-Konto und nutzen dabei auch die von XTB verwendeten Symbole und Flaggen für einen guten Wiedererkennungswert.
Wirklich gut geworden für meine Anwendungszwecke ist dabei auch der News-Bereich. Alle XTB-News werden damit direkt zugänglich inkl. Videos und Bildern:
Mobile-Support
Kernziel der Neuentwicklung war es neben Lerneffekten hier auch es zu 100% optimal auf Tablett und Smartphone nutzen zu können. Aus meiner Sicht ist dies sehr gut gelungen:
Chart-Detail-Ansicht aller Bot-"Symbole"/Märkte
Die Kernansichten über VUE-Komponenten sind ebenfalls abgeschlossen. Das Setup kann in der Index.VUE dabei direkt parametrisiert umgesetzt werden, so dass der selbe Graph auch nativ in dem Daily-Briefing eingesetzt werden kann für einen ausgewählten Markt.
<b-row>
<b-col xl="12">
<MarketGraph :config="{ params: { account: DEFAULT_ACCOUNT, symbol: 'US100', period: DEFAULT_TF, days: DEFAULT_DAYS }, chartheight: DEFAULT_CHARTHEIGHT }"/>
<MarketGraph :config="{ params: { account: DEFAULT_ACCOUNT, symbol: 'US30', period: DEFAULT_TF, days: DEFAULT_DAYS }, chartheight: DEFAULT_CHARTHEIGHT }"/>
<MarketGraph :config="{ params: { account: DEFAULT_ACCOUNT, symbol: 'US500', period: DEFAULT_TF, days: DEFAULT_DAYS }, chartheight: DEFAULT_CHARTHEIGHT }"/>
<MarketGraph :config="{ params: { account: DEFAULT_ACCOUNT, symbol: 'US2000', period: DEFAULT_TF, days: DEFAULT_DAYS }, chartheight: DEFAULT_CHARTHEIGHT }"/>
<MarketGraph :config="{ params: { account: DEFAULT_ACCOUNT, symbol: 'DE30', period: DEFAULT_TF, days: DEFAULT_DAYS }, chartheight: DEFAULT_CHARTHEIGHT }"/>
<MarketGraph :config="{ params: { account: DEFAULT_ACCOUNT, symbol: 'UK100', period: DEFAULT_TF, days: DEFAULT_DAYS }, chartheight: DEFAULT_CHARTHEIGHT }"/>
<MarketGraph :config="{ params: { account: DEFAULT_ACCOUNT, symbol: 'EU50', period: DEFAULT_TF, days: DEFAULT_DAYS }, chartheight: DEFAULT_CHARTHEIGHT }"/>
<MarketGraph :config="{ params: { account: DEFAULT_ACCOUNT, symbol: 'HKComp', period: DEFAULT_TF, days: DEFAULT_DAYS }, chartheight: DEFAULT_CHARTHEIGHT }"/>
<MarketGraph :config="{ params: { account: DEFAULT_ACCOUNT, symbol: 'AUS200', period: DEFAULT_TF, days: DEFAULT_DAYS }, chartheight: DEFAULT_CHARTHEIGHT }"/>
<MarketGraph :config="{ params: { account: DEFAULT_ACCOUNT, symbol: 'EURUSD', period: DEFAULT_TF, days: DEFAULT_DAYS }, chartheight: DEFAULT_CHARTHEIGHT }"/>
<MarketGraph :config="{ params: { account: DEFAULT_ACCOUNT, symbol: 'GOLD', period: DEFAULT_TF, days: DEFAULT_DAYS }, chartheight: DEFAULT_CHARTHEIGHT }"/>
<MarketGraph :config="{ params: { account: DEFAULT_ACCOUNT, symbol: 'SILVER', period: DEFAULT_TF, days: DEFAULT_DAYS }, chartheight: DEFAULT_CHARTHEIGHT }"/>
<MarketGraph :config="{ params: { account: DEFAULT_ACCOUNT, symbol: 'OIL.WTI', period: DEFAULT_TF, days: DEFAULT_DAYS }, chartheight: DEFAULT_CHARTHEIGHT }"/>
<MarketGraph :config="{ params: { account: DEFAULT_ACCOUNT, symbol: 'BITCOIN', period: DEFAULT_TF, days: DEFAULT_DAYS }, chartheight: DEFAULT_CHARTHEIGHT }"/>
</b-col>
</b-row>
Volltextsuche in der Transaktionsliste
Hier in der Mobil-Ansicht gezeigt. Die Transaktionsliste kann vollständig gefiltert werden nach Strategy, Uhrzeiten, Positionen per Volltextsuche. Dies erlaubt sehr flexibel eine Reihe von Anwendungsfällen.
2023-02-16
Leider komme ich aufgrund beruflicher Verpflichtungen nur langsam voran in den Abendstunden. Dennoch ist für mich ein weiterer Meilenstein nun erreicht. Die ersten Views zeigen nun Livedaten aus XTB und aggregierten Datensichten.
Die ersten abgeschlossen Sichten sind:
Portfolio-Performance
Es werden hier die Live-Account-Kontostände mit berechneten Equity-Charts inkl. Tages-Wochenperformance aggregiert und angezeigt. Gleichzeitig werden Baselines für das Jahr im Chart gezeigt, ebenso wie auf der X-Achse zeitlich justierte wesentliche Anpassungen im XTB-Live-Trading.
Transaktionsansicht
In dieser Ansicht werden die abgeschlossenen Trades filterbar gezeigt. Dabei kann über ein Tab-Filter direkt der Tag, vorherige Tag gesondert herausgesucht werden. Die Volltext-Suche erlaubt zudem eine schnelle Eingrenzung auf Uhrzeit, OrderID, Strategie etc.
Chart-Detail-Ansicht (Entwurf)
Ebenfalls bereits weit fortgeschritten ist der Live-Trading-Chart zu ausgewählten Positionen. Hierbei sollen in Kürze über Annotations d.h. Einblendungen auch die Trades nachvollziehbar dargestellt werden. Die bisherige D3-Chartkomponente kommt in dem VUE.JS-Setup hier für mich nicht mehr zum Einsatz.
Das grundsätzliche Setup mit Navigation, Theming, AXIOS-Datenanbindung mit Node.JS-Backend stehen somit ebenfalls, so dass ich für mich sehr schön die Backend-Datenbereitstellung pflegen und einbinden kann. Dabei habe ich nach etwas Herumprobieren auch die XTB-Broker-Einbindung über Websockets realisieren können, neben der nativen Einbindung der MariaDB.
Darkmode & Mobile-Support
Hier nochmals ergänzend das sehr harmonische Zusammenspiel im Theme, wenn alle Darstellungen in den Darkmode gesetzt werden über die Konfiguration auf der Oberfläche. Der wirkliche Mehrwert entsteht aber dadurch, dass alle Funktionalitäten auch auf dem Smartphone und Tablet ohne Einschränkungen nutzbar sind. Dies war in der bisherigen Lösung nicht sichergestellt und damit für mich eine wichtige umzusetzende Anforderung.
2023-02-01
Die aktuellen Einstellungen sind so, dass bei relevanten News alle Trades geschlossen werden, 15min vor dem Ereignis und nach 60min alle positiven Trades aus der Sim-Konto nach-getradet werden. Soweit so sinnvoll. Dennoch ist praktischheute nachh 60min immer ein Umkehrpunkt gewesen, so dass die zunächst positiven Trades schnell ins Minus gelaufen sind. Ich glaube hier gibt es keine perfekte Lösung, außer die Abstände anzupassen.
Erste technische POC-Basisversion für das neue Design
Das Basis-Setup der neuen Reporting und Strategie-Settings-App stehen auf Basis VUE.JS 3/Bootstrap 5. Leider wird es noch eine Weile dauern, bis ich alles so weit umgestellt habe. Die Grundstruktur ist nun gesetzt und die Inhalte festgelegt. Die Datengrundlage existiert ja bereits durch die laufenden Mirror-Trades und der bisherigen V1-UI. Das bisherige PHP-Objektklassen-Modell soll jedoch mit VUEJS-Komponenten und einem NodeJS-Backend abgelöst werden.
Vorteile der neuen Lösung:
- Deutliche bessere technische Ausbaufähigkeit und Wartbarkeit der Lösung
- Modernes responsive Design mit Nutzbarkeit auch Mobil unterwegs (aktuell nur eingeschränkt)
2023-01-14
Schließen der Positionen nun mit Logging-Daten in der UI
Kalender-Stopp-Kennzeichnungen und Mirror-Trading
Durch Kalender-Markierungen können Positionen automatisch gemeinsam geschlossen werden. Diese Positionen können nach der Black-Period aber automatisch wieder eröffnet werden, solange auf dem Simulationskonto die Position noch im Gewinn liegt. Da keine Unterscheidung zwischen manuellen Stopps und Kalender-Event-Stopps vorhanden war, wurde die Positionen im Mirror-Trading nicht automatisch wieder neu geöffnet. Dies ist nun nachgezogen.
Manuelles Copy-Trading von der UI aus
Die Möglichkeit auch manuell einzugreifen, sollte nun ausgebaut werden insb. da auf den D2-Konten Trades laufen können, die so in D1 und damit auch nicht für P1 gespiegelt werden, weil die Strategie noch nicht global freigeschaltet wurde.
In Einzelfällen kann es aber Sinn machen sowohl auf D1 als auch aus D2-Konten eine manuelle Spiegelung der Position vorzunehmen. Dies ist nun möglich inkl. umfangreichen formatierten JSON-Logging, die dann in der UI als JSON-Tree angezeigt wird. Da das System nur für mich ist, sollte das technische Logging unproblematisch sein.
Optimierungen für Mobile-Nutzung
Über CSS-Media-Filter werden nun angepasste Designs auf kleineren Notebook-Bildschirmen bzw. speziell auf dem Mobile-Endgeräten angezeigt. Das System lässt sich damit auch unterwegs nutzen.
2023-01-08
Kurs-Delta-Analyse nach Wirtschaftsnachrichten (Kursreaktionsmuster)
Pro Kalender-Eintrag und pro ausgewähltes Symbol lässt sich nun eine direkte Kurs-Delta-Betrachtung darstellen, um so zu prüfen, wann und wir eine Kursreaktion zu einem gemeldeten Wirtschaftsindikator erfolgt ist. Trigger für mich für die Analyse war die imposante Bewegung am Freitag, nachdem die Arbeitslosenzahlen gemeldet worden sind.
Hier ist bereits zwischen 14:30 und 15:30 eine hohe Volatilität zu sehen gewesen mit Schwankungen in einer Range von bis zu 515 Punkten. Dies zerreißt so meine Standard-Stopp-Strategie. Um 15:30 wird in der 15min-Kerze dann nochmals 0.6% bzw. 243 Punkten nachgegeben, um dann endgültig eine Entscheidung nach oben zu nehmen.
Damit wäre in diesem Fall es günstig gewesen aus dem Markt fernzubleiben mit der Meldung der Arbeitslosen-Statistik und für min. 60min keinen Einstiegspunkten zu folgen auf dem P-Konto. Erst danach dürfen Signale wieder ausgewertet werden, auch auf Basis noch nicht ausgestoppter Positionen auf D1, die dann im Plus sein sollten.
Im Realkonto hatte ich den Indikator leider nicht aktiviert zur Deaktivierung des Tradings und habe damit den Handelstag in Summe negativ abgeschlossen.
Nachdem ein Indikator/Kalender-Event ausgewählt worden ist, erscheint ein neuer zusätzlicher Bericht mit Startzeitpunkt des Veröffentlichungsdatums. Damit können nachträglich systematisch die Kursreaktionsmuster geprüft werden und das bisherige Setup optimiert werden.
Mittels der ausgegebenen Tick Size (hier 0.1 für US500) in der Headline der Detailansicht kann durch Multiplikation zu den Punkte-Veränderungen der notwendige Stopp-Value geprüft werden.
Ich hoffe ich kann so systematisch die relevanten Wirtschaftsnachrichten mit einem besonderen Trading schalten. Theoretisch kann auch auf die eigentlichen Nachrichten reagiert werden. Hier erscheinen mir die Sonderbedingungen für die Interpretation zu vielfältig, dass ich es zum jetzigen Zeitpunkt automatisieren möchte.
2023-01-07
Kalender-Events lassen sich nun direkt in der UI schalten
Das Stoppen von neuen Trades und/oder High-Volume-Trades und/oder vorherige Schließen aller offenen Trades auf Basis von bevorstehenden Wirtschaftsnachrichten/Kalender lässt sich nun direkt aus der UI aktivieren. Damit steht einer nicht technischen Nutzung nichts im Wege.
Statistiktabelle mit Sortierung und Optimierungen Darstellung
Die für das Mirror-Trading aktivierten Strategien werden unterschieden nach High/Low-Volume dargestellt. Die relevanten Spalten sind nun für Sortierungen anklickbar.
Strategie-Toggle-Empfehlungen direkt in der Anzeige
Liegt ein Dismatch zwischen den Empfehlungen auf Basis der Strategieergebnisse aus dem D2-Konto (alle Strategien, kein manuelles Eingreifen) wird ein Achtungszeichen gezeigt. Dies betrifft alle Aktivierungen des D1-Kontos und die Einstellungen für High-Volume-Trading.
Die Berechnungen erfolgen immer automatisch auf Basis der D2-Ergebnisse der letzten 14 Tage. Die Empfehlungen verschieben sich dabei automatisch, wenn Strategien sich im Markt anders verhalten. Das Aktivierung erfolgt dennoch manuell, da der Erfolg der Trading-Woche daran hängen kann.
Strategie-Toggles können nun manuell direkt in der UI gesetzt werden
Um nicht mehr direkt auf der DB arbeiten zu müssen, können Strategien nun gesetzt werden.
Positionen können nun direkt in der UI geschlossen werden
Manuell geschlossene Positionen auf P-werden im Mirror-Trading nicht nochmals eröffnet
Wird in der UI oder direkt im XTB-Konto inkl. Mobile-App eine Position manuell geschlossen, wird durch das Mirror-Trading die Position nicht nochmals eröffnet, wenn diese im D1 Konto noch aktiv ist und die Trading-Rahmenbedingungen erfüllt. Es kann somit im Notfall "eingegriffen" werden, ohne die Trading-Setups grundsätzlich aussetzen zu müssen.
Statistik-Ansicht-Optimierungen
Der Wechsel zwischen Statistik-Ansicht und Trading-Board ist ohne history. Back nun nativ möglich, d.h. auch bei veränderten Statistikansichten kann ein direkter Wechsel zum richtigen Symbol, Konto und Zeitrahmen erfolgen.
Auto-Scrolling für alle Tabellen
Alle Tabellen werden nun bei Überschreiten der Maximalhöhe automatisch in ein Scrollable-Area verändert, so dass sich Daten-Strukturen nicht mehr überschreiben.
2023-01-02
Chart-Daten automatisch aktualisieren für alle Positionen
Für die Stoppkurs-Justierung werden die Chartdaten benötigt in der Datenbank für die nachfolgenden Berechnungen. Diese werden fortan automatisch "geladen" und aktualisiert. Die Stoppkurs-Justierung kann daher fortan automatisch erfolgen.
2023-01-01
Automatische Stopp-Berechnung
Mittels der 0.97 Percentile wird der Stopp-Kurs automatisch auf den Ziel-Titeln im Zusammenspiel mit den vorhandenen Kursdaten gesetzt. Es wird hierzu die Bewegungen innerhalb der Zeitfenster analysiert auf Basis der High/Low-Bewegungen. Damit ist auch eine Unterscheidung zwischen Long und Short-Trades und der sinnvollen Absicherungs-Level denkbar. Es wird dabei unterstellt, dass High-Bewegungen für Long und Low-Bewegungen für Short relevant sind. Die saubere Unterscheidung im Code erfolgt aber erst nachgelagert.
Damit wird auf folgenden Ebenen eine deutliche Optimierung erreicht:
- Stoppkurse orientieren sich auf historischen Daten
- Stoppkurse sind auf Timeframes optimiert
- Stopps für Long & Short werden unterschieden
Damit sind die Ziel-Definitionen der Stopp-Level nun auf den aktuellen Daten justiert. Eine automatische Justierung kann dann nachfolgend ebenso erfolgen.
Dies basiert dabei auf folgender Betrachtung:
Technisch musste ich hierfür noch auf MariaDB 10.6 wechseln, damit ich die Percentile-Berechnung nicht selbst als Funktion schreiben muss. Die Berechnungen sind daher sehr übersichtlich abbildbar:
SELECT `st`.`symbol` AS `symbol`,
`p`.`tf` AS `timeframe`,
`s`.`stoppOffset` AS `curr_stop`,
round(`p`.`90er_percentile_high` * `sy`.`tickSize`, 1) AS `rec_stop_long`,
-1*round(`p`.`90er_percentile_low` * `sy`.`tickSize`, 1) AS `rec_stop_short`,
`p`.`50er_percentile_high` AS `50p_high`,
`p`.`80er_percentile_high` AS `80er_high`,
`p`.`90er_percentile_high` AS `90er_high`,
`p`.`50er_percentile_low` AS `50er_low`,
`p`.`80er_percentile_low` AS `80er_low`,
`p`.`90er_percentile_low` AS `90er_low`,
round(`st`.min_high,1) AS `min_high`,
round(`st`.max_high,1) AS `max_high`,
round(`st`.avg_high,1) AS `avg_high`,
round(`st`.std_high,1) AS `std_high`,
round(`st`.min_low,1) AS `min_low`,
round(`st`.max_low,1) AS `max_low`,
round(`st`.avg_low,1) AS `avg_low`,
round(`st`.std_low,1) AS `std_low`
FROM (((
(SELECT `c`.`symbol` AS `symbol`,
`c`.`tf` AS `tf`,
percentile_disc(0.5) within GROUP (ORDER BY round(`c`.`high`, 0) asc) OVER (PARTITION BY `c`.`symbol`,`c`.`tf`) AS `50er_percentile_high`,
percentile_disc(0.8) within GROUP (ORDER BY round(`c`.`high`, 0) asc) OVER (PARTITION BY `c`.`symbol`,`c`.`tf`) AS `80er_percentile_high`,
percentile_disc(0.97) within GROUP (ORDER BY round(`c`.`high`, 0) asc) OVER (PARTITION BY `c`.`symbol`,`c`.`tf`) AS `90er_percentile_high`,
percentile_disc(0.5) within GROUP (ORDER BY round(`c`.`low`, 0) desc) OVER (PARTITION BY `c`.`symbol`,`c`.`tf`) AS `50er_percentile_low`,
percentile_disc(0.8) within GROUP (ORDER BY round(`c`.`low`, 0) desc) OVER (PARTITION BY `c`.`symbol`,`c`.`tf`) AS `80er_percentile_low`,
percentile_disc(0.97) within GROUP (ORDER BY round(`c`.`low`, 0) desc) OVER (PARTITION BY `c`.`symbol`,`c`.`tf`) AS `90er_percentile_low`
FROM `chartdata` `c`) `p`
JOIN
(SELECT `chartdata`.`symbol` AS `symbol`,
min(`chartdata`.`high`) AS `min_high`,
max(`chartdata`.`high`) AS `max_high`,
avg(`chartdata`.`high`) AS `avg_high`,
std(`chartdata`.`high`) AS std_high,
min(`chartdata`.`low`) AS `min_low`,
max(`chartdata`.`low`) AS `max_low`,
avg(`chartdata`.`low`) AS `avg_low`,
std(`chartdata`.`low`) AS std_low
FROM `chartdata`
GROUP BY `chartdata`.`symbol`) `st`)
JOIN `symbol-setups` `s`)
JOIN `symbols` `sy`)
WHERE `p`.`symbol` = `st`.`symbol`
AND `p`.`symbol` = `s`.`symbol`
AND `p`.`symbol` = `sy`.`symbol`
AND `p`.`tf` = `s`.`stoppOffSet_targetTF`
GROUP BY `p`.`symbol`,`p`.`tf`,`p`.`50er_percentile_high`,`p`.`80er_percentile_high`,`p`.`90er_percentile_high`,`p`.`50er_percentile_low`,`p`.`80er_percentile_low`,`p`.`90er_percentile_low`,`s`.`stoppOffset`
DB-Mirroring der Chartdaten in verschiedenen Timeframes
Für weitergehende Analysen insb. zur Optimierung des Stopp-Managements sollen die Chartdaten der Trading-Titel importiert werden können. Dies ist nun mit beliebigen Timeframes möglich.
2022-12-30
Automatisches Stock-Screening für P2-Konto
Da es ohnehin hierfür vorbereitet war, ist nun auch mit dem P2-Konto das zweite Produktions-Konto aktiviert für praktisch erstmal 3 Titel: Microsoft, BioNTech & ASML. Es werden automatisch nur LONG-Positionen aufgebaut über die bulls-eye-Strategie. Stopp-Kurse werden automatisch aktiviert bei Start. Das Setup ist auf ein Zeitfenster von 4h im Trading eingestellt, d.h. agiert nicht hypernervös. Positionen werden nicht geshortet (auch wenn möglich).
Die Positionen werden aktuell nur mit Minimalgrößen von jeweils 1x Position aufgebaut für den Anfang. Spätere Anpassungen sind aber wahrscheinlich.
Die Positionen werden auf dem D1/D2-Konto jeweils nicht aktiviert, da hier ausschließlich im Sinne eines "Sparplans" gearbeitet werden soll. Es werden jeweils nur Positionen "dazu" aufgebaut.
Timeframe anpassbar
Der Chart kann nun beliebig im Zeitfenster angepasst werden. Dies ermöglicht primär auch die Einordnung auf übergeordnete Zeiteinheiten.
Wirtschaftsindikatoren mit optionaler Erklärung bei Mouse-Over
Ich kann mir aktuell die genauen Erläuterungen der Wirtschaftsindikatoren noch nicht merken und zeigen deshalb ein Info-Screen an.
Detail-Informationen für hinterlegte News-Trading-Einstellungen
Die hinterlegten no-Trade-Events können direkt in der Tabelle eingesehen und kontrolliert werden mit den spezifischen Möglichkeiten alle Trades im Zeitraum vor- und nach Veröffentlichung von Wirtschaftsnachrichten zu sperren, High-Volume-Trades auf Low-Volume-Trades umzuwandeln und alle offenen Trades zuvor automatisch zu schließen.
2022-12-29
Darstellungen im Dashboard optimiert
Doppel-Trades die aber technisch "ausgeblendet" sind, werden nun auch im Chart nicht mehr dargestellt.
Direkter Wechsel zwischen den Konten
Produktionskonto für Aktien-Investments/Trades separat eröffnet
Ich möchte gerne parallel aber möglichst nicht von Tagesschwankungen beeinflusst Aktien-Investments vornehmen. Dies sollte auf dem 2. Produktionskonto erfolgen. Das ganze Dashboarding ist so angepasst, dass auch das P2-Konto betrachtet werden kann. Dies ist hier im Normalfall wenig spektakulär.
Praxis-Lauf
Trades im D2-Simulationskonto (alle Trades ohne Einschränkungen)
Trades, die im D1-Konto erfolgt sind auf Basis des bisherigen Performance-Verhaltens der Strategie über Aktivierungs-Flags. Diese werden am Wochenende geschaltet.
Und am Ende des Produktions-Konto mit "Mirror-Trading" auf dem D2-Konto. Damit werden nur Positionen übernommen, die mind. 10€ im Plus gelaufen sind. Dadurch geht natürlich auch Performance verloren, Miss-Trades werden aber ebenso reduziert.
Wochenanalyse in den Statistiken
Die Tabellen-Elemente können jeweils ein- und ausgeklappt werden. Die Abstände zur Darstellung von sehr vielen Einträgen sind zudem reduziert.
2022-12-28
Strategie-Setup
Nach 2 Tagen-Erfahrung im Setup habe ich das Setup jetzt so umgestellt, dass es doch 3stufig bleibt d.h.
- Komplett-Trading auf D2
- Auf Basis D2-Statistiken Aktivierung von D1-Setups
- Auf Produktion wird das Mirror-Trading auf Basis der D2-Trades aktiviert
Statistik-Boards
Die Boards zeigen jetzt nicht nur eine visuelle Sicht, sondern auch die zugehörigen Grunddaten in Tabellen an inkl. Min, Max, Avg-Werten. Daneben wird eine Tagesanalyse der Gesamtergebnisse angezeigt. Damit liegen dann alle notwendigen Vergleiche für weitere Analysen vor.
Die Aktivierung & Deaktivierung von Strategien muss weiterhin über das Backend erfolgen und kann noch nicht über das FE direkt eingegeben werden.
2022-12-25
Copy-Trading
Ich habe lange nach einer Möglichkeit gesucht die verlustreichen Seitwärtsbewegungen als auch die Hoch-Volatilitäts-Trades bei Wirtschaftsnachrichten zu umgehen. Die Idee ist es nun grundsätzlich es gar nicht zu versuchen, aber das Trading zunächst in eine Simulations-Umgebung zu nehmen und erst bei erfolgreicher Durchführung nach einem bestimmten Zeitraum, wird dann die bisher simulierte Position in das Echt-Depot übernommen.
Dies hat zwei Vorteile:
- Es wird zunächst abgewartet, welche Positionen wirklich ins Plus laufen
- Es wird nicht mehr zwingend eine wöchentliche Justierung der Strategie-Toggles benötigt, da zunächst alle Strategien laufen und die "erfolgreichen" werden kopiert.
Das Setup wird dabei kombiniert mit der Möglichkeit das Trading anzupassen, wenn High-Impact-Nachrichten vorliegen. Entsprechend wird dann mit einer Vor-und Nachlaufzeit in Minuten zur eigentlichen Veröffentlichung der Daten/Presse-Konferenz das Trading gänzlich eingestellt, alle Positionen zuvor geschlossen und/oder alle Positionen nur mit verringertem Volumen eingegangen. Auf dem Ausgangsdepot bleibt die Position natürlich in voller Höhe.
Die Kernbedingungen für die Übernahme sind konkret:
- Keine Kalender-Einträge mit vorgegebenen Einschränkungen z.B. zur Deaktivierung von Trades etc. Die Tabelle wird dabei auf Basis von definierten Filtern gegen die vorhandenen Kalender-Einträgen verglichen.
... im Vergleich zu den Kalender-Einträgen für die Wirtschaftsdaten:
- Trades auf dem Konto müssen grundsätzlich ins Plus gelaufen sein mit einem minimalen Profit-Zielwert z.B. 10€ zum Zeitpunkt der Prüfung (aktuell Prüfung alle 5min, evtl. später erst alle 15min). Der genaue Wert muss noch in der Praxis justiert werden.
- Positionen aus der Simulation haben maximal 60m Zeit ins Plus zu laufen. Danach gilt die Position als irrelevant für eine "Übernahme"
Das Setup ist soweit live und ich bin gespannt, wie es sich in der Praxis verhält.
Weitere Besonderheiten:
- Alle Aktivitäten werden "mitgeloggt", so dass das Copy-Trading-Setup ein eigenes Monitoring zur Nachvollziehbarkeit besitzt insb. da nicht jede Aktivität sofort zu einem neuen Trade führt.
- Um die Nachvollziehkarkeit und spätere Zeichen-Objekte anlegen zu können, wird ein "source_account" und "source_xtb_orderID" an der Trade-Tabelle mitgeführt. Damit sind neue Positionen auf Basis von Copy-Trading referenzierbar und sogar im Chart zeichenbar d.h. woher die Position "ursprünglich" erstellt worden ist und mit welchem Zeitversatz und hoffentlich Vorteil die Position dann auch übernommen worden ist.
Thesen:
- Trotz des Systems kann eine Position jederzeit drehen und dennoch ins Minus laufen. Die ursprünglichen Stopp-Loss-Werte werden daher übernommen und auch die automatischen Stopp-Moves (vstops) sind auch für die Copy-Trades gültig und werden aktiviert.
- Grundsätzlich sollten alle wahrscheinlich "profitablen" Handelsstrategien genutzt werden. Mittels dem Copy-Trading können dann ohne weiteres die relevanten Positionen übernommen werden. Die wöchentliche Feinjustierung der Aktivierungen und Mid-/Highvolume-Strategien entfällt wahrscheinlich erstmal.
- Das Setup geht davon aus, dass jedes XTB-Konto als Trading-Quelle dienen kann. Damit ist es auch möglich zunächst D2 für alle Trading-Signale zu verwenden, D1 auf Basis von Wochenergebnisse zu justieren und die Produktion P1 dann auf D1 zu setzen. Ich starte aber erstmal mit D2 direkt.
2022-12-22
Kalender-Anzeige mit anstehenden Wirtschaftsdaten und Forecast/Current-Werten
Mit dem Ziel bestimmte Handels-Events auszusetzen bzw. das Trading in dem Moment automatisch zu justieren, sind jetzt von XTB die Handelskalender synchronisiert und in eigene Datentabellen übernommen, so dass der Algotrader damit arbeiten kann. In der ersten Version sind zunächst die Daten erstmal importiert und automatisch angezeigt.
Es sind folgende Toggles vorgesehen pro Kalendereintrag. Es kann damit im Vorfeld von anstehenden Handels-Events eine Feinjustierung des Tradings vorgenommen werden ohne manuell einzugreifen. Das Ziel ist tatsächlich keinerlei manuelle Anpassungen oder Aktionen in der Ziel-Ausbaustufe zu haben. Es soll nur noch um Feinjustierung gehen.
- toggle_deactivate_new_trades
- toggle_deactivate_high_volume_trades
- toggle_refresh_stopploss
System heute extrem erfolgreich
Es laufen 2 Demo-Konten und ein 1x Praxiskonto mit dem System. Betrachte ich das Demokonto, wo ich keinerlei Eingriffe vornehmen, so steht hier ein Tagesergebnis von 5.200€ an.
Hier auch nochmals als Zahlenwerte:
Um den Erfolg zu sehen hier nochmals als Beispiel der US2000-Chart. Es sind die Strategie-Einstiege und Ausstiege, Stoppkurse und Ergebnisse zu sehen. Das System hat dabei sowohl die komplette Short-Welle als auch bereits erste Long-Positionen am Wendepunkt eingegangen.
System-Trennung zwischen Bridge und App
Um weitere Ausbaustufen sauber durchführen zu können sind die Bridge und die App (Chart-Funktionen und Statistiken) nun voneinander getrennt. Die Entwicklungen können daher unabhängig voneinander erfolgen.
Verknüpfung zwischen App-Dashboard und Statistiken
Zwischen den beiden Kern-Views sind nun Sprünge/Querverweise unter Beibehaltung der Parameter-Einstellungen möglich. Dies erleichtert die Nutzung etwas und erzwingt keine unnötigen Bookmark-Listen.
2022-12-21
Auto-Strategie-Justierung per Script
Es ist jetzt für mich möglich neben der visuellen Darstellung der Strategie-Ergebnisse auch per Script (später wahrscheinlich in die UI integriert) die profitablen Trades für die Produktion zu aktivieren und/oder das High-Volume-Positions-Größen für eine Strategie freizuschalten. Im System unterscheide ich weiterhin zwischen Normal und High-Volume-Strategien, insb. um noch zwischen Simulation und Produktion eine Zwischenstufe zu haben:
UPDATE `strategy-toggle` s
LEFT JOIN (SELECT SUM(v.norm_profit) as sum_profit, AVG(v.norm_profit) AS avg_profit, MIN(strategy) AS strategy, MIN(symbol) AS symbol FROM strategy_results_view v
WHERE v.`TYPE`='D2'
AND v.exit_time>="2022-12-18"
GROUP BY strategy, symbol) jt
ON s.strategy=jt.strategy AND s.symbol=jt.symbol
SET s.activate_p1=
CASE
WHEN jt.avg_profit > 50 OR s.strategy='vstop' THEN 1
ELSE 0
END,
s.activate_high_volume=
CASE
WHEN jt.sum_profit > 100 THEN 1
ELSE 0
END
Für den Vergleich wird dabei nicht das 1:1 Volumen verwendet, sondern eine normalisierte Profit-Variante. Dies dient dem Abgleich, wenn auch auf einem Demokonto zunächst nur die normale Volume-Positionierung verwendet worden ist. Dies ist dann aber nicht vergleichbar mit den anderen Strategien die vielleicht schon auf High-Volume laufen.
Daten-Synchronisation zwischen XTB und TradingView
Die Datentabellen werden jetzt statt in 3s in 0.3s abgeglichen. Ich habe die bisherigen Statements für mich zusammengeführt in einer Routine.
-- update xtb-trade-comments with help of orginal tradingview-trades
UPDATE `xtb-trades` xt
JOIN (SELECT CONCAT(strategy, ": ", symbol, ": ", timeframe, "m") AS COMMENT,
`create`,
`symbol`,
`strategy`,
`account`,
`xtb_orderid`,
`cmd`,
`timeframe` FROM `trades`) t
ON (xt.comment='[S/L]' OR xt.comment IS NULL OR xt.comment='' or xt.xtb_orderid='')
AND xt.symbol=t.symbol
AND TIMESTAMPDIFF(SECOND, t.`create`, xt.entry_time) BETWEEN -10 AND 10
AND t.strategy<>'vstop' AND t.account=xt.account
SET xt.comment = t.comment,
xt.strategy = t.strategy,
xt.xtb_orderid= t.xtb_orderid,
xt.cmd = t.cmd,
xt.manual_stop =
CASE
WHEN xt.manual_stop THEN 1
ELSE 0
END;
2022-12-20
Box-Plot-Diagramme eingeführt
Ich kann so für alle aktuell konfigurierten und laufenden Strategien nicht nur ein Min-Max-Media-Betrachtung, sondern auch einer Percentile-Betrachtung der Datenverteilung der Tagesergebnisse vornehmen. Jeder Datenpunkt ist damit das Trading-Ergebnis innerhalb einer Strategie.
Quelle: Chat-GPT :)
Ein Boxplot, auch als Box-and-Whisker-Diagramm bezeichnet, ist ein Diagramm, das verwendet wird, um die Verteilung von Daten zu visualisieren. Es besteht aus einer Box, die die obere und untere Quartile des Datensatzes darstellt, sowie Linien, die als "Whisker" bezeichnet werden, die die Spannweite der Daten darstellen.
Hier ist eine Anleitung, wie Sie ein Boxplot-Diagramm lesen können:
Die Box selbst repräsentiert den Bereich, in dem die Hälfte der Daten liegt. Der obere Rand der Box gibt das obere Quartil an, während der untere Rand das untere Quartil darstellt. Die Linie in der Mitte der Box wird als Median bezeichnet und gibt den Wert an, der genau in der Mitte des Datensatzes liegt.
Die Linien, die als "Whisker" bezeichnet werden, zeigen die Spannweite der restlichen Daten an. Sie reichen von dem niedrigsten Wert, der nicht als Ausreißer gilt, bis zum höchsten Wert, der nicht als Ausreißer gilt.
Ausreißer werden als einzelne Punkte dargestellt und liegen außerhalb der Whisker. Sie können verwendet werden, um extreme Werte im Datensatz zu identifizieren.
Vergleichen Sie die Boxplots verschiedener Gruppen, um Unterschiede in der Verteilung der Daten zu erkennen. Wenn die Boxen unterschiedlich breit sind, kann dies darauf hinweisen, dass die Daten in einer Gruppe stärker verbreitet sind als in einer anderen. Wenn die Boxen unterschiedlich hoch sind, kann dies darauf hinweisen, dass die Werte in einer Gruppe im Durchschnitt höher oder niedriger sind als in einer anderen.
2022-12-18
Umstellung der Entwicklungsumgebung
Eigentlich wollte ich mit dem Setup nur spielen. Mittlerweile ist die Codebasis aber bereits größer geworden, so dass ich intern auf eine IntelliJ-IDE umgestellt habe. Damit läuft die VCS, Deployment, Debugging, Datenbank-Mgmt, Entwicklung, SSH-Console an einer Stelle zusammen.
Ich habe zuvor HandsOn mit UltraEdit gearbeitet, was auch bereits Code-Folding, SSH und Deployment-Features mitbringt.
Persistierung der Strategie-Setups
Die bisherige einfache README für alle Konfigurations-Setups für die Strategien, die so in TradingView hinterlegt werden müssen, damit die Bridge korrekt arbeitet, ist nun strukturiert abgelegt.
2022-12-12
Automatisch nachlaufende Stopps (vStopps) über Volatilitäts-Indikatoren
- Aktivierung der vStops kann bereits mit 0.2% Change erfolgen
Ableitungen:
- Aktivierungslevel in TradingView angepasst
- Im Trading-Chart werden die Stopp-Level gezeichnet und nachgeführt
Annotations endlich direkt im Chart mit den Strategie-Details zu den Einstiegszeitpunkten
Ich habe endlich eine Möglichkeit gefunden in den D3-Charts auch Annotations zu platzieren und über eine einfachen Positionierungsmechanismus bei mehreren Trade-Einstiegen zu einem Zeitpunkt kollisionsfreie Darstellungen zu ermöglichen. Dies erleichtert das Lesen und Arbeiten mit dem Trading-Setup enorm.
Der Code erklärt hier schneller den Aufbau als längerer Text. Hier für mich auch einmal als Zwischenversion (auch wenn der Code ohnehin in einer Versionsverwaltung steht):
$data .= '{
note: {
label: "'.($trade->cmd==0?'long':'short').',vol:' . $trade->trade_volume .($trade->calculated_profit<>0?', '.number_format($trade->calculated_profit,1).'€':''). '",
title: "' . $trade->strategy. '",
fontSize: 9,
wrap: 300
},
connector: {
end: "dot",
type: "line",
lineType : "vertical",
endScale: 10
},
color: ["' . ($trade->calculated_profit> 0 ? 'green' : ($trade->calculated_profit< 0 ?'red':'black')) . '"],
x: x(parseDate("' . $trade->create . '")),
y: y(' . $trade->price . '),
dy: ' . ($trade->cmd == 0 ? 85 : -35) . ',
dx: ' . ($trade->cmd == 0 ? $distance+20: $distance) . '
}, ';
2022-12-10
Erste Tests von neuen automatischen Stopp-Modellen
- Trailing-Stopps sind gut um bei schwankenden Märkten hier schnell ins Plus zu laufen. Sie verhindern bei einem normalen Setup aber wirkliche Gewinne
- Manuelle Trading-Setups sollten vermieden werden
- Trading-Größe ist unter Umständen den Marktgegebenheiten/Volatilität anzupassen
Ableitungen:
- Einführung von neuen vStopp-Alerts
- Nutzung ausschließlich von normalen Initial-Stopps
- Alle Trading-Setups sind auf Mid-Chance-Volume umgestellt
- Versuch keine manuellen Trades durchzuführen, da diese und letzte Woche empfindlich schlecht dadurch gelaufen sind