Numero di operazioni da WF Matrix
Nota: è disponibile una versione aggiornata per SQX Build 140 e successive - vedere lo snippet allegato.
Questo snippet Java aggiunge una nuova funzionalità alle colonne della banca dati e consente di calcolare il numero di scambi di tutte le combinazioni di una matrice WF.
/*
* Copyright (c) 2017-2018, StrategyQuant - Tutti i diritti riservati.
*
* Il codice contenuto in questo file è stato realizzato in buona fede, in modo che sia corretto e faccia ciò che dovrebbe.
* Se avete trovato un bug in questo codice O avete un suggerimento di miglioramento O volete includere
* un vostro frammento di codice nella nostra libreria standard, contattateci all'indirizzo:
* https://roadmap.strategyquant.com
*
* Questo codice può essere utilizzato solo all'interno dei prodotti StrategyQuant.
* Ogni proprietario di una licenza valida (gratuita, di prova o commerciale) di qualsiasi prodotto StrategyQuant
* è autorizzato a utilizzare, copiare, modificare o fare lavori derivati da questo codice senza limitazioni,
* da utilizzare in tutti i prodotti StrategyQuant e condividere le sue modifiche o i suoi lavori derivati
* con la comunità StrategyQuant.
*
* IL SOFTWARE VIENE FORNITO "COSÌ COM'È", SENZA GARANZIE DI ALCUN TIPO, ESPRESSE O IMPLICITE,
* INCLUSE, A TITOLO ESEMPLIFICATIVO, LE GARANZIE DI COMMERCIABILITÀ, IDONEITÀ PER UN PARTICOLARE
* SCOPO E NON VIOLAZIONE. IN NESSUN CASO GLI AUTORI POTRANNO ESSERE RITENUTI RESPONSABILI PER QUALSIASI RECLAMO, DANNO
* O ALTRA RESPONSABILITÀ, SIA IN UN'AZIONE CONTRATTUALE, CHE IN UN ILLECITO O ALTRO, DERIVANTI DA,
* DA O IN RELAZIONE AL SOFTWARE O ALL'USO O AD ALTRI RAPPORTI CON IL SOFTWARE.
*
*/
pacchetto SQ.Columns.Databanks;
importare com.strategyquant.lib.L;
import com.strategyquant.tradinglib.DatabankColumn;
importare com.strategyquant.tradinglib.ResultsGroup;
importare com.strategyquant.tradinglib.SettingsKeys;
importare com.strategyquant.tradinglib.ValueTypes;
importare com.strategyquant.tradinglib.WalkForwardResult;
import com.strategyquant.tradinglib.optimization.WalkForwardMatrixResult;
public class NumberOfTradeWF extends DatabankColumn {
public NumberOfTradeWF() {
super(L.tsq("# di scambi WF"), DatabankColumn.Integer, ValueTypes.Aproximate, 0, 0, 100);
setWidth(70);
setTooltip(L.tsq("Numero di operazioni WF"));
// questo significa che il valore dipende dal numero di giorni di negoziazione
// e deve essere normalizzato per giorni quando viene confrontato con un altro
// risultato con un numero diverso di giorni di negoziazione
setDependentOnTradingPeriod(true);
}
//------------------------------------------------------------------------
@Override
public String getValue(ResultsGroup results, String resultKey, byte direction, byte plType, byte sampleType) throws Exception {
/*
* Codice di esempio per ottenere il valore stat del risultato WF
* ----------------------------------------------------
* ----------------------------------------------------
* ----------------------------------------------------
*/
//Recuperare i risultati della matrice WF
WalkForwardMatrixResult mwfResult = (WalkForwardMatrixResult) results.mainResult().get(SettingsKeys.WalkForwardResult);
if(mwfResult==null) {
restituisce "NA";
}
/*
* WalkForwardMatrixResult opt params
* public int start1;
public int stop1;
public int incremento1;
public int start2;
public int stop2;
int pubblico 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; //run
//Ottiene un risultato WF specifico dalla matrice
WalkForwardResult wfResult = mwfResult.getWFResult(param1, param2);
/*
* Statistiche calcolate per il risultato WalkForwardResult
* public SQStats stats = null; //Statistiche del campione completo
* public SQStats statsOOS = null; //OOS stats
* public SQStats statsStability = null; //La stabilità delle statistiche
* public SQStats statsScore = null; //Il punteggio delle statistiche
* public SQStats statsSpecial = null; //Le statistiche speciali
*/
//Ritornare il valore calcolato delle statistiche
restituire wfResult.stats.getInt("NumberOfTrades")+"";
}
}
Eccellente Tomas !!!!!
Buona idea!
Grazie 🙂 🙂 🙂 🙂