Видео-уроки: Hydra (S#.Data) основные моменты
[vk]http://vk.com/video_ext.php?oid=-66650972&id=167470414&hash=b23e64182732032e&hd=3[/vk]
Темы занятия:
-
-
- Работа с Гидрой (S#.Data)
-
- Получение данных через Гидру
- Использование полученных данных в своем проекте
Полезные ссылки: Документация по S#.Data Создание своего источника для S#.Data,
Вложения: Скачать проекты
コメント (31)
ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください
Осталась куча вопросов.
Дело в том, что данный шаг никак не повлияет на корректность использования данных этого инструмента. В дальнейшем, если мы будем использовать эти данные в коде программы мы легко сможем поменять шаг . Поэтому автор не делает на этом акцент. Как это в принципе и делается в проекте по этому уроку. Вот скриншот (из проекта):
Когда мы качаем данные с финама, то финам не предоставляет данных о минимальном шаге, поэтому автоматически подставляется единица.
Да, тут нужно очень осторожно подходить к решению этого вопроса. Можно поставить шаг 10 и пожертвовать результатами тестирования, хотя если система долгосрочная, то это не так сильно повлияет на её результаты. Второй вариант - разделить склеенный фьюч на два 1) Где шаг равен 5 и 2) где шаг равен 10. В дальнейшем делать раздельный тестинг
2)Финам -> Можно качать сделки, когда угодно. То есть один раз включили, она ни с кем не конфликтует. Не хранит стаканы, можно закачивать готовые свечки. По сути самый удобный источник. РТС источник также работает, но там, чтобы получить список инструментов придется скачивать по каждой сделки с каждого инструмента (опять же не совсем удобно, а данные точно такие же).
3)Плаза-> Неплохой вариант, не конфликтует с роботом. Может одновременно и то и то работать. Плазу имеет смысл использовать, только если Вы собираетесь сохранять то, чего нет у финама (Ордер лог, стаканы к примеру).
Серверный режим Гидры, это когда одна программа запущена как сервер (скачивает данные с источников), а другие экземпляры Гидры подключаются к серверу и тянут из нее загруженные данные. Чтобы это работало надо сделать следующее:
Меню Дополнительно -> Настройки… здесь выставить галочку Серверный режим. Это будет Сервер.
Запускаем на другом ПК гидру и настраиваем ее как клиент, для этого находим источник S#.Data Server, переходим в его настройки и там указываем параметры для подключения к серверной Гидре: адрес к серверу, при необходимости логин и пароль.
Это основные настройки, необходимые для создания схемы Сервер-Клиент на Гидре.
Если выставлена опция Анонимно, то к этому серверу для доступа не нужно указывать логин/пароль, в противном случае, необходимо указывать логин/пароль учетной записи Windows, где запущен Сервер Гидры.
В логах отображаются не только ошибки, но и предупреждения, информационные сообщения. Опция Игнорировать ошибки заставляет Гидру не обращать внимание на ошибки и выполнять следующие действия.
Да, все верно. Можно поставить её, она совсем не будет конфликтовать с роботом.
Но для этого необходимо иметь соответствующие технические возможности, как минимум надо чтобы у ПК где стоит Гидра-сервер был белый IP адрес, а также настроены сетефой экран и т.п. Вы же хотите через интернет подключаться, если я правильно понял.
Поясните тогда эти ошибки (приведены на скринах). Поясняю свои действия
RIH3-3.13 сделок 5 323 тыс. RIU3-9.13 сделок 10 949 тыс – это что по ближнему контракту сделок в 2 раза меньше чем по дальнему ? Это как ….так не бывает
З.Ы. Заранее спасибо за ответы. Прежде чем тестировать всегда нужно решить вопрос данных. Вы великолепно постарались решить этот вопрос, хранить самые подробные данные. Но есть еще вопрос качества этих данных, зашумленная синусойда, реальные данные в которых есть шпильки по 10 000 пунктов (или как в MetaTrader 5 (минутки,а внутри минутки все имитируется ( моделируются)) и т.д. и т.п.
Разных данных там точно нет. За исключением только того, как оба эти источника сохраняют рыночные данные. К примеру, в одном источнике могут быть внебиржевые сделки, а в другом нет.
В любом случае я советую разобраться с одним источником.
Добрый день. Я хочу, чтобы при следующем запуске приложения (например, на следующий день) в стратегию загрузились все сделки, совершённые раньше, и рассчиталась текущая позиция по стратегии. В связи с этим возникли два вопроса.
Это можно сделать через метод стратегии ProcessNewOrders, но в него подаются ордера. Можно ли сделать хранилище ордеров? Я нашёл GetOrderTraceStorage, но он сохраняет историю изменений по ордеру. Можно ли как-то потом эту историю изменений превратить в ордера, которые потом передать в метод ProcessNewOrders?
Попробовал реализовать это через хранилище сделок, в которое я сохраняю только свои сделки. Но возникает ошибка.
Connection.SafeConnection.Trader.NewMyTrades += mytrades => this.GuiAsync(() => _storageRegistry.GetTradeStorage(Connection.SelectedSecurity).Save(mytrades));
Connection.SafeConnection.Trader.NewMyTrades += mytrades => this.GuiAsync(() => _storageRegistry.GetTradeStorage(Connection.SelectedSecurity).Save(mytrades.ToList()));
Но теперь возникает вот такая ошибка. Не понимаю, почему, путь я указываю выше в коде.
Помогите, пожалуйста, добить эту тему, а то никак не получается загрузить прошлую информацию в стратегию.
Connection.SafeConnection.Trader.NewMyTrades += mytrades => this.GuiAsync(() => { _storageRegistry.GetTradeStorage(Connection.SelectedSecurity).Save(mytrades.Select(t => t.Trade).ToList()); });
Спасибо. На самом деле задача - сделать так, чтобы при запуске приложения стратегия знала своё состояние на момент последней работы (например, при выключении на ночь). То есть, чтобы текущая позиция, сделки, PnL попали в запускаемую стратегию. В документации я нашёл метод ProcessNewOrders, который и показался мне оптимальным для этой цели - загружаем в стратегию ордера, а всё остальное рассчитывается автоматически. Но этот метод принимает на вход ордера, а хранилище можно сделать только из OrderTraceItem. Можно ли как-то потом OrderTraceItem превратить в Order? Или всё-же как-то можно сделать хранилище ордеров Order?
А, кажется, нашёл. У класса OrderTraceItem есть свойство Order. Попробую вечером.
Вроде путь присваивается до обращения по нему. Пробовал указывать путь @"С:\History\S\SBER@QJSIM", но всё-равно не работает. Зато если закомментировать строку, в которой сохраняется путь, то всё работает, с ней не хочет.
может быть какой-то символ не латинский, и имя самой директории. Если это не поможет, то надо смотреть проект, можете прислать на почту iv_qul@list.ru
В API 4.2.1.7 у класса EmulationTrader уже нет свойства UseCandlesTimeFrame. При этом возникает ошибка (может быть из-за отсутствия свойства, может еще что-то изменилось) - трейдер не берет имеющиеся в папке готовые свечки как ранее, а лезит сразу за сделками! Это видно по логам: Вместо FileAccess: C:\Users\lsa\Documents\StockSharp\Hydra\R\RIM3@FORTS\2013_04_01\candles_TimeFrameCandle_00-05-00.bin получаю: FileAccess: C:\Users\lsa\Documents\StockSharp\Hydra\R\RIM3@FORTS\2013_04_30\trades.bin.
Пытался решить проблему установив "UseExternalCandleSource= true", но не помогло, похоже это не то свойство что надо.
Прошу пояснить как с учетом версии API 4.2.1.7 настроить работу трейдера с сохраненными свечами?
Из примера к 4.2.2.2
Иван, благодарю - помогло. Версию я правда пока менять не стал, но нашел свойство MarketEmulator и списал туда
Появился еще такой вопрос - при экспорте данных есть параметр "sql", использование которого как заявлено должно приводить к экспорту данных в sql-сервер. Но где прописать настройки mssql сервера и саму дерективу insert?
Нужно прописать строку подключения в файле Hydra.exe.config Здесь обсуждали данный вопрос: http://stocksharp.com/forum/3729/Kak-dannyie-s-finama-tiki--zaghnat--v-sql/
Подскажите, пожалуйста, какие инструменты доступны в источнике GainCapital. Не получается найти ни одного через S#.Data. Версия программы 4.2.2.14.
Вам стоит обратиться к GainCapital с данным вопросом.
GainCapital предоставляет исторические данные на своем сайте по ссылке http://ratedata.gaincapital.com/. Могу ли я используя возможности программы S#.Data скачать их оттуда?
Гидра позволяет качать данные с источников что она предоставляет.
Это логично. Вопрос в следующем. S#.Data предоставляет источник под названием GainCapital. Я хочу понять, откуда качаются данные при помощи этого источника. Это вот эти данные http://ratedata.gaincapital.com/, или какие-то другие? Если какие-то другие, то какие? Можно ссылку на сайт GainCapital? Если про это где-то написано, то дайте, пожалуйста, ссылку. Если мой вопрос недостаточно правилен, то извиняюсь. Я просто пытаюсь получить некоторую поддержку на форуме в соответствующем разделе и теме, как слушатель курсов. Не более того)
Мы не раскрываем внутренности работы S#. Если у вас вопрос относительно откуда качает источник GainCapital, то он качает с данной площадки. Как и что - это уже внутренние вещи. Без разглашения.
Спасибо за ответы, Михаил. Я думал, что не раскрывается только как качаются данные. Впрочем понять что качается не так трудно, так что тут не должно быть проблемы.
Также более конкретный вопрос. Как я понял, поиск инструментов в источнике GainCapital не работает. Добавил в источник инструмент вручную. Код и название - AUD/CAD. Шаг цены - 0,00001 (также пробовал 0,000001) Размер лота - 1 Источник - GAIN
Стартовал загрузку. В результате в папке с Гидрой появились файлы с исходными данными. В логе пошли ошибки:
Все в итоге застопорилось на
Сам процесс не заканчивается. В указанной директории с данными чисто.
Его физически нет.
17:51:48.724|Error |GainCapital|System.ArgumentOutOfRangeException: Неправильный объем котировки. Имя параметра: quotes Фактическое значение было 0.
Это не застопорилось, а закончило работу. Выше в логе у вас написано про скачивание 182355 стаканов.
17:51:48.724|Error |GainCapital|System.ArgumentOutOfRangeException: Неправильный объем котировки. Имя параметра: quotes Фактическое значение было 0.
Исходные данные скачались, но в формат S# они не переведены. Как я понимаю проблема в ошибке.
Текст ошибки я прочитал. Но в чем причина? Что нужно исправить?
Как видно по логу - переведены. Ошибка простая - нулевая цена.
В том-то и проблема, что данных нет. Да, написано в Гидре что есть стаканы. Но при попытке просмотра - данные отсутствуют. При нажатии ПКМ на инструменте - "Открыть папку с данными" ошибка "Невозможно открыть директорию хранения данных". Папка с именем "AUD_CAD@GAIN" не создается. В указанной в настройках папке с данными файлов по Gain нет. В подпапке TemporaryFiles чисто. А raw файлы с данными лежат вместе с Hydra.exe. В то же время при скачке с Финама проблем нет. Только что проверял. Версия - 4.2.2.19.
Должен ли я сообщить куда-либо о баге?
Вы уже сообщили на форуме. Этого достаточно. Мы обновили Гидру.
Здорово, спасибо! Обновил Гидру. Заработал источник GainCapital. Также заработал TrueFX. С ним тоже были проблемы.