Tableau d'analyse : Distribution de base

2 réponses

seaton

Client, bbp_participant, communauté, 161 réponses.

Visiter le profil

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

0

seaton

Client, bbp_participant, communauté, 161 réponses.

Visiter le profil

Il y a 8 ans #132429

 

Diagramme à barres également

0

Tamas

Client, bbp_participant, community, sq-ultimate, 73 réponses.

Visiter le profil

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

0

Affichage de 2 réponses de 1 à 2 (sur un total de 2)