Получаем свечи из терминала Quik используя StockSharp

Constalgo Trading

Automatic Trading System

Авторизация

Свечи из терминала Quik используя StockSharp Свечи из терминала Quik используя StockSharp © Константин Ширяев

Всем привет! В этой статье я хотел бы рассказать как получить данные по свечам с помощью библиотек StockSharp из терминала Quik. Для этого необходимо настроить терминал Quik для совместной работы с библиотеками StockSharp. Как это сделать я уже писал тут. Откроем Visual Studio и создадим консольное приложение с названием SimpleCandle. Для работы нашего приложения нужно подключить следующие библиотеки:

using StockSharp.Algo.Candles;
using StockSharp.Quik;
using System;
using StockSharp.BusinessEntities;
using StockSharp.Messages;

На текущий момент актуальная версия StockSharp 4.3.28. Теперь все готово. Для получения свечей нам потребуются следующие типы данных. Сделаем для них поля.

        private static readonly QuikTrader QuikTrader = new QuikTrader();   //коннектор к терминалу Quik
        private static CandleManager _candleManager;                        //менеджер свечек
        private static CandleSeries _candleSeries;                          //серия свечек которую мы будем получать из менеджера
        private static Security _security;                                  //инструмент
        private const string SecId = "SBER@QJSIM";                          //идентификатор инструмента
  • QuikTrader – коннектор к терминалу Quik;
  • CandleManager – из названия ясно что это менеджер свечек;
  • CandleSeries – серия свечек которую мы будем получать из менеджера;
  • SecId – идентификатор инструмента;
  • Security – собственно сам инструмент;

Далее в теле метода Main пропишем следующее

        static void Main(string[] args)
        {
            QuikTrader.NewSecurity += security => //подписываемся на получение новых инструментов
            {
                if (_security == null && SecId == security.Id) 
                {
                    _security = security;                         
                    GetCandleInfo();
                } 
            };

            QuikTrader.Connect(); //устанавливаем подключение
            Console.ReadKey(); // приостанавливаем дальнейшее выполнение консоли до нажатия любой клавиши
        }

Здесь мы подписываемся на получение всех новых инструментов. Далее устанавливаем подключение и приостанавливаем дальнейшее выполнение консоли до нажатия любой клавиши. Как только установится подключение коннектор начнет получать все инструменты, которые будут приходить к нам через событие NewSecurity на которое мы подписались лямбда-выражением или анонимным методом. В теле метода мы проверяем совпадает ли наш идентификатор с идентификатором пришедшего инструмента и не содержит ли в себе поле _security значение по умолчанию, то есть null. Как только условия совпадут, то есть вернут истину (true) в поле _security будет присвоена ссылка на инструмент по которому нужно получить свечи, а все следующие проверки не сработают так как поле _security уже не вернет null. Сразу же после того как мы получили инструмент запускаем метод GetCandleInfo() в котором собственно и будем получать данные по свечам.

        private static void GetCandleInfo()
        {
            _candleSeries = new CandleSeries(typeof(TimeFrameCandle), _security, TimeSpan.FromMinutes(1));
            _candleManager = new CandleManager(QuikTrader);
            _candleManager.Processing += (series, candle) =>
            {
                if(candle.State == CandleStates.Finished)
                Console.WriteLine("Свеча: " +
                                  $"Инструмент => {candle.Security.Code} " +
                                  $"Open =>{candle.OpenPrice} " +
                                  $"Close =>{candle.ClosePrice} " +
                                  $"High =>{candle.HighPrice} " +
                                  $"Low =>{candle.LowPrice} " +
                                  $"Time =>{candle.OpenTime} " +
                                  $"Volime=>{candle.TotalVolume}");
            };

            _candleManager.Start(_candleSeries);
        }

 

Рассмотрим метод GetCandleInfo.

В _candleSeries мы присваиваем ссылку на экземпляр класса СandleSeries. Этот тип данных говорит какие свечи, по какому инструменту и какого таймфрейма мы будем получать. Из 34 строки видно, что получать мы будем свечи типа TimeFrameCandle (тип свечи может быть не только по таймфрейму), по инструменту SBER@QJSIM идентификатор которого мы указали выше и таймфрейм свечей - 1 минута. Далее на строке 35 создаем экземпляр CandleManager передавая ему в качестве параметра коннектор QuikTrader. Для того что бы получить свечи необходимо подписаться на событие Processing менеджера свечей. Через данное событие к нам будут приходить свечи по одной. Подписываемся как и в случае с инструментом анонимным методом. В теле метода на строке 37 проверяем закрылась свеча или нет. Выводить будем только те свечи которые уже закрыты. Воспользуемся статическим классом и его методом Console.WriteLine для печати данных свечей. Со строки 39 по 46 запрашиваем:

  • Код инструмента
  • цена открытия
  • цена закрытия
  • цена максимума
  • цена минимума
  • время открытия
  • объем свечи.

Для импорт свечей осталось только вызвать метод Start менеджера свечей и передать ему параметром нашу серию свечей. В результате мы увидим консоль в которую будут печататься свечи приходящие из терминала Quik. Свечи получать можно по разным инструментам, разных тайм-фреймов и типов одновременно. Естественно код представленный мной не является эталоном и имеет ознакомительный характер.

Проект на Github.com

На этом все. Всем добра.

Скидка на обучение от StockSharp 80%

Прочитано 4275 раз Последнее изменение Понедельник, 18 января 2021 12:54
Опубликовано в StockSharp - говно
Оцените материал
(1 Голосовать)
Константин

Весь представленный мною исходный код является ознакомительным материалом и не является рабочим алгоритмом. При использовании его в реальной торговле, всю ответственность за возможные ошибки Вы берете на себя. 

Другие материалы в этой категории: StockSharp - говно

Оставить комментарий

Убедитесь, что Вы ввели всю требуемую информацию, в поля, помеченные звёздочкой (*). HTML код не допустим.

Календарь

« Май 2024 »
Пн Вт Ср Чт Пт Сб Вс
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31