Dokumentation
Anwendungen
Zuletzt aktualisiert am 18. 5. 2020 von Mark Fric
Hinzufügen einer Datenbankspalte / eines Filters
Inhalt der Seite
Vielleicht möchten Sie StrategyQuant erweitern, indem Sie eine neue Datenbankspalte hinzufügen, die eine für Sie wichtige Statistik berechnet.
Jede Metrik wie Nettogewinn, Gewinnfaktor, Drawdown, Sharpe Ratio usw. ist als Datenbankspalten-Snippet implementiert. Das Snippet kümmert sich um die Berechnung des Wertes und gibt ihn im richtigen Format zurück, damit er in der Tabelle angezeigt werden kann.
Die Begriffe "Statistikwert", "statistischer Wert" und "Datenbanksäule" sind austauschbar und bedeuten dasselbe.
Es gibt zwei grundsätzliche Möglichkeiten, wie der Statistikwert berechnet werden kann:
- Von Gewerbetreibenden
- als ein Verhältnis zwischen anderen, bereits berechneten Statistikwerten
NetProfit - Beispiel für die Berechnung des statistischen Werts von Geschäften
Nachfolgend finden Sie eine compute()-Methode des NetProfit-Snippets, die den gesamten Nettogewinn berechnet.
Es geht einfach durch die bereitgestellte Liste der Gewerke und summiert deren PL.
@Override public double compute(SQStats stats, StatsTypeCombination combination, OrdersList ordersList, SettingsMap settings, SQStats statsLong, SQStats statsShort) throws Exception { double netProfit = 0; for(int i = 0; i<ordersList.size(); i++) { Order order = ordersList.get(i); if(auftrag.isBalanceAuftrag()) { // Gleichgewichtsaufträge (Einzahlungen, Abhebungen) nicht mitzählen fortfahren; } double PL = getPLByStatsType(order, combination); // dies liefert PL als $, % oder Pips-Wert netProfit += PL; } return round2(netProfit); }
Die einzige "Besonderheit" hier ist die Hilfsmethode getPLByStatsType(order), die PL entweder in Geld, Pips oder % zurückgibt.
Ret/DD Ratio - Beispiel für die Berechnung von Statistikwerten aus anderen Werten
Einige Statistikwerte werden als Verhältnisse zu anderen Statistikwerten berechnet. Ein Beispiel hierfür ist das Ret/DD-Verhältnis, das einfach ein Verhältnis zwischen Nettogewinn und Drawdown ist.
Hier ist der Code:
public ReturnDDRatio() { super(L.t("Ret/DD Ratio"), DatabankColumn.Decimal2, ValueTypes.Maximize, 0, -20, 20); setDependencies("NetProfit", "Drawdown"); setTooltip(L.t("Return / Drawdown Ratio")); } //------------------------------------------------------------------------ @Override public double compute(SQStats stats, StatsTypeCombination combination, OrdersList ordersList, SettingsMap settings, SQStats statsLong, SQStats statsShort) throws Exception { double netProfit = stats.getDouble("NetProfit"); double DD = Math.abs(stats.getDouble("Drawdown")); return round2(safeDivide(nettoGewinn, DD)); }
Durch einen Anruf setDependencies("NetProfit", "Drawdown"); im ReturnDDRatio-Konstruktor haben wir StrategyQuant mitgeteilt, dass dieser Wert von zwei anderen Startwerten abhängt, die zuerst berechnet werden müssen.
In der compute()-Methode haben wir einfach diese Werte abgerufen und den Nettogewinn geteilt durch den Drawdown zurückgegeben.
War dieser Artikel hilfreich? Der Artikel war nützlich Der Artikel war nicht nützlich