Documentation

Applications

Dernière mise à jour le 18. 5. 2020 par Mark Fric

Ajout d'une colonne / d'un filtre dans la banque de données

Vous pourriez vouloir étendre StrategyQuant en ajoutant une nouvelle colonne de banque de données qui calcule des statistiques uniques importantes pour vous.

Chaque mesure, comme le bénéfice net, le facteur de profit, l'amortissement, le ratio de Sharpe, etc., est implémentée sous la forme d'un extrait de colonne de la banque de données. Ce snippet se charge de calculer la valeur et de la renvoyer dans le format approprié pour qu'elle soit affichée dans la grille.

Nous utiliserons les termes valeur statistique, valeur statistique, colonne de la banque de données de manière interchangeable, car ils signifient la même chose.

Il existe deux méthodes de base pour calculer la valeur des statistiques :

  1. Des métiers
  2. Comme un rapport entre d'autres valeurs statistiques déjà calculées

 

NetProfit - exemple de calcul de la valeur des statistiques à partir des transactions

Voici un extrait de la méthode compute() de NetProfit qui calcule le bénéfice net total.
Il se contente de parcourir la liste des métiers fournis et d'additionner leurs 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(order.isBalanceOrder()) {
      // ne pas compter les ordres en solde (dépôts, retraits)
      continuer ;
    }
    
    double PL = getPLByStatsType(order, combination) ; // ceci renvoie PL comme $, % ou valeur en pips
    
    netProfit += PL ;
  }

  return round2(netProfit) ;
}

La seule "spécialité" ici est la méthode d'aide getPLByStatsType(order), qui renvoie le PL soit en argent, soit en pips, soit en %.

 

Ratio Ret/DD - exemple de calcul de la valeur des statistiques à partir d'autres valeurs

Certaines valeurs statistiques sont calculées comme des ratios d'autres valeurs statistiques. Un exemple de ceci est le ratio Ret/DD qui est simplement un ratio entre le bénéfice net et le Drawdown.

Voici son 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(netProfit, DD)) ;
}

En appelant setDependencies("NetProfit", "Drawdown") ; dans le constructeur du ReturnDDRatio, nous avons indiqué à StrategyQuant que cette valeur dépendait de deux autres valeurs de départ qui doivent être calculées en premier.

Dans la méthode compute(), nous avons simplement récupéré ces valeurs et renvoyé le bénéfice net divisé par le drawdown.

Cet article a-t-il été utile ? L'article était utile L'article n'était pas utile

S'abonner
Notification pour
0 Commentaires
Commentaires en ligne
Afficher tous les commentaires