Dokumentation

Anwendungen

Zuletzt aktualisiert am 18. 5. 2020 von Mark Fric

Tabelle - Angenommene Strategien pro Stunde

Motordiagramme sind kleine Diagramme, die in der Engine sichtbar sind - zum Beispiel Heap-Speicher-Diagramm oder Durchschnittliche Strategien pro Stunde Karte.

Wie die meisten Dinge in SQ X werden auch diese Diagramme mit SchnipselDas bedeutet, dass sie erweiterbar sind - Sie können dort Ihre eigene Tabelle hinzufügen.

 

 

Schritt 1 - Code-Editor öffnen

Klicken Sie auf das Symbol Code-Editor, um zum Editor zu wechseln.

 

 

Schritt 2 - Neues Engine-Diagramm-Snippet erstellen

Es gibt noch keinen Assistenten für Motordiagramme, aber Sie können ganz einfach ein bestehendes Snippet klonen und es so ändern, dass es akzeptierte Strategien pro Stunde anzeigt.

Gehen Sie im Navigator-Baum auf der rechten Seite zu Snippets -> SQ -> Engine charts, klicken Sie mit der rechten Maustaste auf die Datei AverageStrategiesPerHour.java und wählen Sie Clone.

Benennen Sie die neue Datei AcceptedStrategiesPerHour.

Dadurch wird eine Kopie des bestehenden Snippets erstellt, das die durchschnittlichen Strategien pro Stunde anzeigt. Jetzt müssen wir es nur noch ändern, um akzeptierte Strategien pro Stunde anstelle des Durchschnitts anzuzeigen.

 

 

Schritt 3 - Ändern Sie das Snippet

Es gibt eigentlich nicht viel zu ändern - wir werden das Offensichtliche ändern, wie Snippet und Diagrammname, und die einzige Methode, die geändert werden muss, ist die Methode addNextValue(), in der der nächste Wert für das Diagramm festgelegt wird.

Wir ändern es von

series.addValue(System.currentTimeMillis(), projectRunInfo.strategiesPerHour);

zu

series.addValue(System.currentTimeMillis(), projectRunInfo.acceptedStrategiesPerHour);

 

Mit diesem Snippet haben wir Glück gehabt, denn SQ berechnet diese Statistik bereits, so dass wir nur noch ein neues Diagramm erstellen müssen, das sie verwendet.

 

 

Schritt 4 - Neu kompilieren und SQ neu starten

und Sie werden sehen, dass die neue Tabelle in allen Motortafeln verfügbar ist:

 

Hier ist der vollständige Code des Snippets:

Paket 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 Serie = null;

  private ProjectRunInfo projectRunInfo = new ProjectRunInfo();
  private ProjectRunInfo oldProjectRunInfo = new ProjectRunInfo();

  private int checksSinceLastChange = 0;
  
  public AcceptedStrategiesPerHour() {
    super(L.t("Accepted strategies per hour"), TYPE_PROJECT_BASED);
    
    this.chart = new TimeSeriesLineChart();
    this.chart.yAxisTitle = L.t("Strategien");
    this.chart.xAxisTitle = L.t("Zeit");
    this.chart.maxTicksLimit = 4;
    this.chart.yAxisRangeMin = 0;
    
    this.series = new TimeSeries(L.t("Accepted str. per hour"), 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) {

      // nur aktualisieren, wenn sich etwas geändert hat
      oldProjectRunInfo.totalJobsDone = projectRunInfo.totalJobsDone;
      checksSinceLastChange = 0;
          
      data.put("Typ", DATA_TYPE_CHART);
      data.put("chart", this.chart.toJSON());
    
      Daten zurückgeben;
    } else {
      null zurückgeben;
    }
  }
  
  @Override
  public void addNextValue() {
        try {
        	series.addValue(System.currentTimeMillis(), projectRunInfo.acceptedStrategiesPerHour);
        } catch(Exception e) {
        	Log.error("Exc.", e);
        }
    }
}

 

War dieser Artikel hilfreich? Der Artikel war nützlich Der Artikel war nicht nützlich

Abonnieren
Benachrichtigen Sie mich bei
0 Kommentare
Inline-Rückmeldungen
Alle Kommentare anzeigen