Mitschrift der Kodierungssitzung vom 26/10/2021

Die erste Coding-Session war ein erfolgreiches Experiment, vielen Dank an EmanuelE, beetrader, clonex für eure Fragen und den Chat.

Wir werden mit Codierungssitzungen fortfahren
alle zwei Wochen, immer zur Monatsmitte und zum Monatsende.

Die nächste Coding-Session findet am 18. November um 14:00 Uhr MEZ statt, das ist 13:00 Uhr Londoner Zeit, 8 Uhr New Yorker Zeit, 5 Uhr San Franciscoer Zeit, 0:00 Uhr Sydneyer Zeit.

Alle Menschen, die die Formular für das Interesse an einer Coding-Session werden über jede nächste Sitzung benachrichtigt (bis sie sich von der Sitzungs-Mailingliste abmelden), wenn Sie eine Einladung erhalten möchten, füllen Sie bitte das Formular hier.

Abschrift der Codierungssitzung - es handelt sich nicht um eine 100%-Übereinstimmung, sondern sie ist gefiltert und zur besseren Lesbarkeit nach dem Thema der Frage gruppiert.

 

Aufruf von externen Programmen - Python, #F - aus SQ

Beetrader
(2) Wie kann ich ein externes Skript wie F# oder ein Python-Skript als Teil des benutzerdefinierten Projekts hinzufügen? (3) Gibt es eine Möglichkeit, SQX und eine Datenbank wie mysql oder Microsoft SQL über JDBC zu verbinden?

EmmanuelE
Bee, das ist eine interessante Frage. Einige .Net-Java-Brücken sind im Internet verfügbar. Es wäre interessant zu sehen, wie man eine dll in SQX enthalten.
Ich benutze ML.Net Bibliothek, ich möchte wissen, ob es möglich ist, ML.Net Bibliothek in SQX über eine Brücke zu implementieren .net-java

Mark
Hallo Emmanuel - Aufruf von .NET aus Java - ehrlich gesagt habe ich es noch nicht ausprobiert, ich habe mit Python experimentiert. Es sollte sehr ähnlich sein.
Der Beispielartikel zu Python von SQ ist hier veröffentlicht: https://strategyquant.com/doc/programming-for-sq/calling-python-from-sq-java-introduction/
Das zweite Beispiel mit der Verwendung von ProcessBuilder kann verwendet werden, um ein beliebiges externes Skript oder Programm aufzurufen. Es ist nicht spezifisch für SQ, SQ-Snippets sind in Java geschrieben, so dass Sie nach Java-Beispielen für den Aufruf von .NET oder etwas anderem suchen können.
Wenn Sie eine Brücke benötigen und eine benutzerdefinierte JAR-Bibliothek zu SQ hinzufügen möchten, gibt es einen Artikel darüber: https://strategyquant.com/doc/programming-for-sq/using-custom-jar-libraries/

EmmanuelE
In der Tat ist es wie jede andere Sprache, wir müssen nur am Anfang "import xx.yy" einfügen, ich denke, wir können jede DLL importieren, wie jedes Java-Programm
Es wäre interessant, Daten, Objekte (Signale, Indikatoren) direkt von einer Handelssoftware zu SQX zu übertragen.
Python kann hilfreich sein, ich benutze ML .NET, es ist sehr ähnlich. und es gibt viele Verbesserungen in ML .NET
Ich arbeite viel mit Neuronalen Netzwerken

Mark (SQ)
Ich bin mir nicht sicher, ob es so einfach ist. Im Allgemeinen können Sie benutzerdefinierte Methoden aus benutzerdefinierten Java JAR-, Python- oder .NET-Bibliotheken in SQ-Snippets aufrufen, aber Sie sollten wissen, was Sie tun. Es ist nicht so einfach, einen benutzerdefinierten Indikator zu erstellen, der in anderem Code berechnet wird - es ist technisch möglich, aber es könnte sehr langsam sein.
Was die Verwendung neuronaler Netze angeht, so hängt es davon ab, was genau Sie mit SQ und NN machen wollen. Wenn Sie genauer beschreiben, was Sie tun wollen, kann ich vielleicht darüber nachdenken, wie man es machen kann

EmmanuelE
Ich habe eine Brücke zwischen NET Java : https://www.javonet.com/about/what-is-javonet/

Mark (SQ)
ja, es gibt Möglichkeiten, .NET von Java aus aufzurufen, das selbst ist kein Problem. Das "Problem" ist, wie Sie Ihre Bibliothek mit SQ verbinden können, das hängt davon ab, was genau Sie tun wollen

 

Entwicklung eines neuen Monte-Carlo-Tests

Beetrader
(1) Wie kann ich SQX so erweitern, dass ich einen anderen Monte-Carlo-Permutationstest zusätzlich zu den 2 eingebauten Tests implementieren kann. Ich denke an die Implementierung des Permutationstests von Tim Masters?

