Documentação

Aplicações

Última atualização em 18. 5. 2020 por Mark Fric

Quadro - Estratégias aceitas por hora

Os gráficos do motor são pequenos gráficos que são visíveis no Motor - por exemplo Gráfico de memória de pilha ou Estratégias médias por hora gráfico.

Assim como a maioria das coisas no SQ X, estes gráficos são implementados usando SnippetsO que significa que eles são extensíveis - você pode adicionar sua própria tabela lá.

 

 

Passo 1 - Editor de código aberto

Clique no ícone do editor de código para mudar para Editor.

 

 

Etapa 2 - Criar nova tabela de motor snippet

Ainda não existe um assistente de gráficos de motor, mas você pode facilmente clonar um trecho existente e modificá-lo para exibir estratégias aceitas por hora.

Na árvore Navigator, à direita, vá para Snippets -> SQ -> Engine charts, depois clique em AverageStrategiesPerHour.java com o botão direito do mouse, e escolha Clone.

Nomeie o novo arquivo AcceptedStrategiesPerHour.

Isto criará um policial do trecho existente que exibe estratégias médias por hora. Agora só temos que modificá-lo para exibir estratégias aceitas por hora ou média.

 

 

Etapa 3 - modificar o snippet

Não há realmente muito a modificar - modificaremos o óbvio, como o nome do snippet e do gráfico, e o único método que precisa ser modificado é o método addNextValue() onde o próximo valor para o gráfico é definido.

Modificaremos a partir de

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

para

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

 

Tivemos sorte com este trecho, porque a SQ já calcula esta estatística, por isso só temos que criar um novo gráfico que a utilize.

 

 

Passo 4 - Recompilar e reiniciar o SQ

e você verá uma nova tabela disponível em todos os painéis do motor:

 

Aqui está o código completo do snippet:

pacote SQ.EngineCharts;

importação org.json.JSONObject;

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

classe pública Estratégias AceitasPerHora estende o EngineChart {
  tabela privada TimeSeriesLineChart = nulo;
  série privada TimeSeries = nulo;

  privado ProjectRunInfo projectRunInfo = novo ProjectRunInfo();
  privado ProjectRunInfo antigoProjectRunInfo = novo ProjectRunInfo();

  cheques int privadosSinceLastChange = 0;
  
  Estratégias Públicas Aceitas por Hora() {
    super(L.t("Estratégias aceitas por hora"), TYPE_PROJECT_BASED);
    
    this.chart = novo TimeSeriesLineChart();
    this.chart.yAxisTitle = L.t("Estratégias");
    this.chart.xAxisTitle = L.t("Time");
    este.gráfico.maxTicksLimit = 4;
    this.chart.yAxisRangeMin = 0;
    
    this.series = novo 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
  impressão pública JSONObject() {
    JSONObject data = novo JSONObject();
    
    project.loadTrackingInfo(projectRunInfo, false);
    
    chequesDesdeDesdeLastChange++;
    
    if((oldProjectRunInfo.totalJobsDone == -1 || projectRunInfo.totalJobsDone != oldProjectRunInfo.totalJobsDone) || checksSinceLastChange > 10) {

      // atualizar somente se algo mudou
      oldProjectRunInfo.totalJobsDone = projectRunInfo.totalJobsDone;
      checksSinceLastChange = 0;
          
      data.put("type", DATA_TYPE_CHART);
      data.put("chart", this.chart.toJSON());
    
      retornar dados;
    } else {
      devolução nula;
    }
  }
  
  @Override
  vazio público addNextValue() {
        tente {
        	series.addValue(System.currentTimeMillis(), projectRunInfo.acceptedStrategiesPerHour);
        catch(Exceção e) } catch(Exceção e) {
        	Log.error("Exc.", e);
        }
    }
}

 

Este artigo foi útil? O artigo foi útil O artigo não foi útil

Assine
Notificação de
0 Comentários
Feedbacks em linha
Ver todos os comentários