17. 1. 2022

5 3

Depurar una variable en AlgoWizard

Si creamos una plantilla o ejecutamos una estrategia en AlgoWizard, necesitamos, a veces, mostrar la variable en un registro para poder depurarla.

Tenemos esta función fdebug en el CodeEditor, necesitábamos una función similar en AlgoWizard.

 

He aquí una función fDebug para enviar la variable a un archivo de registro.

 

1/ Para instalarlo, necesitamos importar esta SQExtension V2 en el CodeEditor y reiniciar SQX.

2/ Para ejecutarlo en AlgoWizard, basta con hacer clic en "Añadir regla" seleccione If Then / OnBarUpdate   (véase Captura4a)

 

En el si las condicionesseleccione la condición en la que la función imprimirá la variable en el registro

ver "Capture4a" y "Capture2a" adjuntos

 

En Entonces Acción asignar una variable con la función Depurar. Podemos seleccionar esta función mientras editamos un nuevo estado 

véase "Capture3" adjunto

 

Esta función está utilizando la función fdebug en java a la salida al registro de StrategyQuant en este directorio : "\StrategyQuantX135\user\log\StrategyQuant"

Un ejemplo de salida es

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

 

 

Adjunto un ejemplo de con una regla de depuración, tienes que reemplazar variable6 por cualquier variable que quieras vigilar. (Variable6 es sólo una variable vacía para mostrar este ejemplo)

 

Puede activar el modo Debug en cambiando el "DebugMode" parámetro a 1. StrategyQuant se ralentizará para escribir el registro en el disco duro.

Puede desactivar la depuración activando la tecla "DebugMode" parámetro a 0 para que el ordenador funcione.

(En AlgoWizard ver "Captura5" y En el retester ver "Captura6-7-8-9" adjunto para cambiar el parámetro de una estrategia)

 

Espero que esto ayude a la Comunidad StrategyQuant.

 

paquete SQ.Blocks.Functions;

importar 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("Registrar en fichero NombreVar , Valor")
@SortOrder(1700)
@IgnorarEnConstructor

public class Debug extends ValueBlock
{

    @Parámetro(defaultValue="Var : " )
    @Help("Nombre de la variable")
    public String varName;

    @Parámetro
    @Help("Valor de la Variable")
    public IBlock Valor;

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

 

Suscríbase a
Notificar a
3 Comentarios
Más antiguo
Más reciente Más votados
Feedbacks de Inline
Ver todos los comentarios
ytu
ytu
29. 12. 2021 11:23 pm

Parece que Capture 8 y 9 son iguales.
¿Puedes volver a subir las imágenes?
Muchas gracias.