Урок 7. Сохранение и накопление данных
Atom Ответить
18.06.2013


Видео-уроки:
Hydra (S#.Data) основные моменты



Темы занятия:


    • Работа с Гидрой (S#.Data)
    • Получение данных через Гидру
    • Использование полученных данных в своем проекте



Полезные ссылки:
Документация по S#.Data
Создание своего источника для S#.Data,

Вложения:
Скачать проекты

Теги:


Спасибо:




31 Ответов
1 2  >
Prival

Фотография
Курсы
Дата: 16.07.2013
Ответить


Осталась куча вопросов.
1. Почему в видео шаг RIM3 установлен 1, и автора это устраивает …. а меня нет, не устраивает шаг вроде бы 10. Почему для лектора это нормально ? За что отвечает этот параметр ? если я введу туда 5134675912, это тоже устроит ?
2. Если качать с финама склеенный фьючерс РТС, какой шаг устанавливать ? до сентября 2012 был 5, сейчас 10
3. Есть куча источников. Поясните все равно откуда качать или есть разница ? К примеру фьючерс РТС (могу качать через Quik, финам, RTS и плазу). Через что лучше это делать ?
4. Как правильно настроить серверный режим….(что куда писать, прописывать и т.д.) + как потом этим пользоваться ?
5. Что такое Анонимно – что за настройка ? что она делает ? анонимно деньги тырит с моего счета или еще что-то ?
6. Как правильно склеивать фьючерс, покажите пример. Их склеивать можно по разному, как сделано это в программе ?
7. В настройке источника финама есть игнорировать ошибки ? что это за ошибки ? их целая куча там идет, зачем Вы все время приводите финам…неужели FTP сервер биржи еще хуже ?
8. В хелпе https://stocksharp.ru/do...ce-86e2-bcec2e0bc55f.htm где склеивание есть столбец (…. Ласты) что это такое (мы не экстрасенсы… )? чем они отличаются от сделок ? откуда они качаются ? как выглядят и т.д.
9. Что за источник S#.Data Server ?
10. Есть ли сервер который уже давно собирает эти данные (не вериться что никто это не делает), где есть ордер лог, стаканы и т.д. Обязательно всем нужно собирать самим ?
11. У меня есть знакомый который торгует через плазу. Могу ли я настроить гидру у него (как это сделать)? Будет ли она (гидра) мешать его работе ? как мне подключаться к его компьютеру для получения скачанных данных ?
Спасибо:

Самунджян Артем

Фотография
Автор статей Программист
Дата: 17.07.2013
Ответить


Prival Перейти
Осталась куча вопросов.

Спасибо за Ваши вопросы! Пишите, мы только за то, чтобы убрать все пробелы.

Prival Перейти

1. Почему в видео шаг RIM3 установлен 1, и автора это устраивает …. а меня нет, не устраивает шаг вроде бы 10. Почему для лектора это нормально ? За что отвечает этот параметр ? если я введу туда 5134675912, это тоже устроит ?


Дело в том, что данный шаг никак не повлияет на корректность использования данных этого инструмента. В дальнейшем, если мы будем использовать эти данные в коде программы мы легко сможем поменять шаг . Поэтому автор не делает на этом акцент. Как это в принципе и делается в проекте по этому уроку. Вот скриншот (из проекта):

проект данных

Когда мы качаем данные с финама, то финам не предоставляет данных о минимальном шаге, поэтому автоматически подставляется единица.
Prival Перейти

2. Если качать с финама склеенный фьючерс РТС, какой шаг устанавливать ? до сентября 2012 был 5, сейчас 10


Да, тут нужно очень осторожно подходить к решению этого вопроса. Можно поставить шаг 10 и пожертвовать результатами тестирования, хотя если система долгосрочная, то это не так сильно повлияет на её результаты. Второй вариант - разделить склеенный фьюч на два 1) Где шаг равен 5 и 2) где шаг равен 10. В дальнейшем делать раздельный тестинг
Prival Перейти

3. Есть куча источников. Поясните все равно откуда качать или есть разница ? К примеру фьючерс РТС (могу качать через Quik, финам, RTS и плазу). Через что лучше это делать ?

