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