Documentazione

Applicazioni

Ultimo aggiornamento il 18. 5. 2020 da Mark Fric

Aggiunta di una colonna / filtro della banca dati

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:

  1. Da parte dei commercianti
  2. 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

Abbonarsi
Notificami
0 Commenti
Feedback in linea
Visualizza tutti i commenti