Tableau d'analyse : Distribution de base
2 réponses
seaton
Il y a 8 ans #114157
Ce soir, j'ai joué avec quelques extensions de graphiques d'analyse.
Le résultat est un diagramme de distribution Profit très basique.
J'ai besoin d'un moyen de faire une plage de bin pour l'histogramme. PS : ignorez également les étiquettes de l'axe, car je suis en train de jouer ici.
Mark : Pouvez-vous s'il vous plaît créer un wrapper SQChart autour de JFreeChart Histogram Chart afin que SQ puisse créer de véritables histogrammes ? Pour l'instant, j'utilise plutôt un graphique linéaire.
/* * Copyright (c) 2015, StrategyQuant - Tous droits réservés. * * Le code contenu dans ce fichier a été réalisé en toute bonne foi, en pensant qu'il est correct et qu'il fait ce qu'il doit faire. * Si vous avez trouvé un bogue dans ce code OU si vous avez une suggestion d'amélioration OU si vous voulez inclure * votre propre extrait de code dans notre bibliothèque standard, veuillez nous contacter à l'adresse suivante : * http://tasks.strategyquant.com/projects/snippets/ * * Ce code ne peut être utilisé qu'avec les produits StrategyQuant. * Tout propriétaire d'une licence valide (gratuite, d'essai ou commerciale) d'un produit StrategyQuant * est autorisé à utiliser, copier, modifier ou faire un travail dérivé de ce code sans limitations, * pour être utilisé dans tous les produits StrategyQuant et de partager ses modifications ou travaux dérivés * avec la communauté StrategyQuant. * * LE LOGICIEL EST FOURNI "TEL QUEL", SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, * Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET DE NON-CONTREFAÇON. * D'ADÉQUATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. EN AUCUN CAS LES AUTEURS NE POURRONT ETRE TENUS RESPONSABLES DE TOUTE RECLAMATION, DE TOUT DOMMAGE * LES AUTEURS NE PEUVENT EN AUCUN CAS ÊTRE TENUS RESPONSABLES D'UNE QUELCONQUE RÉCLAMATION, D'UN QUELCONQUE DOMMAGE OU D'UNE QUELCONQUE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT, * LES AUTEURS NE PEUVENT EN AUCUN CAS ÊTRE TENUS RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DU LOGICIEL OU DE SON UTILISATION. * */ package com.strategyquant.extend.TradeAnalysisPanes ; import org.jfree.chart.JFreeChart ; import org.jfree.data.statistics.HistogramDataset ; import java.util.Arrays ; import 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.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() ; if(strategyResult==null) { return chart.render() ; } SQOrderList orderList = filterOrders(strategyResult, data) ; double[] trades = new double[orderList.size()] ; // HistogramDataSet requiert double[] comme entrée. 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() ; } }
Voir aussi,
Stephen...
seaton
Il y a 8 ans #132429
Tamas
Il y a 8 ans #132433
Bonjour seaton,
la méthode drawChart() renvoie une instance de JFreeChart.
Vous pouvez créer différents types de graphiques à l'aide de ChartFactory.
http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/ChartFactory.html
JFreeChart chart = ChartFactory.createHistogram() ;
Pour plus de détails, voir le lien ci-dessous ou rechercher "ChartFactory.createHistogram".
http://www.roseindia.net/tutorial/java/jfreechart/createhistogram.html
Je vous prie d'agréer, Madame, Monsieur, l'expression de mes salutations distinguées,
Tomas
Affichage de 2 réponses de 1 à 2 (sur un total de 2)