← 返回

Тиковые данные из Hydra

Добрый вечер,возник вопрос у меня есть данные сделок и стаканов, загруженные гидрой и хранящиеся в папке (допустим папка dates а в ней папки с ID инструментов) чтобы получить данные по какому-либо инструменту нужно использовать TradingStorage.GetTradeStorage(Security) а как мне получить список инструментов, по которым имеются данные в папке, чтобы предоставить пользователю выбор инструмента из имеющихся, на котором он будет тестировать стратегию?

я думал будет коллекция инструментов хранится в TradingStorage.Securities но при загрузке из данных RIU9@RTS (которые идут в стандартном архиве с s#) эта коллекция пуста может я чего не правильно делаю?

хранилище создаю так

storage = new TradingStorage(new InMemoryStorage())
                {
                    BasePath = "путь к данным"
                };

securityComboBox.ItemsSource = storage.Securities; //пусто (

本主题对您有帮助吗?

分享主题

评论 (11)

登录创建账户, 登录或注册以发表评论

Mikhail Sukhov
Mikhail Sukhov

art.tsgnet: ...

InMemoryStorage получает мета данные из памяти. Надо использовать Database

art.tsgnet
art.tsgnet
art.tsgnet 作者

Database это класс поддерживающий интерфейс IStorage или что-то другое (физическая база данных в MS SQL?)

тоесть мне из гидры данные нужно не в файлы сохранять, а в базу данных? если с базой данных, то как при создании хранилища передать путь к базе данных

Все, ,большое спасибо, вроде разобрался, вместе InMemorySorage использовал FileStorage

art.tsgnet
art.tsgnet 作者

ещё вопрос возник, гидра почему-то сохраняет тиковые сделки, и вот файл Security.xml не создает, и хранилище не может получить информацию об инструментах в опциях гидры не нашел ничего

Alexander
Alexander

Инструменты хранятся в БД

art.tsgnet
art.tsgnet 作者

Я немного не понял принципа работы с БД

гидра при загрузке исторических данных автоматически загружает их в БД или она только сохраняет файлы (bin,xml)? (MS SQL SERVER ) если только файлы, то как мне в базу данных загнать инструменты? вручную? как мне из приложения обращятся к БД? (через TradingStorage? то какой в конструкторе указывать класс с IStorage ?)

для чего вообще нужна база данных? котировки же хранятся в файлах

(версия S# и гидры 4.0.21)

Mikhail Sukhov
Mikhail Sukhov

art.tsgnet: для чего вообще нужна база данных? котировки же хранятся в файлах

Для Гидры - хранения инструментов. Для роботов - там еще заявки со сделками хранятся (если не интрадей).

Garry
Garry

Присоединяюсь к вопросу, как получить список всех инструментов хранилища, созданного гидрой. При создании var storage = new TradingStorage(new FileStorage("c:\\tik\Hydra")) ;

        foreach (Security sec in storage.Securities)
        {
            listBox1.Items.Add(sec.Code);
        }

ругается что не создан файл Security.xml. Если в качестве параметра IStorage указать InMemoryStorage(), то список пустой. Что указать в качестве параметра IStorage, или тут какая-то другая логика?

Mikhail Sukhov
Mikhail Sukhov

Garry: ли тут какая-то другая логика?

Тут логика как в Гидре. И работать надо с инструментами так, как в Гидре.

art.tsgnet
art.tsgnet 作者

Инструменты гидра не сохраняет в файлы, она их в базу сохраняет (по умолчанию SQLite, можно в файле Hydra.exe.conf изменить базу на MS SQL) а потом уже из базы брать вместо FileStorage нужно Database создавать (вроде как Ecng.Data и Ecng.Data.Provider подключить нужно)

Mikhail Sukhov Garry
Garry
Garry

Спасибо разобрался!

AlekZ
AlekZ

список инструментов можно получить например так:

Console.WriteLine("Список инструментов из C:\\Users\\user\\Documents\\StockSharp\\Hydra\\StockSharp.db:");           
var db = new Database("Hydra Database", "data source=C:\\Users\\user\\Documents\\StockSharp\\Hydra\\StockSharp.db")
{
  Provider = new Ecng.Data.Providers.SQLiteDatabaseProvider()
};

var storageRegistryDb = new StorageRegistry(db);
{
  Console.WriteLine("{0}: {1} {2}", sec.Id, sec.Code, sec.Name);
}