Documentation
Applications
Dernière mise à jour le 18. 5. 2020 par Mark Fric
Graphique - Stratégies acceptées par heure
Contenu des pages
Les graphiques du moteur sont de petits graphiques visibles dans le moteur - par exemple Tableau de la mémoire en tas ou Stratégies moyennes par heure graphique.
Comme la plupart des choses dans SQ X, ces graphiques sont mis en œuvre à l'aide de BribesCela signifie qu'ils sont extensibles et que vous pouvez y ajouter votre propre graphique.
Étape 1 - Ouvrir l'éditeur de code
Cliquez sur l'icône de l'éditeur de code pour passer à l'éditeur.
Étape 2 - Créer un nouvel extrait de graphique Engine
Il n'y a pas encore d'assistant pour les graphiques de moteur, mais vous pouvez facilement cloner un extrait existant et le modifier pour afficher les stratégies acceptées par heure.
Dans l'arbre du navigateur à droite, allez à Snippets -> SQ -> Engine charts, puis cliquez sur AverageStrategiesPerHour.java avec le bouton droit de la souris, et choisissez Clone.
Nommez le nouveau fichier AcceptedStrategiesPerHour.
Ceci créera une copie du snippet existant qui affiche les stratégies moyennes par heure. Il ne reste plus qu'à le modifier pour afficher les stratégies acceptées par heure au lieu de la moyenne.
Étape 3 - modifier le snippet
Il n'y a pas grand-chose à modifier - nous modifierons ce qui est évident, comme le snippet et le nom du graphique, et la seule méthode qui doit être modifiée est la méthode addNextValue() qui définit la valeur suivante pour le graphique.
Nous le modifierons de
series.addValue(System.currentTimeMillis(), projectRunInfo.strategiesPerHour) ;
à
series.addValue(System.currentTimeMillis(), projectRunInfo.acceptedStrategiesPerHour) ;
Nous avons eu de la chance avec cet extrait, car SQ calcule déjà ces statistiques, de sorte que nous n'avons qu'à créer un nouveau graphique qui les utilise.
Étape 4 - Recompilation et redémarrage du SQ
et vous verrez une nouvelle carte disponible dans tous les panneaux moteurs :
Voici le code complet de l'extrait :
package SQ.EngineCharts ; import org.json.JSONObject ; import com.strategyquant.lib.* ; import com.strategyquant.datalib.* ; import com.strategyquant.tradinglib.* ; public class AcceptedStrategiesPerHour extends EngineChart { private TimeSeriesLineChart chart = null ; private TimeSeries series = null ; private ProjectRunInfo projectRunInfo = new ProjectRunInfo() ; private ProjectRunInfo oldProjectRunInfo = new ProjectRunInfo() ; private int checksSinceLastChange = 0 ; public AcceptedStrategiesPerHour() { super(L.t("Stratégies acceptées par heure"), TYPE_PROJECT_BASED) ; this.chart = new TimeSeriesLineChart() ; this.chart.yAxisTitle = L.t("Stratégies") ; this.chart.xAxisTitle = L.t("Time") ; this.chart.maxTicksLimit = 4 ; this.chart.yAxisRangeMin = 0 ; this.series = new TimeSeries(L.t("Str. acceptés par heure"), 20) ; this.series.color = ChartsConst.COLOR_GREEN ; ((TimeSeriesLineChart)this.chart).addSeries(series) ; oldProjectRunInfo.totalJobsDone = -1 ; checksSinceLastChange = 0 ; } @Override public JSONObject print() { JSONObject data = new JSONObject() ; project.loadTrackingInfo(projectRunInfo, false) ; checksSinceLastChange++ ; if((oldProjectRunInfo.totalJobsDone == -1 || projectRunInfo.totalJobsDone != oldProjectRunInfo.totalJobsDone)) || checksSinceLastChange > 10) { // ne rafraîchir que si quelque chose a changé oldProjectRunInfo.totalJobsDone = projectRunInfo.totalJobsDone ; checksSinceLastChange = 0 ; data.put("type", DATA_TYPE_CHART) ; data.put("chart", this.chart.toJSON()) ; return data ; } else { return null ; } } @Override public void addNextValue() { try { series.addValue(System.currentTimeMillis(), projectRunInfo.acceptedStrategiesPerHour) ; } catch(Exception e) { Log.error("Exc.", e) ; } } }
Cet article a-t-il été utile ? L'article était utile L'article n'était pas utile