29. 5. 2024

5 1

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

 

1 Commento
Vecchi
Più recenti Le più votate
Emmanuel
4. 9. 2024 2:19 pm

Eccellente Tomas !!!!!
Buona idea!
Grazie 🙂 🙂 🙂 🙂