29. 5. 2024

5 1

Número de operaciones de la matriz WF

Nota - hay una versión actualizada para SQX Build 140 y superiores - ver fragmento adjunto.

 

Este fragmento de Java añade una nueva funcionalidad de columna de banco de datos y permite calcular el número de operaciones de todas las combinaciones de una matriz WF.

/*
 * Copyright (c) 2017-2018, StrategyQuant - Todos los derechos reservados.
 *
 * Código en este archivo se hizo de buena fe que es correcto y hace lo que debe.
 * Si has encontrado un error en este código O tienes una sugerencia de mejora O quieres incluir
 * su propio fragmento de código en nuestra biblioteca estándar por favor póngase en contacto con nosotros en:
 * https://roadmap.strategyquant.com
 *
 * Este código sólo se puede utilizar en los productos StrategyQuant.
 * Todo propietario de una licencia válida (gratuita, de prueba o comercial) de cualquier producto StrategyQuant
 * está autorizado a utilizar, copiar, modificar o hacer trabajos derivados de este código libremente y sin limitaciones,
 * para ser utilizado en todos los productos StrategyQuant y compartir sus modificaciones o trabajos derivados
 * con la comunidad StrategyQuant.
 *
 * EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA,
 * INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN DETERMINADO
 * PROPÓSITO Y NO INFRACCIÓN. EN NINGÚN CASO SERÁN LOS AUTORES RESPONSABLES DE CUALQUIER RECLAMACIÓN, DAÑO
 * U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, EXTRACONTRACTUAL O DE OTRO TIPO, QUE SURJA DE,
 * O EN RELACIÓN CON EL SOFTWARE O EL USO U OTRAS OPERACIONES CON EL SOFTWARE.
 *
 */
paquete SQ.Columns.Databanks;

importar 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 NúmeroDeComercioWF extends DatabankColumna {
    
	public NúmeroDeComercio() {
		super(L.tsq("# de operaciones WF"), DatabankColumn.Integer, ValueTypes.Aproximate, 0, 0, 100);

		setWidth(70);
		
		setTooltip(L.tsq("Número de operaciones WF"));

		// esto significa que el valor depende del número de días de negociación
		// y tiene que normalizarse por días al compararlo con otro
		// resultado con diferente número de días de negociación
		setDependentOnTradingPeriod(true);
	}
	
	//------------------------------------------------------------------------

	@Override
	public String getValue(ResultsGroup results, String resultKey, byte direction, byte plType, byte sampleType) throws Exception {
		/*
		 * Código de ejemplo para obtener el valor stat del resultado WF
		 * ----------------------------------------------------
		 * ----------------------------------------------------
		 * ----------------------------------------------------
		 */
		
		//Recuperar los resultados de la matriz WF
		WalkForwardMatrixResult mwfResult = (WalkForwardMatrixResult) results.mainResult().get(SettingsKeys.WalkForwardResult);
		if(mwfResult==null) {
			return "NA";
		}
				
		/*
		 * WalkForwardMatrixResult opt params
		 * public int inicio1;
			public int parada1;
			public int incremento1;
			public int inicio2;
			public int parada2
			public int incremento2;
			
			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; //ejecutar
		
		//Obtener un resultado WF específico de la matriz
		WalkForwardResult wfResult = mwfResult.getWFResult(param1, param2);
		
		/*
		 * Estadísticas calculadas de WalkForwardResult
		 * public SQStats stats = null; //Estadísticas completas de la muestra
		 * public SQStats statsOOS = null; //Estadísticas OOS
		 * public SQStats statsStability = null; //Estabilidad de las estadísticas
		 * public SQStats statsScore = null; //La puntuación de las estadísticas
		 * public SQStats statsSpecial = null; //La estadística especial
		 */
		
		//Devuelve el valor calculado de stats
		return wfResult.stats.getInt("NumberOfTrades")+"";
	}
		
}

 

1 Comentario
Más antiguo
Más reciente Más votados
Emmanuel
4. 9. 2024 14:19

¡¡¡¡¡Excelente Tomas !!!!!
Buena idea.
Gracias 🙂 🙂 🙂