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; } }
Capture 8 und 9 scheinen identisch zu sein.
Können Sie die Bilder bitte erneut hochladen?
Vielen Dank.
Danke für Ihren Kommentar, ich habe Capture 9 entfernt, dieses Capture war nicht nützlich
Wichtiger Hinweis:
Ich habe dieses Snippet entwickelt, um Variablen in SQX/AlgoWizard zu debuggen.
Es ist nicht für Metatrader, easylanguage, powerlanguage.source code Ausgabe gemacht.
SQX/AlgoWizard wird keinen Quellcode erzeugen, solange Sie diese Debug-Funktion verwenden.
Darüber hinaus schreibt die Debug-Funktion Protokolldaten auf Ihre Festplatte und verlangsamt die Forschung von SQX.
Deshalb ist es besser, die Debug-Funktion aus Ihrer Strategie oder Vorlage zu entfernen, sobald Ihre Vorlage oder Strategie debugged ist.