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")+"";
}
}
Ausgezeichneter Tomas !!!!!
gute Idee!
Danke 🙂 🙂 🙂 🙂