SQOrder Class MAE/MFE Properties Returning 0

6 respostas

seaton

Cliente, bbp_participante, comunidade, 161 respostas.

Perfil da visita

8 anos atrás #114154

Acabei de brincar com meu primeiro gráfico e fiz um ganho MAE vs %, tudo muito simples e direto (estou adorando a capacidade de estender, BTW), mas a classe SQOrders parece estar retornando 0 para as propriedades MAE e MFE?

 

Acabei de tentar anexar o arquivo e o fórum não permite, portanto, colei-o abaixo.  

 

Aliás, seria bom ter uma seção no fórum que permitisse o compartilhamento de extensões, pois fico feliz em compartilhar as minhas.

pacote com.strategyquant.extend.TradeAnalysisPanes;

import java.util.ArrayList;


import org.jfree.chart.JFreeChart;


import com.strategyquant.lib.charts.common.SQChart;;
import com.strategyquant.lib.charts.common.SQScatterChart;;
import com.strategyquant.lib.charts.common.duration.TimeDuration; import com.strategyquant.lib.charts.common.duration.TimeDuration;
import com.strategyquant.lib.language.L;
import com.strategyquant.lib.results.SQData;
import com.strategyquant.lib.results.SQOrder;
import com.strategyquant.lib.results.SQOrderList;
import com.strategyquant.lib.results.SQResultsGroup; import com.strategyquant.lib.results.SQResultsGroup;
import com.strategyquant.lib.settings.SQConst;
import com.strategyquant.lib.snippets.TradeAnalysisChartPane;


public class MAEvsGainChart extends TradeAnalysisChartPane {
//private ArrayList timeDurationList;


public MAEvsGainChart() {
this.name = L.t("MAE vs. Resultado da negociação (ganho %)");
}


@Override
public JFreeChart drawChart(SQResultsGroup strategyResult, SQData data) {
SQScatterChart chart = new SQScatterChart();
chart.xLegend = L.t("% Gain");
      chart.yLegend = L.t("MAE");


se(strategyResult==null) {
return chart.render();
}


ArrayList trades = computeData(strategyResult, data);


for(int trade=0; trade<trades.size(); trade++) {
double[] values = trades.get(trade);


se(valores[1]<0) {
chart.add("losers", values[1], values[0]);
} else {
chart.add("winners", values[1], values[0]);
}
}


//chart.setDurationDomainAxis(true);
chart.setSeriesColor("losers", SQChart.COLOR_RED); } chart.setSeriesColor("losers", SQChart.COLOR_RED);
chart.setSeriesColor("winners", 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];
valores[0] = order.MAE;
values[1] = order.PctPL;


trades.add(values);
}


return trades;
}
}

0

Tamas

Cliente, bbp_participante, comunidade, sq-ultimate, 73 respostas.

Perfil da visita

8 anos atrás #132436

Olá, seaton,

 

deve ser fácil de calcular MAE/MFE se precisar deles para seu relatório.

Eles precisam ser calculados para um conjunto específico de ordens.

 

Primeiro, receba os pedidos  

SQOrderList orderList = filterOrders(strategyResult, data);

 

e, em seguida, calcular o MAE para cada ordem.

for(SQOrder order : orderList) {

   order.MAE = value;

}

 

Com os melhores cumprimentos,

Tomas

0

seaton

Cliente, bbp_participante, comunidade, 161 respostas.

Perfil da visita

8 anos atrás #132454

Obrigado, Thomas,

 

Eu havia assumido incorretamente que o MAE e o MFE em cada ordem já haviam sido calculados.

 

Obrigado

0

seaton

Cliente, bbp_participante, comunidade, 161 respostas.

Perfil da visita

8 anos atrás #132455

Na verdade, quando estava dirigindo para o trabalho hoje, estava refletindo sobre isso e não há como calcular o MAE/MFE a partir do SQAnalyser, pois esses números precisam ser capturados durante a negociação/teste de retorno e, portanto, não podem ser calculados pelo SQAnalyser.

 

Como os dados que estou carregando são de backtests do MT4 que salvei, essas informações não estarão disponíveis, pois tenho certeza de que o backtester do MT4 não as fornece; no entanto, com os backtests do SQ, acho que elas são calculadas internamente, portanto, vou testá-las.

0

seaton

Cliente, bbp_participante, comunidade, 161 respostas.

Perfil da visita

8 anos atrás #132456

Acabei de confirmar que esse é o caso:

 

O MAE/MFE é calculado no Strategy Quant e NÃO está nos backtests do MT4. Essa é apenas uma das muitas deficiências do MT4 como plataforma. De qualquer forma, faremos a depuração nos testes do Strategy Quant para que ele funcione corretamente.

0

seaton

Cliente, bbp_participante, comunidade, 161 respostas.

Perfil da visita

8 anos atrás #132459

Ok, isso me levou ao próximo problema.

 

Como o Strategy Quant está calculando o MAE/MFE, já que eles parecem estar incorretos?

 

1) O MAE está sendo mostrado como um número positivo, ele nunca deve ser maior que 0, enquanto o MFE nunca deve ser menor que 0

2) Os valores do MAE e do MFE parecem muito parecidos, portanto, estou um pouco cético em relação a eles.

 

Esses dados foram extraídos de uma estratégia do StrategyQyant carregada no SQ Analysis, com resultados semelhantes em estratégias diferentes.

 

0

tomas262

Administrador, sq-ultimate, 2 respostas.

Perfil da visita

8 anos atrás #132484

Isso precisa ser verificado. Também obtenho valores diferentes de MAE/MFE no Analyzer ao tentar importar a estratégia gerada no SQ

0

Visualizando 6 respostas - 1 até 6 (de um total de 6)