Debug di una variabile in AlgoWizard
Se creiamo un modello o eseguiamo una strategia in AlgoWizard, a volte abbiamo bisogno di visualizzare la variabile in un log per poter eseguire il debug.
Abbiamo questa funzione fdebug nel CodeEditor, ci serviva una funzione simile in AlgoWizard.
Ecco una funzione fDebug per inviare la variabile a un file di log.
1/ Per installarlo, dobbiamo importare questa SQExtension V2 nel CodeEditor e riavviare SQX.
2/ Per eseguirlo in AlgoWizard, basta cliccare su "Aggiungi regola" , selezionare Se allora / OnBarUpdate (vedi Cattura4a)
Nel se le condizioni, selezionare la condizione in cui la funzione stamperà la variabile sul log
vedere "Cattura4a" e "Cattura2a" in allegato.
In Poi l'azione , assegnare una variabile con la funzione Debug. È possibile selezionare questa funzione mentre si modifica un file nuovo stato
vedere "Cattura3" in allegato
Questa funzione utilizza la funzione fdebug di java per inviare il risultato al log di StrategyQuant in questa directory: "\StrategyQuantX135\user\log\StrategyQuant".
Un esempio di output è
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
Ho allegato un esempio di con una regola di debug, si deve sostituire la variabile6 con una qualsiasi variabile che si desidera osservare. (La variabile6 è solo una variabile vuota per mostrare questo esempio).
È possibile attivare la modalità Debug su commutando il tasto "Modalità Debug" parametro a 1. StrategyQuant rallenterà per scrivere il registro sul disco rigido.
È possibile disattivare il Debug attivando la modalità "Modalità Debug" parametro a 0 per far funzionare il computer.
(In AlgoWizard vedi "Cattura5" e nel retester vedi "Cattura6-7-8-9" allegato per modificare i parametri di una strategia)
Spero che questo possa aiutare la comunità di StrategyQuant.
pacchetto SQ.Blocks.Functions; importare SQ.Internal.ValueBlock; importare com.strategyquant.lib.*; importare com.strategyquant.datalib.*; importare com.strategyquant.tradinglib.*; @BuildingBlock(name="(Deb) Debug", display="Debug(#varName# , #Value#)", returnType = ReturnTypes.PriceOrNumber) @Help("Registra su file NomeVar, Valore") @SortOrder(1700) @IgnoreInBuilder public class Debug extends ValueBlock { @Parametro(defaultValue="Var : " ) @Help("Nome della variabile") public String varName; @Parametro @Help("Valore della variabile") public IBlock Valore; //------------------------------------------------------------------------ @Override public double OnBlockEvaluate(int relativeShift) throws TradingException { fdebug("Debug ", varName + Value.evaluateBlock(relativeShift)); restituisce 1; } }
Sembra che Capture 8 e 9 siano uguali.
Puoi per favore ricaricare le immagini?
Grazie mille.
Grazie per il commento, ho rimosso l'acquisizione 9, che non era utile.
Nota importante :
Ho sviluppato questo Snippet per eseguire il debug delle variabili all'interno di SQX/AlgoWizard.
Non è stato realizzato per Metatrader, easylanguage, powerlanguage.output del codice sorgente.
SQX/AlgoWizard non produrrà alcun codice sorgente finché si utilizza questa funzione di debug.
Inoltre, la funzione di debug scrive dati di log sul disco rigido e rallenta la ricerca di SQX.
Per questo motivo, non appena il modello o la strategia vengono sottoposti a debug, è meglio rimuovere la funzione di debug dalla strategia o dal modello.