Documentation

Applications

Dernière mise à jour le 18. 5. 2020 par Mark Fric

Graphique - Stratégies acceptées par heure

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

S'abonner
Notification pour
0 Commentaires
Commentaires en ligne
Afficher tous les commentaires