ティックデータとスプレッドのローソク足への圧縮

はじめに

API は、ティックデータとスプレッド(最良買気配/売気配価格)をローソク足へ圧縮するための強力なツールを提供します。この機能は、履歴データの分析やカスタムインジケーターの構築に特に役立ちます。

データ圧縮の主要な拡張メソッドは、CandleHelper クラスにあります。このクラスの完全なソースコードは GitHub で入手できます

利用可能なすべてのメソッドとそのパラメーターを完全に理解するために、このファイルを確認することを推奨します。

圧縮メソッド

ティックデータのローソク足への圧縮

// ティックに対する ToCandles の使用例
var tickStorage = storageRegistry.GetTickMessageStorage(securityId, Drive, StorageFormat);
var trades = tickStorage.LoadAsync(from, to);
var candles = trades.ToCandles(mdMsg, candleBuilderProvider: candleBuilderProvider);

// このコードはストレージからティックデータを読み込み、ローソク足へ変換します。
// mdMsg - 作成されるローソク足のパラメーター(タイプ、時間枠など)を持つメッセージ。
// candleBuilderProvider - 特定のローソク足ビルダー実装を提供するプロバイダー。

スプレッドデータのローソク足への圧縮

// スプレッドデータに対する ToCandles の使用例
var depthStorage = storageRegistry.GetQuoteMessageStorage(securityId, Drive, StorageFormat);
var depths = depthStorage.LoadAsync(from, to);
var candles = depths.ToCandles(mdMsg, Level1Fields.SpreadMiddle, candleBuilderProvider: candleBuilderProvider);

// ここではスプレッドデータを読み込み、ローソク足へ変換します。
// Level1Fields.SpreadMiddle は、ローソク足の構築にスプレッドの中央値を使用することを示します。
// 最良買気配価格または最良売気配価格には、それぞれ Level1Fields.BestBid または Level1Fields.BestAsk も使用できます。

圧縮パラメーター

データを圧縮する際には、次のパラメーターを指定できます。

  • series: 作成されるローソク足のタイプとパラメーターを定義するローソク足シリーズ。
  • type: ローソク足形成に使用するデータのタイプ(例: 最良買気配、最良売気配、またはスプレッド中央値)。
  • candleBuilderProvider: ローソク足ビルダーのプロバイダー(省略可能なパラメーター)。

使用例

private IEnumerable<CandleMessage> InternalGetCandles(SecurityId securityId, DateTime? from, DateTime? to)
{
	// ...(初期化コード)

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

		case BuildTypes.OrderLog:
			// ...(オーダーログからローソク足を構築するコード)

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

		// ...(その他のケース)
	}
}

// このメソッドは、ソースデータのタイプに応じたローソク足構築のさまざまな方法を示します。
// ティック、オーダーログ、スプレッド、およびその他のソースからの構築に対応しています。

追加機能

さまざまなソースからのローソク足構築

API では、ティックとスプレッドだけでなく、他のデータソースからもローソク足を構築できます。

// さまざまなソースからローソク足を構築する例
switch (type)
{
	case BuildTypes.Ticks:
		// ...(ティック用のコード)

	case BuildTypes.OrderLog:
		// ...(オーダーログ用のコード)

	case BuildTypes.Depths:
		// ...(スプレッド用のコード)

	case BuildTypes.Level1:
		// ...(Level1 用のコード)

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

	// ...(その他のケース)
}

// このコードは、ティック、オーダーログ、スプレッド、Level1 データ、さらにはより小さい時間枠のローソク足など、異なるデータソースからローソク足を構築する方法を示します。

まとめ

API のデータ圧縮メソッドは、市場データを扱うための柔軟なツールを提供します。ティックデータとスプレッドデータを、さまざまなタイプおよび時間間隔のローソク足へ効率的に変換できるため、市場分析や取引戦略の開発に特に有用です。