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