Дело в том, что качать легче всего через самый простой и надежный источник. Таковым является финам. Я рассмотрю здесь нюансы каждого источника:
1)Quik -> Если сохранять стаканы, в таком случае гидра должна работать постоянно + не получиться запустить робота, потому что Quik поддерживает только одно подключение (особенности DDE сервера). Если сохранять сделки, то гидру (S#.Data) нужно будет запускать один раз в день (в конце дня), так как квик сам сохраняет сделки на один день. Не очень удобно, потому что постоянно должно что-то работать.

2)Финам -> Можно качать сделки, когда угодно. То есть один раз включили, она ни с кем не конфликтует. Не хранит стаканы, можно закачивать готовые свечки. По сути самый удобный источник. РТС источник также работает, но там, чтобы получить список инструментов придется скачивать по каждой сделки с каждого инструмента (опять же не совсем удобно, а данные точно такие же).

3)Плаза-> Неплохой вариант, не конфликтует с роботом. Может одновременно и то и то работать. Плазу имеет смысл
использовать, только если Вы собираетесь сохранять то, чего нет у финама (Ордер лог, стаканы к примеру).

Prival Перейти

4. Как правильно настроить серверный режим….(что куда писать, прописывать и т.д.) + как потом этим пользоваться ?


Серверный режим Гидры, это когда одна программа запущена как сервер (скачивает данные с источников), а другие экземпляры Гидры подключаются к серверу и тянут из нее загруженные данные. Чтобы это работало надо сделать следующее:

Меню Дополнительно -> Настройки… здесь выставить галочку Серверный режим. Это будет Сервер.

Запускаем на другом ПК гидру и настраиваем ее как клиент, для этого находим источник S#.Data Server, переходим в его настройки и там указываем параметры для подключения к серверной Гидре: адрес к серверу, при необходимости логин и пароль.

Это основные настройки, необходимые для создания схемы Сервер-Клиент на Гидре.

Prival Перейти

5. Что такое Анонимно – что за настройка ? что она делает ? анонимно деньги тырит с моего счета или еще что-то ?

Если бы...(деньги тырит) BigGrin

Если выставлена опция Анонимно, то к этому серверу для доступа не нужно указывать логин/пароль, в противном случае, необходимо указывать логин/пароль учетной записи Windows, где запущен Сервер Гидры.

Prival Перейти

6. Как правильно склеивать фьючерс, покажите пример. Их склеивать можно по разному, как сделано это в программе ?

Тут нам можем помочь документация

Prival Перейти

7. В настройке источника финама есть игнорировать ошибки ? что это за ошибки ? их целая куча там идет, зачем Вы все время приводите финам…неужели FTP сервер биржи еще хуже ?

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

В логах отображаются не только ошибки, но и предупреждения, информационные сообщения.
Опция Игнорировать ошибки заставляет Гидру не обращать внимание на ошибки и выполнять следующие действия.

Prival Перейти

8. В хелпе https://stocksharp.ru/do...ce-86e2-bcec2e0bc55f.htm где склеивание есть столбец (…. Ласты) что это такое (мы не экстрасенсы… )? чем они отличаются от сделок ? откуда они качаются ? как выглядят и т.д.

Ласты – это Top of book, т.е. лучшие цены (bestask и bestbid стакана). Это совсем не сделки. Скачиваются из источника данных.
Prival Перейти

9. Что за источник S#.Data Server ?

Источник – серверный вариант гидры на другом ПК.

Prival Перейти

10. Есть ли сервер который уже давно собирает эти данные (не вериться что никто это не делает), где есть ордер лог, стаканы и т.д. Обязательно всем нужно собирать самим ?

Есть, но он предоставляет только демо данные. Сервер, который будет сохранять данные планируем настроить (ол, стаканы, сделки).
Prival Перейти

11. У меня есть знакомый который торгует через плазу. Могу ли я настроить гидру у него (как это сделать)? Будет ли она (гидра) мешать его работе ? как мне подключаться к его компьютеру для получения скачанных данных ?


Да, все верно. Можно поставить её, она совсем не будет конфликтовать с роботом.

Но для этого необходимо иметь соответствующие технические возможности, как минимум надо чтобы у ПК где стоит Гидра-сервер был белый IP адрес, а также настроены сетефой экран и т.п. Вы же хотите через интернет подключаться, если я правильно понял.
Снимок.PNG 7 KB (27)
Спасибо:

Prival

Фотография
Курсы
Дата: 20.07.2013
Ответить


Поясните тогда эти ошибки (приведены на скринах). Поясняю свои действия
1. Дата начала скачивания во всех случаях одинакова 17.09.2012
2. Начинаю скачивать с Финам дает ошибки и останавливается рис.1

