StockSharp

Форк
0
/
NormalizePriceScript.cs 
46 строк · 1.4 Кб
1
namespace StockSharp.Algo.Analytics
2
{
3
	/// <summary>
4
	/// The analytic script, normalize securities close prices and shows on same chart.
5
	/// </summary>
6
	public class NormalizePriceScript : 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
			var chart = panel.CreateChart<DateTimeOffset, decimal>();
17

18
			foreach (var security in securities)
19
			{
20
				// stop calculation if user cancel script execution
21
				if (cancellationToken.IsCancellationRequested)
22
					break;
23

24
				var series = new Dictionary<DateTimeOffset, decimal>();
25

26
				// get candle storage
27
				var candleStorage = storage.GetTimeFrameCandleMessageStorage(security, timeFrame, drive, format);
28

29
				decimal? firstClose = null;
30

31
				foreach (var candle in candleStorage.Load(from, to))
32
				{
33
					firstClose ??= candle.ClosePrice;
34

35
					// normalize close prices by dividing on first close
36
					series[candle.OpenTime] = candle.ClosePrice / firstClose.Value;
37
				}
38

39
				// draw series on chart
40
				chart.Append(security.ToStringId(), series.Keys, series.Values);
41
			}
42

43
			return Task.CompletedTask;
44
		}
45
	}
46
}

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

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

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

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