Dokumentation

Anwendungen

Zuletzt aktualisiert am 18. 5. 2020 von Mark Fric

Hinzufügen einer Datenbankspalte / eines Filters

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:

  1. Von Gewerbetreibenden
  2. 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

Abonnieren
Benachrichtigen Sie mich bei
0 Kommentare
Inline-Rückmeldungen
Alle Kommentare anzeigen