Dokumentation

Anwendungen

Zuletzt aktualisiert am 17. 6. 2020 von Mark Fric

Protokollierung und DebugConsole

Die DebugConsole in StrategyQuant X soll das Debuggen/Protokollieren erleichtern, wenn Sie Ihre eigenen Snippets im SQ CodeEditor entwickeln.

Es ist einfach zu bedienen und ermöglicht es Ihnen zu sehen, was "hinter den Kulissen" vor sich geht, wenn Ihr Snippet ausgeführt wird.

 

Wie man sie im Code verwendet

Es sind zwei Methoden verfügbar:

Fehlersuche(Kategorie, Nachricht)
protokolliert die Nachricht auf einer Debug-Konsole (mehr dazu später)

und

fdebug(Kategorie, Nachricht)
protokolliert die Meldung in einer Standard-Protokolldatei unter /user/log/StrategyQuant

Beide Methoden haben die gleichen zwei Parameter:

  • Kategorie (string)- Name der Protokollierungskategorie - wenn Sie mehrere Debug-Meldungen haben, können Sie diese kategorisieren, um die Meldungen nach Kategorien zu ordnen
  • Nachricht (string) - eine zu protokollierende Textnachricht

Hinweis - die Funktionen debug() und fdebug() sollten in allen Snippet-Klassen ab Build 128 verfügbar sein. In Build 128 fehlen diese Methoden in Indikator-Klassen, so dass Sie alternative Aufrufe verwenden können:
debug() -> DebugConsole.log()
log() -> Log.info()

 

Beispiel für die Verwendung

Wir werden einem CCI-Indikator eine Protokollierung hinzufügen, und zwar zu seinem OnBarUpdate() Methode, bei der die Indikatorwerte berechnet werden:

@Override
protected void OnBarUpdate() throws TradingException {
    averageCalculator.onBarUpdate(Input.get(0), CurrentBar);
    
    if (AktuellerBalken == 0) {
        Value.set(0, 0);
    }
    sonst {
        double mean = 0;
        double sma = averageCalculator.getValue();
        
        for (int idx = Math.min(CurrentBar, Period - 1); idx >= 0; idx--) {
            mean += Math.abs(Input.get(idx) - sma);
        }
        
        if(mean < 0.0000000001) {
            Wert.set(0, 0);
        } else {
            double cci = (Input.get(0) - sma) / (mean == 0 ? 1 : (0,015 * (mean / Math.min(Period, CurrentBar + 1))));
            Value.set(0, cci);

            debug("CCI", "CCI-Wert ist: "+cci);
        }
    }
}

 

Beachten Sie, dass wir nur eine Zeile hinzugefügt haben:

debug("CCI", "Der CCI-Wert ist: "+cci);

Wir haben debug() Methode, so dass die protokollierten Meldungen zu einer speziellen Debug-Konsole hinzugefügt wurden, die oben rechts unter dem Debug-Symbol zu finden ist:

DebugConsole-Symbol

Wenn Sie es öffnen, nachdem Sie einen Test einer Strategie mit CCI-Indikator ausgeführt haben, sehen Sie, dass die Meldungen protokolliert wurden:

DebugConsole angezeigt

 

 

War dieser Artikel hilfreich? Der Artikel war nützlich Der Artikel war nicht nützlich

4 Kommentare
Älteste
Neueste Meistbewertet
Emmanuel
24. 11. 2021 9:54 Uhr

wenn ich den Befehl fdebugfunktioniert, kann ich die Ausgabe im Protokoll sehen, aber wenn ich Fehlersuche in der Debug-Konsole erscheint nichts

Ich kann keine andere Kategorie als "alle" auswählen.

SteveChou
14. 3. 2023 6:45 a.m.

Ist diese Methode nun gescheitert? Weil sie nicht verwendet werden kann
Fehlersuche(Kategorie, Nachricht) und fdebug(Kategorie, Nachricht) direkt im Code-Editor.

Emmanuel
21. 4. 2023 11:50 vormittags

seltsamer Titel : Protokollierung und DebugColsole

Shelton Mariwa Paulino
17. 11. 2024 10:27 p.m.

Hallo,
Ich versuche, etwas Ähnliches zu tun: Logging Spread. Allerdings gibt meine .mp5-Datei einen Fehler beim Kompilieren. Weiß jemand, was ist das Problem mit dem Code?
Vielen Dank!

Pseudocode ("Spread" als Doppelvariable):

//——————————————————————–
// Handelsregel: Variable zuweisen (bei Bar Open)
//——————————————————————–          
wenn Ist die Bar geöffnet
{
    // Aktion #1
    Verbreitung = Spread in Pips("Aktuell");
}

//——————————————————————–
// Handelsregel: Aufzeichnung (bei geöffneter Bar)
//——————————————————————–          
wenn Ist die Bar geöffnet
{
    // Aktion #1
   In Datei protokollieren: "NQ_spread.txt", “”Die derzeitige Spanne beträgt, "+Spread";}

Dies ist die Nachricht, die ich in das LogToFile-Nachrichtenfeld geschrieben habe:

"aktuelle Spanne ist "+Spanne