Documentazione

Ultimo aggiornamento il 25. 6. 2015 da Mark Fric

Aggiungere una nuova colonna Monte Carlo

Un esempio di come aggiungere un nuovo valore nel metodo Monte Carlo.

Qual è l'oggetto del compito?

Per impostazione predefinita, quando si esegue una simulazione Monte Carlo si ottengono risultati di simulazione per determinati livelli di confidenza.
La simulazione MC calcola risultati come il profitto netto, il profitto netto %, il rendimento / DD ecc. per un determinato livello di confidenza.

L'utente del forum ha chiesto di calcolare un nuovo valore personalizzato: il numero di operazioni consecutive in perdita.

Come molte altre cose, i valori (colonne) del rapporto Monte Carlo sono calcolati utilizzando degli snippet, quindi è possibile estenderli e aggiungerne di propri.

In questo articolo mostreremo come aggiungere un nuovo valore MC che calcola il numero di trade consecutivi perdenti per tutti i livelli di confidenza Monte Carlo.

Passo 1 - Creare un nuovo snippet Monte Carlo Value

Come tutti gli altri snippet, anche quello di Monte Carlo è modificabile in QuantEditor:

Ora creeremo un nuovo snippet che calcolerà i nostri ordini perdenti consecutivi:

Questo creerà uno scheletro di uno snippet che potremo estendere per fare ciò che vogliamo. Esamineremo le funzioni dello snippet una per una.

Nel costruttore dobbiamo impostare il nome della colonna e l'ordinamento. Se i valori migliori sono quelli più alti, si deve impostare MAXIMIZE.
Nel nostro caso, i valori migliori sono quelli più bassi (il minor numero possibile di operazioni consecutive in perdita), quindi imposteremo l'ordine su MINIMIZE.

Questo è importante affinché il programma sappia come ordinare i risultati quando calcola i risultati per ogni livello di confidenza.

public ConsecutiveLosingOrders() {
   super("ConsecutiveLosingOrders", FitnessFunction.MINIMIZE);

 


setColumnName(L.t("Ordini perdenti consecutivi"));
setLarghezza colonna(100);
setTooltip(L.t("Ordini perdenti consecutivi"));
}
metodo calcolo() è il cuore del nostro snippet e contiene il codice che esegue il calcolo effettivo degli ordini perdenti massimi consecutivi.
L'algoritmo per calcolare questo valore è piuttosto semplice: si limita a scorrere l'array di ordini e a ricordare la striscia maggiore di ordini perdenti.

protected double compute(MonteCarloStatValues statValues, double initialCapital, double[] orders, double avgTradesPerMonth) throws Exception {
   int maxConsecLosingOrders = 0;
   int consecLosingOrders = 0;

for(int i=0; i<ordini.lunghezza; i++) {
if(ordini[i] > 0) {
// è un ordine vincente, azzera il contatore
consecLosingOrders = 0;
} else {
// sta perdendo l'ordine
consecLosingOrders++;

se(consecLosingOrders > maxConsecLosingOrders) {
maxConsecLosingOrders = consecLosingOrders;
}
}
}

restituire maxConsecLosingOrders;
}

E l'ultima funzione serve a formulare il valore calcolato

public String formatValue(double value) {
   return String.valueOf((int) value);
}

Questo è tutto, possiamo colpire il Compilazione e il nostro nuovo snippet dovrebbe essere compilato senza alcun errore.

Passo 2 - aggiungere il nuovo valore alla vista

Se guardiamo la tabella Monte Carlo in Quant Analyzer, vedremo che la nostra nuova colonna non è ancora visibile. Questo perché le colonne visibili sono gestite nelle viste.

Dobbiamo fare clic su Configurare la vista nell'angolo in alto a destra della tabella per aggiungere una nuova colonna alla vista:

Qui dobbiamo aggiungere la colonna Ordini perdenti consecutivi all'elenco delle colonne visualizzate sulla destra.

Una volta terminato, possiamo vedere che la nostra tabella dei risultati Monte Carlo ora contiene anche la colonna degli ordini perdenti consecutivi con i valori calcolati:

Questo è tutto ciò che è stato necessario per aggiungere nuovo valore ai risultati di Monte Carlo.

Come si può vedere, è stato semplice, l'unica vera sfida è stata quella di implementare correttamente l'opzione calcolo() in modo da calcolare ciò che si desidera.

Questo articolo è stato utile? L'articolo è stato utile L'articolo non è stato utile

Abbonarsi
Notificami
0 Commenti
Feedback in linea
Visualizza tutti i commenti