Documentazione
Applicazioni
Ultimo aggiornamento il 18. 5. 2020 da Mark Fric
Aggiunta di una colonna / filtro della banca dati
Contenuto della pagina
Potreste voler estendere StrategyQuant aggiungendo una nuova colonna della banca dati che calcola alcune statistiche uniche e importanti per voi.
Ogni metrica, come il profitto netto, il fattore di profitto, il drawdown, il rapporto Sharpe, ecc. è implementata come uno snippet di colonna della banca dati. Lo snippet si occupa di calcolare il valore e di restituirlo nel formato corretto per essere visualizzato nella griglia.
Utilizzeremo i termini valore statistico, valore statistico, colonna della banca dati in modo intercambiabile, perché hanno lo stesso significato.
Esistono due modi fondamentali per calcolare il valore delle statistiche:
- Da parte dei commercianti
- Come un rapporto tra altri valori di statistiche già calcolati
NetProfit - esempio di calcolo del valore delle statistiche dalle negoziazioni
Di seguito è riportato un metodo compute() dello snippet NetProfit che calcola il profitto netto totale.
Si tratta semplicemente di scorrere l'elenco dei trade forniti e di sommare i loro 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++) {
Ordine = ordersList.get(i);
if(order.isBalanceOrder()) {
// non contare gli ordini in saldo (depositi, prelievi)
continua;
}
double PL = getPLByStatsType(order, combination); // questo restituisce il PL come valore $, % o pips
netProfit += PL;
}
return round2(netProfit);
}
L'unica "particolarità" è il metodo di aiuto getPLByStatsType(order), che restituisce i PL in denaro, pip o %.
Rapporto Ret/DD - esempio di calcolo del valore delle statistiche da altri valori
Alcuni valori statistici sono calcolati come rapporti di altri valori statistici. Un esempio è il rapporto Ret/DD, che è semplicemente il rapporto tra il profitto netto e il drawdown.
Ecco il suo codice:
public Rapporto rendimento/DD() {
super(L.t("Ret/DD Ratio"), DatabankColumn.Decimal2, ValueTypes.Maximize, 0, -20, 20);
setDependencies("NetProfit", "Drawdown");
setTooltip(L.t("Rapporto rendimento/disegno"));
}
//------------------------------------------------------------------------
@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));
}
Chiamando setDependencies("NetProfit", "Drawdown"); Nel costruttore ReturnDDRatio abbiamo detto a StrategyQuant che questo valore dipende da altri due valori di partenza che devono essere calcolati prima.
Nel metodo compute() abbiamo semplicemente recuperato questi valori e restituito il profitto netto diviso per il drawdown.
Questo articolo è stato utile? L'articolo è stato utile L'articolo non è stato utile