17. 1. 2022

5 3

Depurar uma variável em AlgoWizard

Se criarmos um modelo ou executarmos uma estratégia no AlgoWizard, precisamos, às vezes, emitir a variável em um log para poder depurá-la.

Temos esta função de fdebug no CodeEditor, precisávamos de uma função similar no AlgoWizard.

 

Aqui está uma função fDebug para emitir a variável para um arquivo de log.

 

1/ Para instalá-lo, precisamos importar este SQExtension V2 no CodeEditor e reiniciar o SQX.

2/ Para executá-lo em AlgoWizard, basta clicar em "Adicionar regra". selecione Se então / No BarUpdate   (ver Capture4a)

 

No se as condiçõesselecionar a condição em que a função imprimirá a variável no log

ver "Capture4a" e "Capture2a" em anexo

 

Em Então Ação atribuir uma variável com a função Debug. Podemos selecionar esta função enquanto editamos um nova condição 

ver "Captura3" em anexo

 

Esta função está usando a função fdebug em java para produzi-la no log de StrategyQuant neste diretório: "StrategyQuantX135}user`logStrategyQuant".

Um exemplo de saída é

19:51:54.087 [Bloqueio do computadorLinha comum #26 - Builder_2-Generation 3.0.61] INFO c.s.tradinglib.debug.Debugger - fDebug - Var : 0
19:51:54.087 [Bloqueio do computadorLinha comum #17 - Builder_2-Generation 3.0.43] INFO c.s.tradinglib.debug.Debugger - fDebug - Var : 0

 

 

Eu anexei um exemplo de estratégia com uma regra de debug, você tem que substituir a variável6 por qualquer variável que você queira observar. (Variable6 é apenas uma variável vazia para mostrar este exemplo)

 

Você pode ativar o modo Debug em trocando o "DebugModeparâmetro para 1. StrategyQuant vai diminuir a velocidade para escrever o registro no disco rígido.

Você pode desativar o Debug ligando o modo "DebugModeparâmetro para 0 para deixar o computador funcionar.

(Em AlgoWizard ver "Capture5" e No retester ver "Capture6-7-8-9" anexo para mudar o parâmetro de uma estratégia)

 

Espero que isto ajude a StrategyQuant Community.

 

pacote SQ.Blocos.Funções;

importação 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 , Valor")
@SortOrder(1700)
@IgnoreInBuilder

classe pública Debug estende o Bloco de Valor
{

    @Parameter(defaultValue="Var : " )
    @Help("Nome da Variável")
    varName de corda pública;

    @Parameter
    @Help("Valor da Variável")
    valor público do IBlock;

    
    //------------------------------------------------------------------------
    
    @Override
    público duplo OnBlockEvaluate(int relativeShift) joga TradingException
    {
        fdebug("Debug", varName + Value.evaluationBlock(relativeShift));
        retorno 1;
    }
}

 

Assine
Notificação de
3 Comentários
Mais antigo
Novidades Mais Votados
Feedbacks em linha
Ver todos os comentários
ytu
ytu
29. 12. 2021 11:23 pm

Parece que as Capturas 8 e 9 são as mesmas.
Você pode, por favor, recarregar as imagens?
Muito obrigado.