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; } }
Parece que Capture 8 y 9 son iguales.
¿Puedes volver a subir las imágenes?
Muchas gracias.
Gracias por tu comentario, he eliminado la captura 9 , esta captura no era útil
Nota importante :
He desarrollado este Snippet para depurar variables dentro de SQX/AlgoWizard.
No está hecho para Metatrader, easylanguage, powerlanguage.salida de código fuente.
SQX/AlgoWizard no producirá ningún Código Fuente mientras esté utilizando esta función de depuración .
Además, la función de depuración está escribiendo datos de registro en tu disco duro y ralentizando la investigación de SQX.
Esta es la razón por la cual, tan pronto como su plantilla o estrategia sea depurada, es mejor eliminar la función de depuración de su estrategia o Plantilla.