Mark
Ich bin mit den genauen Algorithmen seiner Permutationstests nicht vertraut - macht er Permutationen der sich ergebenden Abschlüsse oder etwas anderes?
In jedem Fall können Sie sich ansehen, wie die aktuellen MC-Tests implementiert sind - der Quellcode jedes Tests ist verfügbar.
Wenn Sie genauer beschreiben, was Sie tun möchten, kann ich Ihnen einige Tipps geben
Ich kann Ihnen in dieser Live-Sitzung am besten helfen, wenn Sie mir genauer beschreiben, was genau Sie tun wollen - im Falle von MC-Test die Beschreibung des zu implementierenden Algorithmus. Oder wenn Sie schon angefangen haben, dann die Codeschnipsel, die Sie bisher haben und auf welches Problem Sie gestoßen sind.
Ich kann nur allgemeine Antworten auf allgemeine Fragen geben.
Aber ich werde versuchen, mir Tim Masters Permutationstest anzusehen, wenn es meine Zeit erlaubt, und ihn in der Niederschrift dieses Chats veröffentlichen

Beetrader
Er vertauscht die Zeitreihen, bevor er sie in den Algo einspeist. Er verwendet Logarithmen, um Unterschiede z. B. bei den Schlusskursen zu finden, randomisiert diese und erstellt die Zeitreihe neu.

EmmanuelE
Ich sehe, wir können Indikatoren, Signale, Spalte der Datenbank entwickeln. Können wir auf den Handel zugreifen, um eine neue Art von Test zu implementieren? Können wir einen neuen Cross-Check hinzufügen?
Ist die Monte-Carlo-Kreuzprobe als Beispiel verfügbar?

Mark (SQ)
können Sie viel mehr als das erweitern. Ja, Sie können ganz einfach eine neue Monte-Carlo-Methode erstellen, es gibt bereits ein Beispiel in unserer Codebasis: https://strategyquant.com/codebase-category/mc-retest/
Auf diese Weise können Sie eine neue Simulationsmethode für MC hinzufügen.
Außerdem ist der vollständige Quellcode aller vorhandenen Monte-Carlo-Tests im Code-Editor in SQ verfügbar.

EmmanuelE
Ausgezeichnet !!!!!!!!!!!!!!!!! Ich habe nach dieser Information gesucht !!!

Mark (SQ)
Sie können auch auf die Strategiegeschäfte oder sogar auf einen Stapel von Strategien zugreifen, um Ihre eigene Analyse durchzuführen. Dies geschieht am besten mit dem Snippet CustomAnalysis als Teil des Arbeitsablaufs des benutzerdefinierten Projekts, ein Beispiel: https://strategyquant.com/doc/programming-for-sq/example-per-strategy-custom-analysis/
Die benutzerdefinierte Analyse kann nach Beendigung Ihres Builders oder Retesters ausgeführt werden, sie kann ihre eigene Analyse durchführen und (zum Beispiel) die Strategien löschen, die Ihre Validierung nicht bestanden haben. Oder verwenden Sie JDBC, um eine Verbindung zu Ihrer Datenbank herzustellen und dort etwas hochzuladen

EmmanuelE
Das ist großartig !!!!!!
Wir können eine Menge tun !!!!

Mark (SQ)
ja, es gibt viele Dinge, die SQ tun kann, die noch nicht gut dokumentiert sind, wir versuchen, sie zu verbessern

EmmanuelE
Dies bietet eine große Flexibilität !!!!!
Gibt es einen Code, mit dem wir ein Portfolio erstellen können?
Gibt es einen Code für den Walk Forward Test?

Clonex
Ja, es ist möglich, mit WFO zu arbeiten. Wir fügen so schnell wie möglich Beispiele hinzu - in der 1. Hälfte des Monats November.

EmmanuelE
Es wäre hilfreich zu sehen, wie die Strategien von einem Lauf zum nächsten ausgewählt werden.
Ich möchte ein Portfolio mit den WF-Handelsergebnissen erstellen

Mark (SQ)
Meinen Sie ein Portfolio von WF-Aktien?

EmmanuelE
ja

Mark (SQ)
sollte es möglich sein. Am einfachsten ist es, dies in einem benutzerdefinierten Analyseschnipsel zu tun, ich werde ein Beispiel dafür geben

Beispiel für die Erstellung eines Portfolios aus WF-Ergebnissen: Pro Datenbank benutzerdefiniertes Analyse-Snippet.

Verknüpfung von SQ und Datenbank

beetrader
(3) Gibt es eine Möglichkeit, SQX und eine Datenbank wie mysql oder Microsoft SQL über JDBC zu verbinden?

Mark (SQ)
Im Allgemeinen ja, aber was genau verknüpfen? Möchten Sie Daten für Backtests aus der DB laden oder Strategieergebnisse in der DB speichern?

