Compressão de dados de tick e spreads em velas

Introdução

A API fornece ferramentas poderosas para comprimir dados de tick e spreads (melhores preços de compra/venda) em candles. Essa funcionalidade é especialmente útil para analisar dados históricos ou construir indicadores personalizados.

Os principais métodos de extensão para compressão de dados estão localizados na classe CandleHelper. O código-fonte completo dessa classe está disponível no GitHub.

Recomenda-se revisar este arquivo para uma compreensão completa de todos os métodos disponíveis e seus parâmetros.

Métodos de Compressão

Compressão de dados de tick em velas

// Exemplo de uso de ToCandles para ticks
var tickStorage = storageRegistry.GetTickMessageStorage(securityId, Drive, StorageFormat);
var trades = tickStorage.LoadAsync(from, to);
var candles = trades.ToCandles(mdMsg, candleBuilderProvider: candleBuilderProvider);

// Este código carrega dados de ticks do armazenamento e os converte em velas.
// mdMsg - mensagem com os parâmetros das velas criadas (tipo, período, etc.).
// candleBuilderProvider — provedor que fornece uma implementação específica do construtor de velas.

Compressão de dados de spread em velas

// Exemplo de uso de ToCandles para dados de spread
var depthStorage = storageRegistry.GetQuoteMessageStorage(securityId, Drive, StorageFormat);
var depths = depthStorage.LoadAsync(from, to);
var candles = depths.ToCandles(mdMsg, Level1Fields.SpreadMiddle, candleBuilderProvider: candleBuilderProvider);

// Aqui carregamos dados de spread e os convertemos em velas.
// Level1Fields.SpreadMiddle indica o uso do meio do spread para construir velas.
// Também é possível usar Level1Fields.BestBid ou Level1Fields.BestAsk para os melhores preços bid ou ask, respectivamente.

Parâmetros de Compressão

Ao comprimir dados, os seguintes parâmetros podem ser especificados:

  • series: A série de candles que define o tipo e os parâmetros dos candles criados.
  • type: O tipo de dado para formar os candles (por exemplo, melhor compra, melhor venda ou meio do spread).
  • candleBuilderProvider: O provedor para o construtor de candles (parâmetro opcional).

Exemplo de Uso

private IEnumerable<CandleMessage> InternalGetCandles(SecurityId securityId, DateTime? from, DateTime? to)
{
	// ... (initialization code)

	switch (type)
	{
		case BuildTypes.Ticks:
			return StorageRegistry
					.GetTickMessageStorage(securityId, Drive, StorageFormat)
					.LoadAsync(from, to)
					.ToCandles(mdMsg, candleBuilderProvider: candleBuilderProvider);

		case BuildTypes.OrderLog:
			// ... (código para construir candles a partir do log de ordens)

		case BuildTypes.Depths:
			return StorageRegistry
					.GetQuoteMessageStorage(securityId, Drive, StorageFormat)
					.LoadAsync(from, to)
					.ToCandles(mdMsg, Convert(extraType), candleBuilderProvider: candleBuilderProvider);

		// ... (other cases)
	}
}

// Este método demonstra várias formas de construir velas dependendo do tipo dos dados de origem.
// Suporta construção a partir de ticks, log de ordens, spreads e outras fontes.

Recursos Adicionais

Construção de velas a partir de diversas fontes

A API permite construir candles não apenas a partir de ticks e spreads, mas também de outras fontes de dados:

// Exemplo de construção de velas a partir de várias fontes
switch (type)
{
	case BuildTypes.Ticks:
		// ... (code for ticks)

	case BuildTypes.OrderLog:
		// ... (code for order log)

	case BuildTypes.Depths:
		// ... (code for spreads)

	case BuildTypes.Level1:
		// ... (code for Level1)

	case BuildTypes.SmallerTimeFrame:
		return candleBuilderProvider
				.GetCandleMessageBuildableStorage(StorageRegistry, securityId, mdMsg.GetTimeFrame(), Drive, StorageFormat)
				.LoadAsync(from, to);

	// ... (other cases)
}

// Este código mostra como construir velas a partir de diferentes fontes de dados: ticks, log de ordens, spreads, dados Level1 e até velas de períodos menores.

Conclusão

Os métodos de compressão de dados na API fornecem ferramentas flexíveis para trabalhar com dados de mercado. Eles permitem a conversão eficiente de dados de tick e dados de spread em candles de vários tipos e intervalos de tempo, o que é particularmente útil para análise de mercado e desenvolvimento de estratégias de negociação.