SQOrdine Classe MAE/MFE Properties Restituzione 0

6 risposte

seaton

Cliente, bbp_partecipante, comunità, 161 risposte.

Visita il profilo

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;
}
}

0

Tamas

Cliente, bbp_partecipante, comunità, sq-ultimate, 73 risposte.

Visita il profilo

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

0

seaton

Cliente, bbp_partecipante, comunità, 161 risposte.

Visita il profilo

8 anni fa #132454

Grazie Thomas,

 

Avevo dato erroneamente per scontato che il MAE e il MFE di ogni ordine fossero già calcolati.

 

Grazie

0

seaton

Cliente, bbp_partecipante, comunità, 161 risposte.

Visita il profilo

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ò.

0

seaton

Cliente, bbp_partecipante, comunità, 161 risposte.

Visita il profilo

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.

0

seaton

Cliente, bbp_partecipante, comunità, 161 risposte.

Visita il profilo

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.

 

0

tomas262

Amministratore, sq-ultimate, 2 risposte.

Visita il profilo

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.

0

Stai visualizzando 6 risposte - da 1 a 6 (di 6 totali)