Gráfico de análise: Distribuição básica
2 respostas
seaton
8 anos atrás #114157
Esta noite, estive brincando com algumas extensões de gráfico do Analysis
O resultado é um gráfico de distribuição de Profit muito básico.
Preciso de uma maneira de fazer o intervalo de compartimentos para o histograma. PS: ignore também os rótulos dos eixos, pois estou brincando aqui
Mark: Você poderia criar um SQChart wrapper em torno do gráfico de histograma JFreeChart para que o SQ possa criar gráficos de histograma adequados? No momento, estou usando o gráfico de linhas.
/* * Copyright (c) 2015, StrategyQuant - Todos os direitos reservados. * * O código contido neste arquivo foi criado de boa-fé, garantindo que está correto e faz o que deveria. * Se você encontrou um bug neste código OU tem uma sugestão de melhoria OU deseja incluir * seu próprio trecho de código em nossa biblioteca padrão, entre em contato conosco em: * http://tasks.strategyquant.com/projects/snippets/ * * Este código pode ser usado somente em produtos StrategyQuant. * Todo proprietário de uma licença válida (gratuita, de teste ou comercial) de qualquer produto StrategyQuant * tem permissão para usar, copiar, modificar ou fazer trabalhos derivados desse código livremente, sem limitações, * para ser usado em todos os produtos StrategyQuant e compartilhar suas modificações ou trabalhos derivados * com a comunidade StrategyQuant. * * O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, * INCLUINDO, MAS NÃO SE LIMITANDO A, GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO * FINALIDADE ESPECÍFICA E NÃO VIOLAÇÃO. EM NENHUMA HIPÓTESE OS AUTORES SERÃO RESPONSÁVEIS POR QUALQUER REIVINDICAÇÃO, DANO * OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, * DECORRENTES DE, FORA DE OU EM CONEXÃO COM O SOFTWARE OU COM O USO OU OUTRAS NEGOCIAÇÕES COM O SOFTWARE. * */ package com.strategyquant.extend.TradeAnalysisPanes; import org.jfree.chart.JFreeChart; import org.jfree.data.statistics.HistogramDataset; importar java.util.Arrays; Importar java.util.List; import com.strategyquant.lib.charts.common.SQLineChart; 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; import com.strategyquant.lib.time.SQTime; public class PLDistributionChart extends TradeAnalysisChartPane { public PLDistributionChart() { this.name = L.t("% Profit Distribution (Line)"); } @Override public JFreeChart drawChart(SQResultsGroup strategyResult, SQData data) { SQLineChart chart = new SQLineChart(); chart.xLegend = L.t("PDF"); chart.yLegend = L.t("Frequency"); HistogramDataset dataset = new HistogramDataset(); se(strategyResult==null) { return chart.render(); } SQOrderList orderList = filterOrders(strategyResult, data); double[] trades = new double[orderList.size()]; // HistogramDataSet requer double[] como entrada. for(SQOrder order : orderList) { trades[orderList.indexOf(order)] = order.PctPL; } dataset.addSeries("Gain (%)", trades, 10); for(int index=0 ; index < dataset.getItemCount(0) ; index++){ chart.add("Gain (%)", dataset.getXValue(0, index),dataset.getYValue(0, index)); } //chart.setIntegerRangeAxis(true); return chart.render(); } }
Cumprimentos,
Stephen...
seaton
8 anos atrás #132429
Tamas
8 anos atrás #132433
Olá, seaton,
O método drawChart() retorna uma instância de JFreeChart.
Você pode criar diferentes tipos de gráficos com o ChartFactory.
http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/ChartFactory.html
JFreeChart chart = ChartFactory.createHistogram();
Para obter mais detalhes, consulte o link abaixo ou pesquise por "ChartFactory.createHistogram"
http://www.roseindia.net/tutorial/java/jfreechart/createhistogram.html
Com os melhores cumprimentos,
Tomas
Visualizando 2 respostas - 1 até 2 (de um total de 2)