← Zurück

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

Добрый день!

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (21)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

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));
        }
    }