3. Начинаю качать с RTS работает без ошибок (лог чистый) рис.2.

Что требует пояснения. Исхожу из вашего заявления что все одинаково, разницы нет....
1. Что означает ошибка не соответствие шагу цены ? Неужели сделки по RIH3 могут быть не кратны 10…
2. Почему при скачивании РТС этих ошибок нету ? (Варианты - либо разные данные, либо Гидра их обрабатывает по разному(надеюсь одинаково)). Оба варианта плохи, первый это как в Форексе у каждой кухни свои котировки, что на бирже вроде не возможно ( я до сего момента был уверен в этом ^-)) либо одно из двух…либо стог сена, либо вилы … ^-)
3. Количество сделок к одному и тому же моменту времени (12/14/2012 последняя сделка) отличается в разы. Финам 600 тыс (рис.1), RTS 5 мил (рис.2). Это как ? Поясните что означает последняя сделка, то что все до этого момента закачано…или еще что то ?
4. А это как и почему рис.2

RIH3-3.13 сделок 5 323 тыс. RIU3-9.13 сделок 10 949 тыс – это что по ближнему контракту сделок в 2 раза меньше чем по дальнему ? Это как ….так не бывает

З.Ы. Заранее спасибо за ответы. Прежде чем тестировать всегда нужно решить вопрос данных. Вы великолепно постарались решить этот вопрос, хранить самые подробные данные. Но есть еще вопрос качества этих данных, зашумленная синусойда, реальные данные в которых есть шпильки по 10 000 пунктов (или как в MetaTrader 5 (минутки,а внутри минутки все имитируется ( моделируются)) и т.д. и т.п.
Спасибо:

pft_man

Фотография
Курсы
Дата: 21.07.2013
Ответить


Добрый день. Я хочу, чтобы при следующем запуске приложения (например, на следующий день) в стратегию загрузились все сделки, совершённые раньше, и рассчиталась текущая позиция по стратегии. В связи с этим возникли два вопроса.

1. Это можно сделать через метод стратегии ProcessNewOrders, но в него подаются ордера. Можно ли сделать хранилище ордеров? Я нашёл GetOrderTraceStorage, но он сохраняет историю изменений по ордеру. Можно ли как-то потом эту историю изменений превратить в ордера, которые потом передать в метод ProcessNewOrders?

2. Попробовал реализовать это через хранилище сделок, в которое я сохраняю только свои сделки. Но возникает ошибка.

Код

Connection.SafeConnection.Trader.NewMyTrades += mytrades => this.GuiAsync(() =>
                                            _storageRegistry.GetTradeStorage(Connection.SelectedSecurity).Save(mytrades)); 



error.jpg 38 KB (0)
Спасибо:

IvanB

Фотография
Дата: 22.07.2013
Ответить


pft_man Перейти
Добрый день. Я хочу, чтобы при следующем запуске приложения (например, на следующий день) в стратегию загрузились все сделки, совершённые раньше, и рассчиталась текущая позиция по стратегии. В связи с этим возникли два вопроса.

1. Это можно сделать через метод стратегии ProcessNewOrders, но в него подаются ордера. Можно ли сделать хранилище ордеров? Я нашёл GetOrderTraceStorage, но он сохраняет историю изменений по ордеру. Можно ли как-то потом эту историю изменений превратить в ордера, которые потом передать в метод ProcessNewOrders?

Те ордера, которые Вы сохраняете через метод Save, будут доступны через метод Load. Вы пишите, что Вам надо сохранять сделки, то, думаю, этот вариант Вам не подходит, в данном случае следует воспользоваться хранилищем сделок, которое возвращается по методу GetTradeStorage(), что Вы и делали в пункте 2.
pft_man Перейти

2. Попробовал реализовать это через хранилище сделок, в которое я сохраняю только свои сделки. Но возникает ошибка.

Код

Connection.SafeConnection.Trader.NewMyTrades += mytrades => this.GuiAsync(() =>
                                            _storageRegistry.GetTradeStorage(Connection.SelectedSecurity).Save(mytrades)); 


Массив mytrades надо привести к интерфейсу IEnumerable, этот интерфейс реализовывается в классе List<>, поэтому можно через метод ToList() преобразовать массив в список List<>. В результате будет выглядеть так:
Код

Connection.SafeConnection.Trader.NewMyTrades += mytrades => this.GuiAsync(() =>
                                            _storageRegistry.GetTradeStorage(Connection.SelectedSecurity).Save(mytrades.ToList())); 
Автор топика
Спасибо:

Самунджян Артем

Фотография
Автор статей Программист
Дата: 22.07.2013
Ответить


Prival Перейти
Поясните тогда эти ошибки (приведены на скринах).
1. Что означает ошибка не соответствие шагу цены ? Неужели сделки по RIH3 могут быть не кратны 10…

Скорее всего там что-то напутали с различными инструментами. То есть одни скачаны с ртс, другие с финама и Вы не заметили с каким именно Вы работаете. Поэтому я советую сделать так
  1. Скопировать скачанные Вами данные (забекапить их)
  2. Почистить папку Мои документы/StockSharp/Hydra (там все настройки лежат)
  3. Запустить гидру и поработать только с одним источником
  4. Проверить все ли нормально -> если нет, то пришлите нам логи, мы уже по ним более подробно разберемся


Prival Перейти

2. Почему при скачивании РТС этих ошибок нету ? (Варианты - либо разные данные, либо Гидра их обрабатывает по разному(надеюсь одинаково)). Оба варианта плохи, первый это как в Форексе у каждой кухни свои котировки, что на бирже вроде не возможно ( я до сего момента был уверен в этом ^-)) либо одно из двух…либо стог сена, либо вилы … ^-)


