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 🙂 🙂 🙂 🙂