SQOrdine Classe MAE/MFE Properties Restituzione 0
6 risposte
seaton
8 anni fa #114154
Ho appena giocato con il mio primo grafico e ho fatto un guadagno MAE vs %, tutto abbastanza semplice e lineare (mi piace la possibilità di estendere BTW), tuttavia la classe SQOrders sembra restituire 0 per le proprietà MAE e MFE?
Ho appena provato ad allegare il file e il forum non me lo permette, quindi l'ho incollato qui sotto.
BTW sarebbe bello avere una sezione nel forum per consentire la condivisione delle estensioni, dato che sono felice di condividere le mie.
pacchetto com.strategyquant.extend.TradeAnalysisPanes; importare java.util.ArrayList; importare org.jfree.chart.JFreeChart; importare com.strategyquant.lib.charts.common.SQChart; importare com.strategyquant.lib.charts.common.SQScatterChart; importare com.strategyquant.lib.charts.common.duration.TimeDuration; Importare com.strategyquant.lib.language.L; importare com.strategyquant.lib.results.SQData; importare com.strategyquant.lib.results.SQOrder; importare com.strategyquant.lib.results.SQOrderList; importare com.strategyquant.lib.results.SQResultsGroup; importare com.strategyquant.lib.settings.SQConst; importare com.strategyquant.lib.snippets.TradeAnalysisChartPane; public class MAEvsGainChart extends TradeAnalysisChartPane { //privato ArrayList timeDurationList; public MAEvsGainChart() { this.name = L.t("MAE vs Trade Outcome (% Gain)"); } @Override public JFreeChart drawChart(SQResultsGroup strategyResult, SQData data) { SQScatterChart chart = new SQScatterChart(); chart.xLegend = L.t("% Gain"); chart.yLegend = L.t("MAE"); if(strategyResult==null) { return chart.render(); } ArrayList trades = computeData(strategyResult, data); for(int trade=0; trade<trades.size(); trade++) { double[] values = trades.get(trade); se(valori[1]<0) { chart.add("losers", values[1], values[0]); } else { chart.add("vincitori", valori[1], valori[0]); } //chart.setDurationDomainAxis(true); chart.setSeriesColor("losers", SQChart.COLOR_RED); chart.setSeriesColor("vincitori", SQChart.COLOR_GREEN); return chart.render(); } private ArrayList computeData(SQResultsGroup strategyResult, SQData data) { ArrayList trades = new ArrayList(); SQOrderList orderList = filterOrders(strategyResult, data); for(SQOrder order : orderList) { double[] values = new double[2]; valori[0] = ordine.MAE; valori[1] = ordine.PctPL; trades.add(values); } return trades; } }
Tamas
8 anni fa #132436
Ciao seaton,
dovrebbe essere facile da calcolare MAE/MFE se ne avete bisogno per il vostro rapporto.
Devono essere calcolati per un particolare insieme di ordini.
Per prima cosa ottenere gli ordini
SQOrderList orderList = filterOrders(strategyResult, data);
quindi calcolare il MAE per ciascun ordine.
for(SQOrder order : orderList) {
order.MAE = valore;
}
Cordiali saluti,
Tomas
seaton
8 anni fa #132454
Grazie Thomas,
Avevo dato erroneamente per scontato che il MAE e il MFE di ogni ordine fossero già calcolati.
Grazie
seaton
8 anni fa #132455
In realtà oggi, mentre andavo al lavoro, stavo riflettendo su questo punto e non c'è modo di calcolare MAE/MFE all'interno di SQAnalyser poiché questi numeri devono essere acquisiti durante il trade/Backtest e quindi non possono essere calcolati da SQAnalyser.
Poiché i dati che sto caricando provengono da backtest di MT4 che ho salvato, questa informazione non sarà disponibile in quanto sono abbastanza sicuro che il backtester di MT4 non la fornisca, tuttavia con i backtest di SQ penso che questa informazione sia calcolata internamente, quindi la verificherò.
seaton
8 anni fa #132456
Ho appena avuto la conferma che questo è il caso:
Il MAE/MFE è calcolato in Strategy Quant e NON è presente nei backtest di MT4, solo una delle tante carenze di MT4 come piattaforma, in ogni caso eseguirà un debug sui test di Strategy Quant per farlo funzionare correttamente.
seaton
8 anni fa #132459
Ok, questo mi ha portato al problema successivo.
Come fa Strategy Quant a calcolare MAE/MFE, visto che sembrano non essere corretti?
1) Il MAE è indicato come numero positivo, non dovrebbe mai essere maggiore di 0, mentre il MFE non dovrebbe mai essere inferiore a 0.
2) I valori di MAE e MFE sembrano molto simili, quindi sono un po' scettico nei loro confronti.
Questi dati sono stati presi da una strategia StrategyQyant caricata in SQ Analysis, risultati simili su strategie diverse.
tomas262
8 anni fa #132484
Questo deve essere verificato. Ottengo anche valori diversi di MAE/MFE in Analyzer quando cerco di importare la strategia generata in SQ.
Stai visualizzando 6 risposte - da 1 a 6 (di 6 totali)