Documentazione

Applicazioni

Ultimo aggiornamento il 18. 5. 2020 da Mark Fric

Grafico - Strategie accettate per ora

I grafici del motore sono piccoli grafici visibili nel motore, per esempio Grafico della memoria heap o Strategie medie all'ora grafico.

Come per la maggior parte delle cose in SQ X, questi grafici sono implementati usando Frammenti, il che significa che sono estendibili e che è possibile aggiungere il proprio grafico.

 

 

Passo 1 - Aprire l'editor di codice

Fare clic sull'icona dell'editor di codice per passare all'editor.

 

 

Passo 2 - Creare un nuovo snippet del grafico Engine

Non esiste ancora una procedura guidata per i grafici dei motori, ma è possibile clonare facilmente uno snippet esistente e modificarlo per visualizzare le strategie accettate per ora.

Nella struttura del Navigatore a destra, andare su Snippets -> SQ -> Grafici motore, quindi fare clic su AverageStrategiesPerHour.java con il tasto destro del mouse e scegliere Clone.

Nominare il nuovo file AcceptedStrategiesPerHour.

Questo creerà una copia dello snippet esistente che visualizza le strategie medie per ora. Ora dobbiamo solo modificarlo per visualizzare le strategie accettate all'ora invece della media.

 

 

Passo 3 - modificare lo snippet

In realtà non c'è molto da modificare: modificheremo le cose più ovvie, come lo snippet e il nome del grafico, e l'unico metodo che deve essere modificato è il metodo addNextValue(), in cui viene impostato il valore successivo per il grafico.

Lo modificheremo da

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

a

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

 

Siamo stati fortunati con questo snippet, perché SQ calcola già queste statistiche, quindi dobbiamo solo creare un nuovo grafico che le utilizzi.

 

 

Passo 4 - Ricompilare e riavviare SQ

e vedrete la nuova tabella disponibile in tutti i pannelli del motore:

 

Ecco il codice completo dello snippet:

pacchetto SQ.EngineCharts;

importare org.json.JSONObject;

importare com.strategyquant.lib.*;
importare 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("Strategie accettate per ora"), TYPE_PROJECT_BASED);
    
    this.chart = new TimeSeriesLineChart();
    this.chart.yAxisTitle = L.t("Strategie");
    this.chart.xAxisTitle = L.t("Tempo");
    this.chart.maxTicksLimit = 4;
    this.chart.yAxisRangeMin = 0;
    
    this.series = new TimeSeries(L.t("Str. accettate per ora"), 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) {

      // aggiorna solo se qualcosa è cambiato
      oldProjectRunInfo.totalJobsDone = projectRunInfo.totalJobsDone;
      checksSinceLastChange = 0;
          
      data.put("type", DATA_TYPE_CHART);
      data.put("chart", this.chart.toJSON());
    
      restituire i dati;
    } else {
      return null;
    }
  }
  
  @Override
  public void addNextValue() {
        try {
        	series.addValue(System.currentTimeMillis(), projectRunInfo.acceptedStrategiesPerHour);
        } catch(Exception e) {
        	Log.error("Ecc.", e);
        }
    }
}

 

Questo articolo è stato utile? L'articolo è stato utile L'articolo non è stato utile

Abbonarsi
Notificami
0 Commenti
Feedback in linea
Visualizza tutti i commenti