Documentación

Aplicaciones

Última actualización el 18. 5. 2020 by Mark Fric

Gráfico - Estrategias aceptadas por hora

Los gráficos del motor son pequeños gráficos visibles en el motor, por ejemplo Gráfico de memoria heap o Estrategias medias por hora gráfico.

Como la mayoría de las cosas en SQ X, estos gráficos se implementan utilizando Recorteslo que significa que son ampliables: puede añadir su propio gráfico.

 

 

Paso 1 - Abrir el editor de código

Haga clic en el icono Editor de código para cambiar al Editor.

 

 

Paso 2 - Crear un nuevo fragmento de gráfico de motor

Aún no existe un asistente para gráficos de motores, pero puede clonar fácilmente un fragmento existente y modificarlo para que muestre las estrategias aceptadas por hora.

En el árbol del Navegador a la derecha vaya a Snippets -> SQ -> Engine charts, luego haga click en el AverageStrategiesPerHour.java con el botón derecho del ratón, y elija Clone.

Nombre el nuevo archivo AcceptedStrategiesPerHour.

Esto creará una copia del fragmento existente que muestra las estrategias promedio por hora. Ahora sólo tenemos que modificarlo para que muestre las estrategias aceptadas por hora en lugar de la media.

 

 

Paso 3 - modificar el fragmento

En realidad no hay mucho que modificar - modificaremos lo obvio, como el snippet y el nombre del gráfico, y el único método que necesita ser modificado es el método addNextValue() donde se establece el siguiente valor para el gráfico.

Lo modificaremos de

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

a

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

 

Hemos tenido suerte con este fragmento, porque SQ ya calcula esta estadística, así que sólo tenemos que crear un nuevo gráfico que la utilice.

 

 

Paso 4 - Recompilar y reiniciar SQ

y verás el nuevo gráfico disponible en todos los paneles del motor:

 

Aquí está el código completo del fragmento:

paquete SQ.EngineCharts;

importar org.json.JSONObject;

import com.strategyquant.lib.*;
import com.strategyquant.datalib.*;
import com.strategyquant.tradinglib.*;

public class EstrategiasAceptadasPorHora extends EngineChart {
  private TimeSeriesLineChart gráfico = null;
  private TimeSeries series = null;

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

  privado int checksSinceLastChange = 0;
  
  public EstrategiasAceptadasPorHora() {
    super(L.t("Estrategias aceptadas por hora"), TYPE_PROJECT_BASED);
    
    this.chart = nuevo TimeSeriesLineChart();
    this.chart.yAxisTitle = L.t("Estrategias");
    this.chart.xAxisTitle = L.t("Tiempo");
    this.chart.maxTicksLimit = 4;
    this.chart.yAxisRangeMin = 0;
    
    this.series = new TimeSeries(L.t("Str. aceptada por hora"), 20);
    this.series.color = ChartsConst.COLOR_GREEN;
    ((TimeSeriesLineChart)this.chart).addSeries(series);
    
    	oldProjectRunInfo.totalJobsDone = -1;
    	checksSinceLastChange = 0;
  }
 
  @Override
  public JSONObject print() {
    JSONObject datos = new JSONObject();
    
    project.loadTrackingInfo(projectRunInfo, false);
    
    checksSinceLastChange++;
    
    if((oldProjectRunInfo.totalJobsDone == -1 || projectRunInfo.totalJobsDone != oldProjectRunInfo.totalJobsDone) || checksSinceLastChange > 10) {

      // actualizar sólo si algo ha cambiado
      oldProjectRunInfo.totalJobsDone = projectRunInfo.totalJobsDone;
      checksSinceLastChange = 0;
          
      data.put("tipo", DATA_TYPE_CHART);
      data.put("gráfico", this.gráfico.toJSON());
    
      return data;
    } else {
      return null;
    }
  }
  
  @Override
  public void addNextValue() {
        try {
        	series.addValue(System.currentTimeMillis(), projectRunInfo.acceptedStrategiesPerHour);
        } catch(Exception e) {
        	Log.error("Exc.", e);
        }
    }
}

 

¿Le ha resultado útil este artículo? El artículo era útil El artículo no era útil

Suscríbase a
Notificar a
0 Comentarios
Feedbacks de Inline
Ver todos los comentarios