Разных данных там точно нет. За исключением только того, как оба эти источника сохраняют рыночные данные. К примеру, в одном источнике могут быть внебиржевые сделки, а в другом нет.


Prival Перейти

3.Количество сделок к одному и тому же моменту времени (12/14/2012 последняя сделка) отличается в разы. Финам 600 тыс (рис.1), RTS 5 мил (рис.2). Это как ? Поясните что означает последняя сделка, то что все до этого момента закачано…или еще что то ?

«Последняя сделка», содержит дату последней полученной сделки, не гарантируется, что данные поступают последовательно по значению времени.

Prival Перейти

RIH3-3.13 сделок 5 323 тыс. RIU3-9.13 сделок 10 949 тыс – это что по ближнему контракту сделок в 2 раза меньше чем по дальнему ? Это как ….так не бывает

В Вашем случае, по RIH3 не все данные загружены.

В любом случае я советую разобраться с одним источником.
Спасибо:

pft_man

Фотография
Курсы
Дата: 22.07.2013
Ответить


Спасибо. На самом деле задача - сделать так, чтобы при запуске приложения стратегия знала своё состояние на момент последней работы (например, при выключении на ночь). То есть, чтобы текущая позиция, сделки, PnL попали в запускаемую стратегию.
В документации я нашёл метод ProcessNewOrders, который и показался мне оптимальным для этой цели - загружаем в стратегию ордера, а всё остальное рассчитывается автоматически. Но этот метод принимает на вход ордера, а хранилище можно сделать только из OrderTraceItem. Можно ли как-то потом OrderTraceItem превратить в Order? Или всё-же как-то можно сделать хранилище ордеров Order?

Код

protected virtual IEnumerable<Order> ProcessNewOrders(
	IEnumerable<Order> newOrders,
	bool isStopOrders

Код

IMarketDataStorage<OrderTraceItem> GetOrderTraceStorage(
	Security security
)



Спасибо:

pft_man

Фотография
Курсы
Дата: 22.07.2013
Ответить


А, кажется, нашёл. У класса OrderTraceItem есть свойство Order. Попробую вечером.
Спасибо:

Moadip

Фотография
Автор статей Программист
Дата: 22.07.2013
Ответить


Prival Перейти
Поясните тогда эти ошибки (приведены на скринах). Поясняю свои действия
1. Дата начала скачивания во всех случаях одинакова 17.09.2012
2. Начинаю скачивать с Финам дает ошибки и останавливается рис.1

3. Начинаю качать с RTS работает без ошибок (лог чистый) рис.2.

Что требует пояснения. Исхожу из вашего заявления что все одинаково, разницы нет....
1. Что означает ошибка не соответствие шагу цены ? Неужели сделки по RIH3 могут быть не кратны 10…
2. Почему при скачивании РТС этих ошибок нету ? (Варианты - либо разные данные, либо Гидра их обрабатывает по разному(надеюсь одинаково)). Оба варианта плохи, первый это как в Форексе у каждой кухни свои котировки, что на бирже вроде не возможно ( я до сего момента был уверен в этом ^-)) либо одно из двух…либо стог сена, либо вилы … ^-)
3. Количество сделок к одному и тому же моменту времени (12/14/2012 последняя сделка) отличается в разы. Финам 600 тыс (рис.1), RTS 5 мил (рис.2). Это как ? Поясните что означает последняя сделка, то что все до этого момента закачано…или еще что то ?
4. А это как и почему рис.2

