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")+"";
}
}
¡¡¡¡¡Excelente Tomas !!!!!
Buena idea.
Gracias 🙂 🙂 🙂