StockSharp

Форк
0
/
PriceVolumeScript.cs 
43 строки · 1.4 Кб
1
namespace StockSharp.Algo.Analytics
2
{
3
	/// <summary>
4
	/// The analytic script, calculating distribution of the volume by price levels.
5
	/// </summary>
6
	public class PriceVolumeScript : IAnalyticsScript
7
	{
8
		Task IAnalyticsScript.Run(ILogReceiver logs, IAnalyticsPanel panel, SecurityId[] securities, DateTime from, DateTime to, IStorageRegistry storage, IMarketDataDrive drive, StorageFormats format, TimeSpan timeFrame, CancellationToken cancellationToken)
9
		{
10
			if (securities.Length == 0)
11
			{
12
				logs.AddWarningLog("No instruments.");
13
				return Task.CompletedTask;
14
			}
15

16
			// script can process only 1 instrument
17
			var security = securities.First();
18

19
			// get candle storage
20
			var candleStorage = storage.GetTimeFrameCandleMessageStorage(security, timeFrame, drive, format);
21

22
			// get available dates for the specified period
23
			var dates = candleStorage.GetDates(from, to).ToArray();
24

25
			if (dates.Length == 0)
26
			{
27
				logs.AddWarningLog("no data");
28
				return Task.CompletedTask;
29
			}
30

31
			// grouping candles by middle price
32
			var rows = candleStorage.Load(from, to)
33
				.GroupBy(c => c.LowPrice + c.GetLength() / 2)
34
				.ToDictionary(g => g.Key, g => g.Sum(c => c.TotalVolume));
35

36
			// draw on chart
37
			panel.CreateChart<decimal, decimal>()
38
				.Append(security.ToStringId(), rows.Keys, rows.Values, ChartIndicatorDrawStyles.Histogram);
39

40
			return Task.CompletedTask;
41
		}
42
	}
43
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.