Beetrader
Ich möchte die Ergebnisse in einer Datenbank speichern, damit ich später Vergleiche mit Live-Aktionen durchführen kann. Derzeit mache ich dies manuell in der Qualitätssicherung.

Mark (SQ)
Wollen Sie dies in SQ tun? Es ist möglich, mit Custom Analyse Snippet, aber was genau wollen Sie in der Datenbank zu speichern? Strategie Ergebnisse, oder Trades?

Beetrader
Im Idealfall möchte ich alles in der Datenbank speichern. Ich weiß, ich kann die Strategie xml speichern, in diesem Fall muss ich nur eine benutzerdefinierte Aufgabe erstellen, um die xml zu lesen und zu speichern, was ich in der Datenbank will?

Mark (SQ)
Ja, und Sie können alles andere auf dieselbe Weise speichern. Sie haben Zugang zu den Metriken (Nettogewinn, # der Trades usw.) sowie zu einer vollständigen Liste der Trades für jede Strategie in der Datenbank.
Sehen Sie sich das Beispiel für die benutzerdefinierte Analyse hier an: https://strategyquant.com/doc/programming-for-sq/example-per-strategy-custom-analysis/
kann sie für jede Strategie in der Datenbank aufgerufen werden. Dann holt man sich einfach die Dinge aus der ResultsGroup und speichert sie

Die Strategie mit all ihren Daten wird im ResultsGroup-Objekt gespeichert: https://strategyquant.com/doc/programming-for-sq/working-with-resultsgroup/
Die benutzerdefinierte Analyse kann nach Beendigung des Builders oder Retesters oder als Teil eines benutzerdefinierten Projekts ausgeführt werden. Sie kann ihre eigene Analyse durchführen und (zum Beispiel) die Strategien löschen, die Ihre Validierung nicht bestehen. Oder verwenden Sie JDBC, um eine Verbindung zu Ihrer Datenbank herzustellen und dort etwas hochzuladen
Auch hier sind die SQ Snipppets in reinem Java, so dass Sie einfach Code hinzufügen können, um eine Verbindung zu Ihrer Datenbank über JDBC herzustellen und dort zu speichern, was immer Sie wollen.

 

QuantAnalyzer - Martingale MM-Simulation

Beetrader
Wie kann ich ein Martingal-Geldmanagement in Quant Analyser erstellen? Ich habe versucht, dem bestehenden Code zu folgen, konnte aber keine Möglichkeit finden, auf frühere Trades zu verweisen.

Mark (SQ)
Sie haben Recht, man kann sich im MM nicht auf frühere Trades beziehen, ich muss darüber nachdenken - wenn es irgendwie möglich ist. Ich werde eine bessere Antwort und vielleicht ein Beispiel im Chatprotokoll posten

EmmanuelE
Ich habe das gleiche, ich möchte auch eine andere Geldverwaltung mit einer anderen Art von Kauf/Verkauf/Hedge erstellen.

EmmanuelE
Ich muss auch auf den vorherigen Handel verweisen, um mehrere Geschäfte zu eröffnen.

Beetrader
Ich habe einige Beispiele geschickt, wie wir die Dokumentation verbessern können. Wenn Sie eine Möglichkeit haben, Beispiele von Nutzern einzureichen, können Sie diese überprüfen, bevor Sie sie in die Api-Dokumentation aufnehmen.

An dieser Antwort wird noch gearbeitet, sie wird in den nächsten Tagen veröffentlicht.

 

Aktualisieren der Builder-Konfiguration während der Ausführung

Beetrader
SQ in der benutzerdefinierten Projekte gibt es eine Möglichkeit, den Builder Aufgabe mit der Ausgabe von einem früheren sagen pythong Skript, das z. B. Bereiche, die ich als Stop-Loss und Take-Profit verwenden möchten berechnet aktualisieren.

Mark (SQ)
es sollte möglich sein, aber es wird ziemlich knifflig sein. Ich muss mir ansehen, wie man es macht, ich werde versuchen, ein Beispiel dafür zu machen.

An dieser Antwort wird noch gearbeitet, sie wird in den nächsten Tagen veröffentlicht.

Abonnieren
Benachrichtigen Sie mich bei
2 Kommentare
Älteste
Neuestes Meistgewählt
Inline-Rückmeldungen
Alle Kommentare anzeigen
Hemmo
17. 11. 2021 9:36 Uhr

Einige aktuelle Informationen zu den Permutationstests von Timothy Masters können Sie im Better System Trader-Podcast anhören:
https://www.youtube.com/watch?v=1RKz9v_0WDo&t=3191s

Emmanuel
20. 11. 2021 1:26 Uhr

Danke Mark, diese Sitzung war wirklich hilfreich.

Lesen Sie weiter