Работа со StorageRegistry~/topic/3962/rabota-so-storageregistry/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T13:51:23Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/27556/Попробовал разобраться. Но в кучу все собрать не получилось. Прошу привести пример простейшего кода,...2013-09-22T12:35:56Z2013-09-22T12:37:49ZBondhttps://stocksharp.ru/users/26882/info@stocksharp.ru<div class="quote"><span class="quotetitle">IvanB <a href="https://stocksharp.ru/posts/m/27498/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27373/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Попробовал разобраться. Но в кучу все собрать не получилось.<br />Прошу привести пример простейшего кода, который возьмет свечи заданного таймфрейма из хранилища и просто отрисует их на графике за указанный период времени(странно, что нет такого примера в обучении). Желательно рабочий код потому, что опыта мало и путаюсь в мелочах.<br /><br />В документации в качестве примера используется TimeFrameCandleBuilder(что это?):<br /><a href="http://stocksharp.com/doc/html/f71010d3-135c-4fe9-a573-abf0245b3f5d.htm" title="http://stocksharp.com/doc/html/f71010d3-135c-4fe9-a573-abf0245b3f5d.htm">http://stocksharp.com/doc/html/...e9-a573-abf0245b3f5d.htm</a><br /><br />Иван предлагает использовать UseCandlesTimeFrame,пользователь esper предлагает через StorageRegistry.GetCandleStorage. Плюс как правильно вывести все это на график?<br />Во всех примерах Sample, в том числе и в уроках это все реализуется как-то по разному.<br /><br />Заранее спасибо за помощь.<br /><br /><br /></div></div><br /><br />Предлагаю рассмотреть следующий проект:<br /><b>$/StockSharp Lessons/StockSharp.Edu/Additional/GetCandles/GetCandles</b><br />в этом проекте демонстрируется как получить свечи напрямую из хранилища в коллекцию, и вариант с эмулятором трейдера, оба варианта о которых говорилось в этой ветке форума.</div></div><br /><br />Иван, спасибо за пример! К сожалению, только сейчас дошли руки его разобрать. Очевидно, что получение свечей напрямую из хранилища быстрее в несколько раз, чем через эмулятор.<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
var candles = storageRegistry.GetCandleStorage(typeof (TimeFrameCandle), _security, timeFrame)
.Load(fromDate.SelectedDate.Value, toDate.SelectedDate.Value+TimeSpan.FromDays(1));
foreach (var candle in candles)
{
Draw(candle, _chartCandleElementFromCollection);
}
</pre>
</div></div><br />В своем коде я решил использовать эту конструкцию.<br />При этом использование готовых свечей также в несколько раз ускоряет работу:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
// использовать свечки
UseCandlesTimeFrame = timeFrame,
</pre>
</div></div>Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27498/Попробовал разобраться. Но в кучу все собрать не получилось. Прошу привести пример простейшего кода,...2013-09-16T13:54:41Z2013-09-17T06:26:56ZIvanBhttps://stocksharp.ru/users/26984/info@stocksharp.ru<div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27373/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Попробовал разобраться. Но в кучу все собрать не получилось.<br />Прошу привести пример простейшего кода, который возьмет свечи заданного таймфрейма из хранилища и просто отрисует их на графике за указанный период времени(странно, что нет такого примера в обучении). Желательно рабочий код потому, что опыта мало и путаюсь в мелочах.<br /><br />В документации в качестве примера используется TimeFrameCandleBuilder(что это?):<br /><a href="http://stocksharp.com/doc/html/f71010d3-135c-4fe9-a573-abf0245b3f5d.htm" title="http://stocksharp.com/doc/html/f71010d3-135c-4fe9-a573-abf0245b3f5d.htm">http://stocksharp.com/doc/html/...e9-a573-abf0245b3f5d.htm</a><br /><br />Иван предлагает использовать UseCandlesTimeFrame,пользователь esper предлагает через StorageRegistry.GetCandleStorage. Плюс как правильно вывести все это на график?<br />Во всех примерах Sample, в том числе и в уроках это все реализуется как-то по разному.<br /><br />Заранее спасибо за помощь.<br /><br /><br /></div></div><br /><br />Предлагаю рассмотреть следующий проект:<br /><b>$/StockSharp Lessons/StockSharp.Edu/Additional/GetCandles/GetCandles</b><br />в этом проекте демонстрируется как получить свечи напрямую из хранилища в коллекцию, и вариант с эмулятором трейдера, оба варианта о которых говорилось в этой ветке форума.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27373/Попробовал разобраться. Но в кучу все собрать не получилось. Прошу привести пример простейшего кода,...2013-09-10T20:10:59Z2013-09-10T20:10:59ZBondhttps://stocksharp.ru/users/26882/info@stocksharp.ruПопробовал разобраться. Но в кучу все собрать не получилось.<br />Прошу привести пример простейшего кода, который возьмет свечи заданного таймфрейма из хранилища и просто отрисует их на графике за указанный период времени(странно, что нет такого примера в обучении). Желательно рабочий код потому, что опыта мало и путаюсь в мелочах.<br /><br />В документации в качестве примера используется TimeFrameCandleBuilder(что это?):<br /><a href="http://stocksharp.com/doc/html/f71010d3-135c-4fe9-a573-abf0245b3f5d.htm" title="http://stocksharp.com/doc/html/f71010d3-135c-4fe9-a573-abf0245b3f5d.htm">http://stocksharp.com/doc/html/...e9-a573-abf0245b3f5d.htm</a><br /><br />Иван предлагает использовать UseCandlesTimeFrame,пользователь esper предлагает через StorageRegistry.GetCandleStorage. Плюс как правильно вывести все это на график?<br />Во всех примерах Sample, в том числе и в уроках это все реализуется как-то по разному.<br /><br />Заранее спасибо за помощь.<br /><br /><br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27363/Я что-то не понимаю к чему такие манипуляции? Мы делаем из сделок свечки заданного таймфрейма(наприм...2013-09-10T10:08:33Z2013-09-10T10:08:33ZBondhttps://stocksharp.ru/users/26882/info@stocksharp.ru<div class="quote"><span class="quotetitle">esper <a href="https://stocksharp.ru/posts/m/27362/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27361/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Я что-то не понимаю к чему такие манипуляции? Мы делаем из сделок свечки заданного таймфрейма(например, в Гидре), а потом из этих свечек пытаемся обратно сэмулировать тиковые сделки. Зачем? Мне просто нужно по данным предыдущей свечки O, H, L, C, V выставлять заявки, тики не нужны.</div></div><br />Для эмуляции исполнения заявок необходимы сделки или стаканы, поэтому свечки разбиваются на несколько виртуальных сделок, чтобы при необходимости по ним можно было построить стакан или проверить условия исполнения заявок просто по сделкам. Вы можете просто подписаться на получение новых свечек через CandleManager и работать с ними как при реальной торговле.<br /><br /><div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27361/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">И почему объем сделок в свечке нигде не фигурирет? Гидра не формирует свечки заданного таймфрейма с объемом сделок?</div></div><br />Свечки формируются и сохраняются с учетом объема. Далее этот объем делится на несколько частей и используется в каждой из виртуальных сделок.<br /><br />P.s. если вам надо просто получить свечки без эмуляции, то можно использовать метод StorageRegistry.GetCandleStorage</div></div><br /><br />Спасибо за подробный ответ!!!Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27362/Я что-то не понимаю к чему такие манипуляции? Мы делаем из сделок свечки заданного таймфрейма(наприм...2013-09-10T09:57:06Z2013-09-10T09:57:06Zesperhttps://stocksharp.ru/users/5990/info@stocksharp.ru<div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27361/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Я что-то не понимаю к чему такие манипуляции? Мы делаем из сделок свечки заданного таймфрейма(например, в Гидре), а потом из этих свечек пытаемся обратно сэмулировать тиковые сделки. Зачем? Мне просто нужно по данным предыдущей свечки O, H, L, C, V выставлять заявки, тики не нужны.</div></div><br />Для эмуляции исполнения заявок необходимы сделки или стаканы, поэтому свечки разбиваются на несколько виртуальных сделок, чтобы при необходимости по ним можно было построить стакан или проверить условия исполнения заявок просто по сделкам. Вы можете просто подписаться на получение новых свечек через CandleManager и работать с ними как при реальной торговле.<br /><br /><div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27361/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">И почему объем сделок в свечке нигде не фигурирет? Гидра не формирует свечки заданного таймфрейма с объемом сделок?</div></div><br />Свечки формируются и сохраняются с учетом объема. Далее этот объем делится на несколько частей и используется в каждой из виртуальных сделок.<br /><br />P.s. если вам надо просто получить свечки без эмуляции, то можно использовать метод StorageRegistry.GetCandleStorageCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27361/ Спасибо, Иван, за ответ. А есть какой-нибудь пример? Ведь это основные данными с которыми приходитс...2013-09-10T06:19:42Z2013-09-10T06:19:42ZBondhttps://stocksharp.ru/users/26882/info@stocksharp.ru<div class="quote"><span class="quotetitle">IvanB <a href="https://stocksharp.ru/posts/m/27359/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27358/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><br />Спасибо, Иван, за ответ.<br />А есть какой-нибудь пример? Ведь это основные данными с которыми приходится работать! Как указать, чтобы брались свечи заданного таймфрейма?<br /></div></div><br /><br />Пожалуйста.<br />Есть пример SampleHistoryTesting, который находится в папке Testing в примерах S#.<br />Выбор таймфрейма делается через свойство UseCandlesTimeFrame эмулятора трейдера (EmulationTrader).</div></div><br /><br />EmulationTrader.UseCandlesTimeFrame - Если таймфрейм указан, то будут загружаться свечки указанного таймфрейма (вместо трейдов). Далее по свечкам будут генерироваться набор из 5 тиковых сделок O, X, H, L, C (не обязательно в таком порядке), соответствующих точкам в свечке. Точка X выбирается рядом с точкой O, чтобы изменение цены шло по цене X строго внутри диапазона L<X<H (нужно для того чтобы сделки были более реалистичными - по цене близкой к O, а не H или L).<br /><br />Я что-то не понимаю к чему такие манипуляции? Мы делаем из сделок свечки заданного таймфрейма(например, в Гидре), а потом из этих свечек пытаемся обратно сэмулировать тиковые сделки. Зачем? Мне просто нужно по данным предыдущей свечки O, H, L, C, V выставлять заявки, тики не нужны. И почему объем сделок в свечке нигде не фигурирет? Гидра не формирует свечки заданного таймфрейма с объемом сделок?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27359/ Спасибо, Иван, за ответ. А есть какой-нибудь пример? Ведь это основные данными с которыми приходитс...2013-09-10T02:40:22Z2013-09-10T02:40:22ZIvanBhttps://stocksharp.ru/users/26984/info@stocksharp.ru<div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27358/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><br />Спасибо, Иван, за ответ.<br />А есть какой-нибудь пример? Ведь это основные данными с которыми приходится работать! Как указать, чтобы брались свечи заданного таймфрейма?<br /></div></div><br /><br />Пожалуйста.<br />Есть пример SampleHistoryTesting, который находится в папке Testing в примерах S#.<br />Выбор таймфрейма делается через свойство UseCandlesTimeFrame эмулятора трейдера (EmulationTrader).Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27358/Добрый день! Разъясните, пожалуйста, как работать со свечами из хранилища. В ниже указанном коде иде...2013-09-09T20:55:25Z2013-09-09T20:55:25ZBondhttps://stocksharp.ru/users/26882/info@stocksharp.ru<div class="quote"><span class="quotetitle">IvanB <a href="https://stocksharp.ru/posts/m/27355/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27341/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Добрый день! Разъясните, пожалуйста, как работать со свечами из хранилища. В ниже указанном коде идет работа с тиковыми данными? А как обратиться к данным с сформиррванными свечами разного таймфрейма?<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
// хранилище, через которое будет производиться доступ к тиковой и котировочной базе
var storageRegistry = new StorageRegistry();
// изменяем путь, используемый по умолчанию
((LocalMarketDataDrive)storageRegistry.DefaultDrive).Path = HistoryPath.Text;
// используем алфавитное хранилище
((LocalMarketDataDrive) storageRegistry.DefaultDrive).UseAlphabeticPath = true;
</pre>
</div></div><br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
Печать
// создаем тестовый инструмент, на котором будет производится тестирование
var security = new Security
{
Id = "RIZ2@FORTS", // по идентификатору инструмента будет искаться папка с историческими маркет данными
Code = "RIZ2",
Name = "RTS-12.12",
MinStepSize = 10,
MinStepPrice = 2,
ExchangeBoard = ExchangeBoard.Forts,
}
// тестовый портфель
var portfolio = new Portfolio { Name = "test account", BeginValue = 1000000m };
</pre>
</div></div></div></div><br /><br />Приведенный код задает хранилище, торговый инструмент и портфель, и никак не определяет какие элементы используются (стаканы, свечи,...).<br />Чтобы получить данные из хранилища, нужно воспользоваться классом EmulationTrader, и в нем указываем свойство UseCandlesTimeFrame, если хотим получать свечи из хранилища.<br />Надеюсь, я правильно понял вопрос.</div></div><br /><br />Спасибо, Иван, за ответ.<br />А есть какой-нибудь пример? Ведь это основные данными с которыми приходится работать! Как указать, чтобы брались свечи заданного таймфрейма?<br /><br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27355/Добрый день! Разъясните, пожалуйста, как работать со свечами из хранилища. В ниже указанном коде иде...2013-09-09T16:25:37Z2013-09-09T16:25:37ZIvanBhttps://stocksharp.ru/users/26984/info@stocksharp.ru<div class="quote"><span class="quotetitle">Bond <a href="https://stocksharp.ru/posts/m/27341/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Добрый день! Разъясните, пожалуйста, как работать со свечами из хранилища. В ниже указанном коде идет работа с тиковыми данными? А как обратиться к данным с сформиррванными свечами разного таймфрейма?<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
// хранилище, через которое будет производиться доступ к тиковой и котировочной базе
var storageRegistry = new StorageRegistry();
// изменяем путь, используемый по умолчанию
((LocalMarketDataDrive)storageRegistry.DefaultDrive).Path = HistoryPath.Text;
// используем алфавитное хранилище
((LocalMarketDataDrive) storageRegistry.DefaultDrive).UseAlphabeticPath = true;
</pre>
</div></div><br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
Печать
// создаем тестовый инструмент, на котором будет производится тестирование
var security = new Security
{
Id = "RIZ2@FORTS", // по идентификатору инструмента будет искаться папка с историческими маркет данными
Code = "RIZ2",
Name = "RTS-12.12",
MinStepSize = 10,
MinStepPrice = 2,
ExchangeBoard = ExchangeBoard.Forts,
}
// тестовый портфель
var portfolio = new Portfolio { Name = "test account", BeginValue = 1000000m };
</pre>
</div></div></div></div><br /><br />Приведенный код задает хранилище, торговый инструмент и портфель, и никак не определяет какие элементы используются (стаканы, свечи,...).<br />Чтобы получить данные из хранилища, нужно воспользоваться классом EmulationTrader, и в нем указываем свойство UseCandlesTimeFrame, если хотим получать свечи из хранилища.<br />Надеюсь, я правильно понял вопрос.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/27341/Добрый день! Разъясните, пожалуйста, как работать со свечами из хранилища. В ниже указанном коде иде...2013-09-09T07:22:05Z2013-09-09T07:22:05ZBondhttps://stocksharp.ru/users/26882/info@stocksharp.ruДобрый день! Разъясните, пожалуйста, как работать со свечами из хранилища. В ниже указанном коде идет работа с тиковыми данными? А как обратиться к данным с сформиррванными свечами разного таймфрейма?<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
// хранилище, через которое будет производиться доступ к тиковой и котировочной базе
var storageRegistry = new StorageRegistry();
// изменяем путь, используемый по умолчанию
((LocalMarketDataDrive)storageRegistry.DefaultDrive).Path = HistoryPath.Text;
// используем алфавитное хранилище
((LocalMarketDataDrive) storageRegistry.DefaultDrive).UseAlphabeticPath = true;
</pre>
</div></div><br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
Печать
// создаем тестовый инструмент, на котором будет производится тестирование
var security = new Security
{
Id = "RIZ2@FORTS", // по идентификатору инструмента будет искаться папка с историческими маркет данными
Code = "RIZ2",
Name = "RTS-12.12",
MinStepSize = 10,
MinStepPrice = 2,
ExchangeBoard = ExchangeBoard.Forts,
}
// тестовый портфель
var portfolio = new Portfolio { Name = "test account", BeginValue = 1000000m };
</pre>
</div></div>Copyright @ StockSharp Platform LLC 2010 - 2024