Criar um Script
O Analytics permite criar os seus próprios scripts. Como exemplo, vamos analisar o ChartDrawScript, que demonstra as capacidades de desenho de gráficos:
namespace StockSharp.Algo.Analytics
{
/// <summary>
/// O script analítico, mostra as possibilidades de desenho de gráficos.
/// </summary>
public class ChartDrawScript : IAnalyticsScript
{
Task IAnalyticsScript.Run(ILogReceiver logs, IAnalyticsPanel panel, SecurityId[] securities, DateTime from, DateTime to, IStorageRegistry storage, IMarketDataDrive drive, StorageFormats format, DataType dataType, CancellationToken cancellationToken)
{
if (securities.Length == 0)
{
logs.LogWarning("No instruments.");
return Task.CompletedTask;
}
var lineChart = panel.CreateChart<DateTimeOffset, decimal>();
var histogramChart = panel.CreateChart<DateTimeOffset, decimal>();
foreach (var security in securities)
{
// parar o cálculo se o utilizador cancelar a execução do script
if (cancellationToken.IsCancellationRequested)
break;
var candlesSeries = new Dictionary<DateTimeOffset, decimal>();
var volsSeries = new Dictionary<DateTimeOffset, decimal>();
// obter o armazenamento de candles
var candleStorage = storage.GetCandleMessageStorage(security, dataType, drive, format);
foreach (var candle in candleStorage.Load(from, to))
{
// preencher séries
candlesSeries[candle.OpenTime] = candle.ClosePrice;
volsSeries[candle.OpenTime] = candle.TotalVolume;
}
// desenhar séries no gráfico como linha e histograma
lineChart.Append($"{security} (close)", candlesSeries.Keys, candlesSeries.Values, DrawStyles.DashedLine);
histogramChart.Append($"{security} (vol)", volsSeries.Keys, volsSeries.Values, DrawStyles.Histogram);
}
return Task.CompletedTask;
}
}
}
Visão Geral
Este script foi concebido para desenhar gráficos com base nos dados de preço e volume de instrumentos financeiros ao longo de um período específico. Implementa a interface IAnalyticsScript, que define um contrato para qualquer script analítico que possa ser executado no programa Hydra.
Interface IAnalyticsScript
A interface IAnalyticsScript garante que qualquer script analítico que a implemente terá o método Run, necessário para executar as operações analíticas do script.
Método Run
O método Run é o ponto de entrada de um script analítico, onde são efetuados o processamento real dos dados e as operações analíticas.
Parâmetros:
logs: Recebe uma instância de ILogReceiver para registo no script.panel: Fornece IAnalyticsPanel, que é um elemento da interface de utilizador para desenhar gráficos e apresentar resultados.securities: Uma matriz de SecurityId que identifica os instrumentos financeiros para análise.from: A data de início do intervalo de dados para análise.to: A data de fim do intervalo de dados para análise.storage: Uma instância de IStorageRegistry que permite aceder ao armazenamento de dados de mercado.drive: Representa IMarketDataDrive para especificar a localização do armazenamento de dados de mercado.format: Um valor StorageFormats que indica o formato dos dados de mercado.dataType: DataType que descreve o tipo de dados de mercado solicitado e os seus parâmetros (por exemplo, o período temporal da candle).cancellationToken: CancellationToken que monitoriza pedidos de cancelamento.
Devolve:
- Task, que representa a operação assíncrona do script analítico.
Detalhes de Implementação
A classe ChartDrawScript processa especificamente dados de mercado para cada security fornecida. Cria dois tipos de gráficos: um gráfico de linhas para os preços de fecho e um histograma para os dados de volume.
Principais Etapas de Processamento:
- Verificar a presença de instrumentos a processar. Se nenhum estiver disponível, registar um aviso e concluir a tarefa.
- Criar um gráfico de linhas e um histograma usando o método IAnalyticsPanel.CreateChart.
- Iterar por cada security e verificar pedidos de cancelamento.
- Obter o armazenamento de candles usando o método
storage.GetCandleMessageStorage. - Carregar dados de candles dentro do intervalo de datas especificado.
- Preencher dicionários com dados de séries temporais de abertura, preços de fecho correspondentes e volumes totais.
- Desenhar os dados das séries nos gráficos usando os métodos
lineChart.AppendehistogramChart.Append.
O script utiliza estilos, como DrawStyles.DashedLine para o gráfico de linhas e DrawStyles.Histogram para o histograma, para distinguir visualmente diferentes apresentações de dados.
Ao implementar IAnalyticsScript, a classe ChartDrawScript permite integrar uma abordagem para executar scripts analíticos personalizáveis, tornando-a uma ferramenta versátil para traders e analistas que utilizam a plataforma StockSharp.
Resultado da Execução
