17. 1. 2022

5 3

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;
    }
}

 

Abbonarsi
Notificami
3 Commenti
Il più vecchio
Più recente I più votati
Feedback in linea
Visualizza tutti i commenti
ytu
ytu
29. 12. 2021 23:23

Sembra che Capture 8 e 9 siano uguali.
Puoi per favore ricaricare le immagini?
Grazie mille.