29. 5. 2024

5 1

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")+"";
	}
		
}

 

Inscrever-se
Notificar de
1 Comentário
mais antigos
mais recentes Mais votado
Feedbacks embutidos
Ver todos os comentários
Emmanuel
4. 9. 2024 2:19 pm

Excelente Tomas !!!!!
Boa ideia!
Obrigado 🙂 🙂 🙂 🙂