Número de negociações da WF Matrix
Observação - há uma versão atualizada para o SQX Build 140 e superior - veja o snippet em anexo.
Esse snippet Java adiciona uma nova funcionalidade de coluna de banco de dados e permite que você calcule o número de negociações de todas as combinações de uma matriz WF.
/* * Copyright (c) 2017-2018, StrategyQuant - Todos os direitos reservados. * * O código neste arquivo foi criado de boa-fé, garantindo que está correto e faz o que deveria. * Se você encontrou um bug neste código OU tem uma sugestão de melhoria OU deseja incluir * seu próprio trecho de código em nossa biblioteca padrão, entre em contato conosco em: * https://roadmap.strategyquant.com * * Este código pode ser usado somente em produtos StrategyQuant. * Todo proprietário de uma licença válida (gratuita, de teste ou comercial) de qualquer produto StrategyQuant * tem permissão para usar, copiar, modificar ou fazer trabalhos derivados desse código livremente, sem limitações, * para ser usado em todos os produtos StrategyQuant e compartilhar suas modificações ou trabalhos derivados * com a comunidade StrategyQuant. * * O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, * INCLUINDO, MAS NÃO SE LIMITANDO A, GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO * FINALIDADE ESPECÍFICA E NÃO VIOLAÇÃO. EM NENHUMA HIPÓTESE OS AUTORES SERÃO RESPONSÁVEIS POR QUALQUER REIVINDICAÇÃO, DANO * OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, * DECORRENTES DE, FORA DE OU EM CONEXÃO COM O SOFTWARE OU COM O USO OU OUTRAS NEGOCIAÇÕES COM O SOFTWARE. * */ package SQ.Columns.Databanks; import com.strategyquant.lib.L; import com.strategyquant.tradinglib.DatabankColumn; import com.strategyquant.tradinglib.ResultsGroup; import com.strategyquant.tradinglib.SettingsKeys; import com.strategyquant.tradinglib.ValueTypes; import com.strategyquant.tradinglib.WalkForwardResult; import com.strategyquant.tradinglib.optimization.WalkForwardMatrixResult; public class NumberOfTradeWF extends DatabankColumn { public NumberOfTradeWF() { super(L.tsq("# of trades WF"), DatabankColumn.Integer, ValueTypes.Aproximate, 0, 0, 100); setWidth(70); setTooltip(L.tsq("Number of trades WF")); // isso significa que o valor depende do número de dias de negociação // e precisa ser normalizado por dias ao ser comparado com outro // resultado com um número diferente de dias de negociação setDependentOnTradingPeriod(true); } //------------------------------------------------------------------------ @Override public String getValue(ResultsGroup results, String resultKey, byte direction, byte plType, byte sampleType) throws Exception { /* * Código de amostra para obter o valor estatístico do resultado do WF * ---------------------------------------------------- * ---------------------------------------------------- * ---------------------------------------------------- */ //Recuperar os resultados da matriz WF WalkForwardMatrixResult mwfResult = (WalkForwardMatrixResult) results.mainResult().get(SettingsKeys.WalkForwardResult); se(mwfResult==null) { return "NA"; } /* * Parâmetros opt de WalkForwardMatrixResult * public int start1; public int stop1; public int increment1; public int start2; public int stop2; public int increment2; for(int j=mwfResult.start2; j<=mwfResult.stop2; j+=mwfResult.increment2) { for(int i=mwfResult.start1; i<=mwfResult.stop1; i+=mwfResult.increment1) { WalkForwardResult wfResult = mwfResult.getWFResult(i, j); } } */ int param1 = mwfResult.start1; //oos int param2 = mwfResult.start2; //run /Obter um resultado WF específico da matriz WalkForwardResult wfResult = mwfResult.getWFResult(param1, param2); /* * Estatísticas calculadas do WalkForwardResult * public SQStats stats = null; //Estatísticas completas da amostra * public SQStats statsOOS = null; /Estatísticas de OOS * public SQStats statsStability = null; /Estabilidade das estatísticas * public SQStats statsScore = null; /A pontuação das estatísticas * public SQStats statsSpecial = null; /As estatísticas especiais */ //Retornar o valor calculado das estatísticas return wfResult.stats.getInt("NumberOfTrades")+""; } }
Excelente Tomas !!!!!
Boa ideia!
Obrigado 🙂 🙂 🙂 🙂