29. 5. 2024

5 1

Anzahl von Geschäften aus der WF-Matrix

Hinweis: Es gibt eine aktualisierte Version für SQX Build 140 und höher - siehe beigefügtes Snippet.

 

Dieses Java-Snippet fügt eine neue Datenbankspaltenfunktionalität hinzu und ermöglicht es Ihnen, die Anzahl der Trades aller Kombinationen einer WF-Matrix zu berechnen.

/*
 * Copyright (c) 2017-2018, StrategyQuant - Alle Rechte vorbehalten.
 *
 * Der Code in dieser Datei wurde in dem guten Glauben erstellt, dass er korrekt ist und das tut, was er soll.
 * Wenn Sie einen Fehler in diesem Code gefunden haben ODER Sie haben einen Verbesserungsvorschlag ODER Sie wollen
 * Ihren eigenen Codeschnipsel in unsere Standardbibliothek aufnehmen möchten, kontaktieren Sie uns bitte unter:
 * https://roadmap.strategyquant.com
 *
 * Dieser Code kann nur innerhalb von StrategyQuant-Produkten verwendet werden.
 * Jeder Besitzer einer gültigen (kostenlosen, Test- oder kommerziellen) Lizenz für ein StrategyQuant-Produkt
 * darf diesen Code ohne Einschränkungen frei verwenden, kopieren, modifizieren oder davon abgeleitete Arbeiten erstellen,
 * in allen StrategyQuant-Produkten zu verwenden und seine Modifikationen oder abgeleiteten Arbeiten
 * mit der StrategyQuant-Gemeinschaft zu teilen.
 *
 * DIE SOFTWARE WIRD "SO WIE SIE IST" ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE GARANTIE, WEDER AUSDRÜCKLICH NOCH IMPLIZIT,
 * EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GARANTIEN DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN
 * ZWECK UND NICHTVERLETZUNG VON RECHTEN DRITTER. IN KEINEM FALL SIND DIE AUTOREN HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN
 * ODER ANDERE HAFTUNG, OB IN EINER KLAGE AUS VERTRAG, UNERLAUBTER HANDLUNG ODER ANDERWEITIG, DIE AUS,
 * AUS ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER NUTZUNG ODER DEM SONSTIGEN UMGANG MIT DER SOFTWARE.
 *
 */
Paket 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;
import com.strategyquant.tradinglib.ValueTypes; import com.strategyquant.tradinglib;
import com.strategyquant.tradinglib.WalkForwardResult; import com.strategyquant.tradinglib;
import com.strategyquant.tradinglib.optimization.WalkForwardMatrixResult; 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("Anzahl der Abschlüsse WF"));

		// dies bedeutet, dass der Wert von der Anzahl der Handelstage abhängt
		// und muss beim Vergleich mit einem anderen Ergebnis nach Tagen normalisiert werden
		// Ergebnis mit anderer Anzahl von Handelstagen
		setDependentOnTradingPeriod(true);
	}
	
	//------------------------------------------------------------------------

	@Override
	public String getValue(ResultsGroup results, String resultKey, byte direction, byte plType, byte sampleType) throws Exception {
		/*
		 * Beispielcode, um den stat-Wert des WF-Ergebnisses zu erhalten
		 * ----------------------------------------------------
		 * ----------------------------------------------------
		 * ----------------------------------------------------
		 */
		
		//Abrufen der WF-Matrix-Ergebnisse
		WalkForwardMatrixResult mwfResult = (WalkForwardMatrixResult) results.mainResult().get(SettingsKeys.WalkForwardResult);
		if(mwfResult==null) {
			return "NA";
		}
				
		/*
		 * WalkForwardMatrixResult opt params
		 * public int start1;
			public int stop1;
			public int inkrement1;
			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
		
		//Abfrage eines bestimmten WF-Ergebnisses aus der Matrix
		WalkForwardResult wfResult = mwfResult.getWFResult(param1, param2);
		
		/*
		 * WalkForwardResult berechnete Statistiken
		 * public SQStats stats = null; //Full Sample stats
		 * public SQStats statsOOS = null; //OOS-Statistiken
		 * public SQStats statsStability = null; //Die Stabilität der Statistik
		 * public SQStats statsScore = null; //Die Statistik-Punktzahl
		 * public SQStats statsSpecial = null; //Die Statistik Spezial
		 */
		
		//Rückgabe des berechneten Wertes von stats
		return wfResult.stats.getInt("NumberOfTrades")+"";
	}
		
}

 

1 Kommentar
Älteste
Neueste Meistbewertet
Emmanuel
4. 9. 2024 2:19 p.m.

Ausgezeichneter Tomas !!!!!
gute Idee!
Danke 🙂 🙂 🙂 🙂