La colonna Databank mostra sempre il valore zero
1 risposte
Julian Gonzalez
10 mesi fa #291831
Ho creato una colonna Databank e un codice modello viene generato automaticamente calcolando netProfit. Lo compilo e riavvio SQX UI. Quando apro il DataBank dal Builder e aggiungo la colonna, mostra sempre il valore zero. Lo stesso accade se scarico gli snippet dalla comunità.
Se ne creo uno nuovo con solo getNumericValue() e getValue() funziona perfettamente. Sembra quindi che la funzione compute() non faccia nulla, perché?
Ho già provato con le versioni 136, 142 e 143. Aiuto!
Questo è il modello:
pacchetto SQ.Columns.Databanks;importare com.strategyquant.lib.*;importare com.strategyquant.datalib.*;importare com.strategyquant.tradinglib.*;public class Prueba2 extends DatabankColumn {public Prueba2() {super(“Prueba2”,DatabankColumn.Decimal2, // formato di visualizzazione del valoreValueTypes.Maximize, // se il valore deve essere massimizzato / minimizzato / approssimato a un valore0, // valore target se è stata scelta l'approssimazione0, // media minima di questo valore100); // media massima di questo valoresetWidth(80); // larghezza predefinita della colonna in pixelsetTooltip(“La tua descrizione degli strumenti qui”);/* Se questa nuova colonna dipende da altre colonne che devono essere calcolate prima, inserirle qui.Assicurarsi di non creare dipendenze circolari, come ad esempio A dipende da B e B dipende da A.Le colonne (=valori delle statistiche) sono identificate dal nome della classe)*///setDependencies(“DrawdownPct”, “NumberOfTrades”);}//————————————————————————/*** Questo metodo deve restituire il valore calcolato di questa nuova colonna. In genere, si dovrebbe calcolarlo dall'elenco degli ordini* o da alcuni valori statistici già calcolati (altre colonne della banca dati).*/@Overridepublic double compute(SQStats stats, StatsTypeCombination combination, OrdersList ordersList, SettingsMap settings, SQStats statsLong, SQStats statsShort) throws Exception {/* un esempio: ecco come si possono ottenere altri valori da cui dipende questo nuovo valore *///int numberOfTrades = stats.getInt(“NumberOfTrades”);//doppio drawdownPct = stats.getDouble(“DrawdownPct”);/* un esempio: calcolare il profitto netto dall'elenco delle operazioni */doppio netProfit = 0;for(int i = 0; i<ordersList.size(); i++) {Ordine = ordersList.get(i);if(order.isBalanceOrder()) {// non contare gli ordini di saldo (depositi, prelievi) incontinuare;}/* il metodo getPLByStatsType restituisce automaticamente il PL a seconda del tipo di statistiche date - in denaro, % o pip */double PL = getPLByStatsType(ordine, combinazione);netProfit += PL;}/* arrotonda e restituisce il valore. Verrà salvato nelle statistiche sotto la chiave “Prueba2” */restituire round2(netProfit);}}
0
Julian Gonzalez
10 mesi fa #291832
Risolto!
Sembra che la funzione compute() si aggiorni solo quando si forza la strategia a essere testata nuovamente (ritestandola o generando una nuova strategia). Invece, le funzioni getNumericValue() e getValue() non ne hanno bisogno.
🙂
1
Stai visualizzando 1 risposte (di 1 totali)