17. 1. 2022

5 3

Debuggen einer Variable in AlgoWizard

Wenn wir eine Vorlage erstellen oder eine Strategie in AlgoWizard ausführen, müssen wir manchmal die Variable in einem Protokoll ausgeben, um sie debuggen zu können.

Wir haben diese fdebug-Funktion im CodeEditor, wir brauchten eine ähnliche Funktion in AlgoWizard.

 

Hier ist eine Funktion fDebug um die Variable in eine Protokolldatei auszugeben.

 

1/ So installieren Sie es, müssen wir diese SQExtension V2 im CodeEditor importieren und SQX neu starten.

2/ So führen Sie es aus in AlgoWizard, klicken Sie einfach auf "Regel hinzufügen" auswählen If Then / OnBarUpdate   (siehe Capture4a)

 

In der wenn BedingungenWählen Sie die Bedingung aus, unter der die Funktion die Variable in das Protokoll ausgeben soll.

siehe "Capture4a" und "Capture2a" im Anhang

 

Unter Dann Aktion eine Variable zuweisen mit der Funktion Debuggen. Wir können diese Funktion auswählen, wenn wir eine neuer Zustand 

siehe "Capture3" im Anhang

 

Diese Funktion verwendet die fdebug-Funktion in Java, um sie in das Protokoll von StrategyQuant in diesem Verzeichnis auszugeben: "\StrategyQuantX135\user\log\StrategyQuant"

Ein Beispiel für eine Ausgabe ist

19:51:54.087 [Blockierung computeThread common #26 - Builder_2-Generation 3.0.61] INFO c.s.tradinglib.debug.Debugger - fDebug - Var : 0
19:51:54.087 [Blockierung computeThread common #17 - Builder_2-Generation 3.0.43] INFO c.s.tradinglib.debug.Debugger - fDebug - Var : 0

 

 

Ich habe ein Beispiel für Strategie mit einer Debug-Regel, müssen Sie Variable6 durch eine beliebige Variable ersetzen, die Sie beobachten wollen. (Variable6 ist nur eine leere Variable, um dieses Beispiel zu zeigen)

 

Sie können aktivieren Sie den Debug-Modus auf durch Umschalten des "DebugMode" Parameter zu 1. StrategyQuant wird langsamer, um das Protokoll auf die Festplatte zu schreiben.

Sie können Deaktivieren Sie das Debugging Modus ein, indem Sie die Taste "DebugMode" Parameter zu 0 um den Computer laufen zu lassen.

(In AlgoWizard siehe "Capture5" und Im Retester siehe "Capture6-7-8-9", um die Parameter einer Strategie zu ändern)

 

Ich hoffe, dass dies der StrategyQuant-Community helfen wird.

 

Paket SQ.Blocks.Functions;

import SQ.Internal.ValueBlock;

import com.strategyquant.lib.*;
import com.strategyquant.datalib.*;
import com.strategyquant.tradinglib.*;

@BuildingBlock(name="(Deb) Debug", display="Debug(#varName# , #Value#)", returnType = ReturnTypes.PriceOrNumber)
@Help("Log to file VarName , Value")
@SortOrder(1700)
@IgnoreInBuilder

public class Debug extends ValueBlock
{

    @Parameter(defaultValue="Var : " )
    @Help("Name der Variablen")
    public String varName;

    @Parameter
    @Help("Wert der Variablen")
    public IBlock Wert;

    
    //------------------------------------------------------------------------
    
    @Override
    public double OnBlockEvaluate(int relativeShift) throws TradingException
    {
        fdebug("Debug ", varName + Value.evaluateBlock(relativeShift));
        return 1;
    }
}

 

Abonnieren
Benachrichtigen Sie mich bei
3 Kommentare
Älteste
Neuestes Meistgewählt
Inline-Rückmeldungen
Alle Kommentare anzeigen
ytu
ytu
29. 12. 2021 11:23 Uhr

Capture 8 und 9 scheinen identisch zu sein.
Können Sie die Bilder bitte erneut hochladen?
Vielen Dank.