← Atrás

Загрузка истории для тестирования

Добрый день!

Подскажите пожалуйста, в Уроке 4, CandlesDownloadingUsing приведен код загрузки с Finam Как сделать загрузку истории из Quik ?

¿Le resultó útil este tema?

Compartir tema

Comentarios (21)

Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario

Support
Support

Добрый день

Загрузка истории сделана в нашем примере SampleQuik. Загрузка идёт напрямую через коннектор. Для этого необходимо вызвать метод Connector.SubscribeCandles.

po_saa
po_saa Autor

перерыл все примеры SampleQuick не нашел Скиньте пожалуйста ссылку на пример

Support
Support

po_saa: перерыл все примеры SampleQuick не нашел Скиньте пожалуйста ссылку на пример

Добрый день

Проект называется SampleQuik. Исходные коды лежат здесь https://github.com/StockSharp/StockSharp/tree/master/Samples/Quik/SampleQuik или в релиз архиве.

В частности в программе есть код подписки на свечи https://github.com/StockSharp/StockSharp/blob/master/Samples/Quik/SampleQuik/ChartWindow.xaml.cs#L59 Все коннекторы запрашивают свечи подобным способом, и не зависит от типа подключения.

po_saa
po_saa Autor

Ответьте, пожалуйста!

перерыл все примеры SampleQuick не нашел Скиньте пожалуйста ссылку на пример

po_saa
po_saa Autor

Урок 4 CandlesDownloadUsing

пример SimpleQuik нашел

сделал процедуру

    private void GetHistoryCandlesMy()
    {
        //торговый инструмент
        var security = Connection.SelectedSecurity;
        //создаем серию свечей
        _series = new CandleSeries(typeof(TimeFrameCandle), security, TimeSpan.FromSeconds(60));
        Connection.SafeConnection.Trader.SubscribeCandles(_series,
               DateTime.Now - TimeSpan.FromDays(10),
                DateTime.Now - TimeSpan.FromDays(1));
    }

но _series не заполняется

посоветуйте пожалуйста.

Нужно получить историю через коннектор Quik и провести на ней тестирование

Support
Support

Пожалуйста, попробуйте сначала пример SampleQuik. Выводятся ли необходимые свечи в нём.

po_saa
po_saa Autor

Добрый день! вот SampleQuik

да. выводятся

как теперь выгрузить историю на диск или в набор свечей?

Support
Support

Добрый день

На график уже рисуются готовые свечи. Вот код рисования https://github.com/StockSharp/StockSharp/blob/master/Samples/Quik/SampleQuik/ChartWindow.xaml.cs#L69

Вы можете сохранить на диск данные через наше хранилище. https://doc.stocksharp.ru/html/e4a57b52-bd14-4640-a7c7-0979dba1ad0a.htm В примере используется хранилище для тиковых сделок. Вы можете заменить на свечное хранилище

var candleStorage = storage.GetCandleStorage(typeof(TimeFrameCandle), security, tf);
po_saa
po_saa Autor

для общего понимания , было бы здОрово, если бы где-то основные процессы были разрисованы в виде алгоритма. процедура получения свечей процедура сохранения процедура прорисовки процедура вызова стратегий и т.д.

у вас есть http://doc.stocksharp.ru/html/P_StockSharp_Algo_Candles_CandleManager_Container.htm если бы туда ещё прикрутить описание функций (что делают, для чего предназначены)

po_saa
po_saa Autor

при создании окна вылазит ошибка она из библиотеки и я не понимаю почему подскажите пожалуйста

po_saa
po_saa Autor

при создании окна вылазит ошибка она из библиотеки и я не понимаю почему подскажите пожалуйста

Support
Support

Добрый день

Ошибка означает что скрипт Квик разорвал подключение. Приведите пожалуйста логи принимающей стороны. Они находятся в директории со скриптом.

po_saa
po_saa Autor
po_saa
po_saa Autor

это при том что SampleQuik с тем же LUA скриптом работает "на ура"

Support
Support

Используются ли у вас одинаковые версии S# для ЛУА части и для вашего приложения? Или это разные версии?

po_saa
po_saa Autor

библиотеки компонентов поменял на 4.5 и St# 4.4.8

теперь говорит что не может подключиться

могу дать доступ к своему компу по TeamViewer

po_saa
po_saa Autor

Заработало, блин! оказывается в ChartWidow подписка на свечи должна быть ТАКАЯ:

		_trader.CandleSeriesProcessing += ProcessNewCandle;
		_trader.SubscribeCandles(_candleSeries, from, to);

эти две функции работают в паре

Остаётся главный вопрос: как выгрузить на диск и в каком формате, чтобы его потом могла прочитать функция (..... какая функция читает файл для превращения в набор свечей?)

Support
Support

Добрый день

Ранее была рекомендация использовать хранилище для маркет данных https://stocksharp.ru/posts/m/44115/

po_saa
po_saa Autor

а пользоваться ею как? выложите пожалуйста пример или покажите код

po_saa
po_saa Autor

Господа, ответьте пожалуйста!

po_saa
po_saa Autor

подскажите пожалуйста

сделал функцию загрузки тиковых данных истории как загрузить данные в хранилище Trades

    private void GetQuikHistory_Click(object sender, RoutedEventArgs e)
    {
        //торговый инструмент
        var security = Connection.SelectedSecurity;
        //создаем серию свечей
        _series = new CandleSeries(typeof(TimeFrameCandle), security, TimeSpan.FromSeconds(60));
        Connection.SafeConnection.Trader.SubscribeCandles(_series,
               DateTime.Now - TimeSpan.FromDays(10),
                DateTime.Now - TimeSpan.FromDays(1));

        List<Trade> trades = new List<Trade>();

        //данные всегда сохраняются в файл. Это внутренний формат S#
        //Путь к директории, где будут сохраняться (или считываться) маркет-данные, 
        //указывается через свойство  LocalMarketDataDrivePath у хранилища IStorageRegistryDefaultDrive
        using (var drive = new LocalMarketDataDrive())
        {
            // get AAPL storage
            var aaplStorage = drive.GetSecurityDrive(security);

            // получить хранилище тиков
            var tradeStorage = (IMarketDataStorage<Trade>)aaplStorage.GetTickStorage(new TickCsvSerializer(aaplStorage.SecurityId));

            // сохранение тиков на диск
            tradeStorage.Save(trades);

            // loading ticks
            var loadedTrades = tradeStorage.Load(DateTime.Today, DateTime.Today + TimeSpan.FromMinutes(1000));

            foreach (var trade in loadedTrades)
            {
                Console.WriteLine(LocalizedStrings.Str2968Params, trade.Id, trade);
            }

            Console.ReadLine();

            // deleting ticks (and removing file)
            tradeStorage.Delete(DateTime.Today, DateTime.Today + TimeSpan.FromMinutes(1000));
        }
    }