Documentação
Aplicações
Última atualização em 18. 5. 2020 por Mark Fric
Quadro - Estratégias aceitas por hora
Conteúdo da página
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


