StockSharp

Форк
0
/
ChartDrawScript.cs 
46 строк · 1.6 Кб
1
namespace StockSharp.Algo.Analytics
2
{
3
	/// <summary>
4
	/// The analytic script, shows chart drawing possibilities.
5
	/// </summary>
6
	public class ChartDrawScript : 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 lineChart = panel.CreateChart<DateTimeOffset, decimal>();
17
			var histogramChart = panel.CreateChart<DateTimeOffset, decimal>();
18

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

25
				var candlesSeries = new Dictionary<DateTimeOffset, decimal>();
26
				var volsSeries = new Dictionary<DateTimeOffset, decimal>();
27

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

31
				foreach (var candle in candleStorage.Load(from, to))
32
				{
33
					// fill series
34
					candlesSeries[candle.OpenTime] = candle.ClosePrice;
35
					volsSeries[candle.OpenTime] = candle.TotalVolume;
36
				}
37

38
				// draw series on chart as line and histogram
39
				lineChart.Append($"{security} (close)", candlesSeries.Keys, candlesSeries.Values, ChartIndicatorDrawStyles.DashedLine);
40
				histogramChart.Append($"{security} (vol)", volsSeries.Keys, volsSeries.Values, ChartIndicatorDrawStyles.Histogram);
41
			}
42

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

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

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

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

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