RIH3-3.13 сделок 5 323 тыс. RIU3-9.13 сделок 10 949 тыс – это что по ближнему контракту сделок в 2 раза меньше чем по дальнему ? Это как ….так не бывает

З.Ы. Заранее спасибо за ответы. Прежде чем тестировать всегда нужно решить вопрос данных. Вы великолепно постарались решить этот вопрос, хранить самые подробные данные. Но есть еще вопрос качества этих данных, зашумленная синусойда, реальные данные в которых есть шпильки по 10 000 пунктов (или как в MetaTrader 5 (минутки,а внутри минутки все имитируется ( моделируются)) и т.д. и т.п.


1. То и значит, может и не быть, все зависит от того какие данные пришли. Нормальные или кривые. Финам это не эталон, и бывает приходят битые данные.
2. Не факт, может и на РТС такая же ошибка быть. Почему? п.1. Данные от любого источника обрабатываются одинаково.
3. По финаму выкачивается конкретный инструмент. Соответственно и цифра выкачанных сделок будет соответствующая. С РТС нет возможности выкачать конкретный инструмент. Выкачиваются все данные за день. Поэтому и цифры в разы больше.
Последняя сделка(как и последний стакан, последнее изменение и т.д.) это последнее значение которое сохранено. Допустим включал гидру неделю назад, включил сегодня, и сразу видно, до какого числа(времени) есть данные.
4.
Цитата:
Это как ….так не бывает
Бывает. Цифры, это не сколько сохранено, а сколько выкачено.
Допустим по какому то инструменту было выкачано 100к сделок. Они сохранились. Потом опять выкачиваются эти данные. Так вот цифры будут показывать сколько было выкачено, но сохранено будет по прежнему 100к сделок, дублей не будет.
Спасибо:

pft_man

Фотография
Курсы
Дата: 22.07.2013
Ответить


IvanB Перейти

Массив mytrades надо привести к интерфейсу IEnumerable, этот интерфейс реализовывается в классе List<>, поэтому можно через метод ToList() преобразовать массив в список List<>. В результате будет выглядеть так:
Код

Connection.SafeConnection.Trader.NewMyTrades += mytrades => this.GuiAsync(() =>
                                            _storageRegistry.GetTradeStorage(Connection.SelectedSecurity).Save(mytrades.ToList())); 


На самом деле, MyTrades содержит Order и Trade, а метод Save принимает только Trade. Правильнее будет вот так.

Код

Connection.SafeConnection.Trader.NewMyTrades += mytrades => this.GuiAsync(() =>
                    {
                        _storageRegistry.GetTradeStorage(Connection.SelectedSecurity).Save(mytrades.Select(t => t.Trade).ToList());
                    });


Но теперь возникает вот такая ошибка. Не понимаю, почему, путь я указываю выше в коде.

Код

((LocalMarketDataDrive)_storageRegistry.DefaultDrive).Path = @"С:\History"; // изменяем путь, используемый по умолчанию
((LocalMarketDataDrive)_storageRegistry.DefaultDrive).UseAlphabeticPath = true; // используем алфавитное хранилище


Помогите, пожалуйста, добить эту тему, а то никак не получается загрузить прошлую информацию в стратегию.
error.jpg 41 KB (0)
Спасибо:

IvanB

Фотография
Дата: 23.07.2013
Ответить


pft_man Перейти

...

Код

Connection.SafeConnection.Trader.NewMyTrades += mytrades => this.GuiAsync(() =>
                    {
                        _storageRegistry.GetTradeStorage(Connection.SelectedSecurity).Save(mytrades.Select(t => t.Trade).ToList());
                    });


Но теперь возникает вот такая ошибка. Не понимаю, почему, путь я указываю выше в коде.

Код

((LocalMarketDataDrive)_storageRegistry.DefaultDrive).Path = @"С:\History"; // изменяем путь, используемый по умолчанию
((LocalMarketDataDrive)_storageRegistry.DefaultDrive).UseAlphabeticPath = true; // используем алфавитное хранилище


Помогите, пожалуйста, добить эту тему, а то никак не получается загрузить прошлую информацию в стратегию.

Покажите описание стека вызовов из сообщения об ошибке (ссылка View Detail...) и убедитесь, что путь до хранилища указывается до момента попытки сохранения в нем.
Автор топика
Спасибо:

pft_man

Фотография
Курсы
Дата: 23.07.2013
Ответить


Вроде путь присваивается до обращения по нему. Пробовал указывать путь @"С:\History\S\SBER@QJSIM", но всё-равно не работает.
Зато если закомментировать строку, в которой сохраняется путь, то всё работает, с ней не хочет.

Код

        private StorageRegistry _storageRegistry = new StorageRegistry();

        public MainWindow()
        {
            InitializeComponent();
            Connection.SafeConnection = new SafeConnection(new QuikTrader(QuikTerminal.GetDefaultPath()));
            _logManager.Sources.Add(Connection.SafeConnection.Trader);
            _logManager.Listeners.Add(new FileLogListener("log.txt"));
            _logManager.Listeners.Add(new GuiLogListener(_monitorWindow));
            _monitorWindow.MakeHideable();
            _myTradesWindow.MakeHideable();

            ((LocalMarketDataDrive)_storageRegistry.DefaultDrive).Path = @"С:\History"; // изменяем путь, используемый по умолчанию
            ((LocalMarketDataDrive)_storageRegistry.DefaultDrive).UseAlphabeticPath = true; // используем алфавитное хранилище

            Connection.SafeConnection.Trader.NewMyTrades += mytrades => this.GuiAsync(() =>
                    {
                        _storageRegistry.GetTradeStorage(Connection.SelectedSecurity).Save(mytrades.Select(t => t.Trade).ToList());
                    });
        }
error.jpg 55 KB (0)
Спасибо:

IvanB

Фотография
Дата: 24.07.2013
Ответить


pft_man Перейти
Вроде путь присваивается до обращения по нему. Пробовал указывать путь @"С:\History\S\SBER@QJSIM", но всё-равно не работает.
Зато если закомментировать строку, в которой сохраняется путь, то всё работает, с ней не хочет.

Код

        private StorageRegistry _storageRegistry = new StorageRegistry();

        public MainWindow()
        {
            InitializeComponent();
            Connection.SafeConnection = new SafeConnection(new QuikTrader(QuikTerminal.GetDefaultPath()));
            _logManager.Sources.Add(Connection.SafeConnection.Trader);
            _logManager.Listeners.Add(new FileLogListener("log.txt"));
            _logManager.Listeners.Add(new GuiLogListener(_monitorWindow));
            _monitorWindow.MakeHideable();
            _myTradesWindow.MakeHideable();

            ((LocalMarketDataDrive)_storageRegistry.DefaultDrive).Path = @"С:\History"; // изменяем путь, используемый по умолчанию
            ((LocalMarketDataDrive)_storageRegistry.DefaultDrive).UseAlphabeticPath = true; // используем алфавитное хранилище

            Connection.SafeConnection.Trader.NewMyTrades += mytrades => this.GuiAsync(() =>
                    {
                        _storageRegistry.GetTradeStorage(Connection.SelectedSecurity).Save(mytrades.Select(t => t.Trade).ToList());
                    });
        }

Попробуйте перепечатать путь в строке
Код
((LocalMarketDataDrive)_storageRegistry.DefaultDrive).Path = @"С:\History"; // изменяем путь, используемый по умолчанию

может быть какой-то символ не латинский, и имя самой директории.
Если это не поможет, то надо смотреть проект, можете прислать на почту iv_qul@list.ru
Автор топика
Спасибо: pft_man

JaguarFX

Фотография
Курсы
Дата: 19.01.2014
Ответить


В 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 настроить работу трейдера с сохраненными свечами?
Спасибо:

IvanB

Фотография
Дата: 20.01.2014
Ответить


lebedevsrg Перейти
В 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

Автор топика
Спасибо:

JaguarFX

Фотография
Курсы
Дата: 20.01.2014
Ответить


Иван, благодарю - помогло.
Версию я правда пока менять не стал, но нашел свойство MarketEmulator и списал туда


Появился еще такой вопрос - при экспорте данных есть параметр "sql", использование которого как заявлено должно приводить к экспорту данных в sql-сервер. Но где прописать настройки mssql сервера и саму дерективу insert?
Спасибо: Aleksey24

IvanB

Фотография
Дата: 21.01.2014
Ответить


lebedevsrg Перейти
Иван, благодарю - помогло.
Версию я правда пока менять не стал, но нашел свойство MarketEmulator и списал туда


Появился еще такой вопрос - при экспорте данных есть параметр "sql", использование которого как заявлено должно приводить к экспорту данных в sql-сервер. Но где прописать настройки mssql сервера и саму дерективу insert?


Нужно прописать строку подключения в файле Hydra.exe.config
Здесь обсуждали данный вопрос:
https://stocksharp.ru/fo...ma-tiki--zaghnat--v-sql/
Автор топика
Спасибо:

Architectus

Фотография
Курсы
Дата: 15.03.2014
Ответить


Подскажите, пожалуйста, какие инструменты доступны в источнике GainCapital. Не получается найти ни одного через S#.Data. Версия программы 4.2.2.14.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 15.03.2014
Ответить


Architectus Перейти
Подскажите, пожалуйста, какие инструменты доступны в источнике GainCapital. Не получается найти ни одного через S#.Data. Версия программы 4.2.2.14.


Вам стоит обратиться к GainCapital с данным вопросом.
Спасибо:

Architectus

Фотография
Курсы
Дата: 15.03.2014
Ответить


GainCapital предоставляет исторические данные на своем сайте по ссылке http://ratedata.gaincapital.com/.
Могу ли я используя возможности программы S#.Data скачать их оттуда?
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 15.03.2014
Ответить


Architectus Перейти
GainCapital предоставляет исторические данные на своем сайте по ссылке https://ratedata.gaincapital.com/.
Могу ли я используя возможности программы S#.Data скачать их оттуда?


Гидра позволяет качать данные с источников что она предоставляет.
Спасибо:

Architectus

Фотография
Курсы
Дата: 16.03.2014
Ответить


Михаил Сухов Перейти
Architectus Перейти
GainCapital предоставляет исторические данные на своем сайте по ссылке https://ratedata.gaincapital.com/.
Могу ли я используя возможности программы S#.Data скачать их оттуда?


Гидра позволяет качать данные с источников что она предоставляет.


Это логично. Вопрос в следующем. S#.Data предоставляет источник под названием GainCapital. Я хочу понять, откуда качаются данные при помощи этого источника. Это вот эти данные http://ratedata.gaincapital.com/, или какие-то другие? Если какие-то другие, то какие? Можно ссылку на сайт GainCapital? Если про это где-то написано, то дайте, пожалуйста, ссылку.
Если мой вопрос недостаточно правилен, то извиняюсь. Я просто пытаюсь получить некоторую поддержку на форуме в соответствующем разделе и теме, как слушатель курсов. Не более того)
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 16.03.2014
Ответить


