Déboguer une variable dans AlgoWizard
Si nous créons un modèle ou exécutons une stratégie dans AlgoWizard, nous avons parfois besoin d'afficher la variable dans un journal pour pouvoir la déboguer.
Nous avons cette fonction fdebug dans l'éditeur de code, nous avions besoin d'une fonction similaire dans AlgoWizard.
Voici une fonction fDebug pour afficher la variable dans un fichier journal.
1/ Pour l'installer, nous devons importer cette SQExtension V2 dans le CodeEditor et redémarrer SQX.
2/ Pour le faire fonctionner dans AlgoWizard, il suffit de cliquer sur "Ajouter une règle" , sélectionner If Then / OnBarUpdate (voir Capture4a)
Dans le cadre de la si les conditionsSélectionnez la condition dans laquelle la fonction imprimera la variable dans le journal.
voir "Capture4a" et "Capture2a" ci-jointes
En Ensuite, l'action , assigner une variable avec la fonction Debug. Nous pouvons sélectionner cette fonction lorsque nous éditons un état neuf
voir "Capture3" ci-joint
Cette fonction utilise la fonction fdebug en java pour l'afficher dans le journal de StrategyQuant dans ce répertoire : "\NStrategyQuantX135\Nuser\NStrategyQuant".
Voici un exemple de résultat
19:51:54.087 [Blocking computeThread common #26 - Builder_2-Generation 3.0.61] INFO c.s.tradinglib.debug.Debugger - fDebug - Var : 0
19:51:54.087 [Blocking computeThread common #17 - Builder_2-Generation 3.0.43] INFO c.s.tradinglib.debug.Debugger - fDebug - Var : 0
J'ai joint un exemple de avec une règle de débogage, vous devez remplacer la variable6 par n'importe quelle variable que vous voulez observer. (Variable6 n'est qu'une variable vide pour illustrer cet exemple)
Vous pouvez activer le mode Debug sur en commutant le bouton "Mode débogage" paramètre à 1. StrategyQuant ralentira pour écrire le journal sur le disque dur.
Vous pouvez désactiver la fonction Debug en activant le mode "Mode débogage" paramètre à 0 pour faire fonctionner l'ordinateur.
(En AlgoWizard voir "Capture5" et dans le retester voir "Capture6-7-8-9" attaché pour changer le paramètre d'une stratégie)
J'espère que cela aidera la communauté StrategyQuant.
package 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("Nom de la variable") public String varName ; @Paramètre @Help("Valeur de la variable") public IBlock Value ; //------------------------------------------------------------------------ @Override public double OnBlockEvaluate(int relativeShift) throws TradingException { fdebug("Debug ", varName + Value.evaluateBlock(relativeShift)) ; return 1 ; } }
Il semble que les captures 8 et 9 soient identiques.
Pouvez-vous, s'il vous plaît, télécharger à nouveau les images ?
Merci beaucoup.
Merci pour votre commentaire, j'ai supprimé Capture 9, cette capture n'était pas utile.
Remarque importante :
J'ai développé ce Snippet pour déboguer les variables dans SQX/AlgoWizard.
Il n'est pas conçu pour Metatrader, easylanguage, powerlanguage.source code output.
SQX/AlgoWizard ne produira aucun code source tant que vous utiliserez cette fonction de débogage.
En outre, la fonction de débogage écrit des données de journal sur votre disque dur et ralentit la recherche de SQX.
C'est pourquoi, dès que votre modèle ou votre stratégie est débogué, il est préférable de supprimer la fonction de débogage de votre stratégie ou de votre modèle.