StockSharp

Форк
0
/
IndicatorScript.cs 
50 строк · 1.7 Кб
1
namespace StockSharp.Algo.Analytics
2
{
3
	/// <summary>
4
	/// The analytic script, using indicator ROC.
5
	/// </summary>
6
	public class IndicatorScript : 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
			// creating 2 panes for candles and indicator series
17
			var candleChart = panel.CreateChart<DateTimeOffset, decimal>();
18
			var indicatorChart = panel.CreateChart<DateTimeOffset, decimal>();
19

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

26
				var candlesSeries = new Dictionary<DateTimeOffset, decimal>();
27
				var indicatorSeries = new Dictionary<DateTimeOffset, decimal>();
28

29
				// creating ROC
30
				var roc = new RateOfChange();
31

32
				// get candle storage
33
				var candleStorage = storage.GetTimeFrameCandleMessageStorage(security, timeFrame, drive, format);
34

35
				foreach (var candle in candleStorage.Load(from, to))
36
				{
37
					// fill series
38
					candlesSeries[candle.OpenTime] = candle.ClosePrice;
39
					indicatorSeries[candle.OpenTime] = roc.Process(candle).GetValue<decimal>();
40
				}
41

42
				// draw series on chart
43
				candleChart.Append($"{security} (close)", candlesSeries.Keys, candlesSeries.Values);
44
				indicatorChart.Append($"{security} (ROC)", indicatorSeries.Keys, indicatorSeries.Values);
45
			}
46

47
			return Task.CompletedTask;
48
		}
49
	}
50
}

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

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

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

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