Architectus Перейти
Я хочу понять, откуда качаются данные при помощи этого источника.


Мы не раскрываем внутренности работы S#. Если у вас вопрос относительно откуда качает источник GainCapital, то он качает с данной площадки. Как и что - это уже внутренние вещи. Без разглашения.
Спасибо:

Architectus

Фотография
Курсы
Дата: 17.03.2014
Ответить


Михаил Сухов Перейти

Мы не раскрываем внутренности работы S#. Если у вас вопрос относительно откуда качает источник GainCapital, то он качает с данной площадки. Как и что - это уже внутренние вещи. Без разглашения.


Спасибо за ответы, Михаил. Я думал, что не раскрывается только как качаются данные. Впрочем понять что качается не так трудно, так что тут не должно быть проблемы.

Также более конкретный вопрос. Как я понял, поиск инструментов в источнике GainCapital не работает. Добавил в источник инструмент вручную.
Код и название - AUD/CAD.
Шаг цены - 0,00001 (также пробовал 0,000001)
Размер лота - 1
Источник - GAIN

Стартовал загрузку. В результате в папке с Гидрой появились файлы с исходными данными. В логе пошли ошибки:
Код
17:51:39.314|       |GainCapital|Инициализируется.
17:51:39.327|       |GainCapital|Перешел в состояние Starting.
17:51:39.336|       |GainCapital|Перешел в состояние Started.
17:51:48.228|       |GainCapital|Старт загрузки сделок за 10.03.2014 для AUD/CAD@GAIN.
17:51:48.724|Error  |GainCapital|System.ArgumentOutOfRangeException: Неправильный объем котировки.
Имя параметра: quotes
Фактическое значение было 0.
   в #=qse0cgvd_pSBKEpetwsAXA_q37ayAU9YJivjCVkLrLq5nLLe9aTnAhfB_O6WIg$pe.#=qe0Hro9k8BWNaregXJofnX$CC1JslmMOr64Jqc5L9RZ8=(List`1 #=qdLM2IloTu3DOdybh3pPsVw==, Quote[] #=qDHbTLJhWUiQvwqm6zr9WcA==, #=qHb_pQVAN6PVfOF77YAaCP91TjPCivLKsDi_gyHNlCZu5W_sxdL6o0K84XeMebX8n #=qFc$q4i_MnAFoFJqAF5cB6g==, Boolean #=qmUTHHgtKZ2FvPlVKEEgVEA==)
   в #=qse0cgvd_pSBKEpetwsAXA_q37ayAU9YJivjCVkLrLq5nLLe9aTnAhfB_O6WIg$pe.#=q8GFLMQ6UlM_1p9KuzjhfTQ==(List`1 #=q2cQNsRhsImEgVXVksZBjSw==, IEnumerable`1 #=q4N0Zy52lh9HH7lQBs0fa1Q==, #=qHb_pQVAN6PVfOF77YAaCP91TjPCivLKsDi_gyHNlCZu5W_sxdL6o0K84XeMebX8n #=qiERIZ6FKNo0gIXPvubBduQ==)
   в #=qaEY6XdcItoIZhrbE_JQwk79n5ukCAO_sjZvAb0t8i2vkaE7ig2hk$yyPHNyuU52Kmf4WU7fxhJxNApxzE$$HlA==.#=qbq0GlpDm9Du1tYNQqDLyLcwlrYf92e9hqWZY_5u7TF7_c5TuFUc$1g0f5vASC3LZhssJy3ecQR8sgw3Ht1mi1PFYP3aK0nhPDt1KK69n$90=(IEnumerable`1 #=qmX8TsCrQVD04zroWg91zTA==, #=qp8rQX2QPJ6wNukXN9LxH57ab0794mCT9b4w47SttPEAvIcj1lmk9kNxTx23VFTIq #=qKXm0QWxOuvyR7BRqiGox9A==)
   в #=qr64Jp_hB72e5YReYfCP3U4THGQhoHPYx057WuZKBM6rmXKO4QQNrEFfwfmgdyR_M.#=q$dWmRKsZiq2LCQmRZNgsMw==(DateTime #=qYp46MXuvijsJXSt_li3Iww==, #=qyVesYeIXbEPPIVbjNJBh8w==[] #=qQwPwY3D8rEDO$KsGK96r9g==, Boolean #=qPOQ1mOwWPLrJOeWddLAEvA==)
   в #=qr64Jp_hB72e5YReYfCP3U4THGQhoHPYx057WuZKBM6rmXKO4QQNrEFfwfmgdyR_M.Save(IEnumerable`1 #=qm_zQ1zwlvG4QWitUhD7uJQ==)
   в StockSharp.Hydra.Core.BaseHydraTask.SafeSave[T](Security security, IEnumerable`1 values, Func`2 getTime, IEnumerable`1 errorChecks, Func`3 getStorage)
17:51:48.725|       |GainCapital|Для AUD/CAD@GAIN загружено 182355 MarketDepth.


Все в итоге застопорилось на
Код
17:52:04.847|       |GainCapital|Окончание итерации.


Сам процесс не заканчивается. В указанной директории с данными чисто.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 17.03.2014
Ответить


Architectus Перейти

Также более конкретный вопрос. Как я понял, поиск инструментов в источнике GainCapital не работает.


Его физически нет.

Architectus Перейти

Стартовал загрузку. В результате в папке с Гидрой появились файлы с исходными данными. В логе пошли ошибки:
Код

17:51:48.724|Error  |GainCapital|System.ArgumentOutOfRangeException: Неправильный объем котировки.
Имя параметра: quotes
Фактическое значение было 0.


Собственно, ошибка говорит сама за себя.

Architectus Перейти

Все в итоге застопорилось на
Код
17:52:04.847|       |GainCapital|Окончание итерации.



Это не застопорилось, а закончило работу. Выше в логе у вас написано про скачивание 182355 стаканов.
Спасибо:
1 2  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy