Объединение исторических и текущих свечек~/topic/1498/obedinenie-istoricheskih-i-tekushshih-svechek/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-28T18:57:10Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/15443/Спасибо, буду разбираться. Со Смартом вообще довольно много проблем, но нужно под него сделать. :(2012-01-06T17:35:27Z2012-01-06T17:35:27ZDaenurhttps://stocksharp.ru/users/28118/info@stocksharp.ruСпасибо, буду разбираться.<br /><br />Со Смартом вообще довольно много проблем, но нужно под него сделать. :(Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/15389/Если последняя версия S#, то там сейчас есть SmartCandleSource для удобной работы с CandleManager. Э...2012-01-04T11:09:20Z2012-01-04T11:09:20ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ruЕсли последняя версия S#, то там сейчас есть SmartCandleSource для удобной работы с CandleManager. Это во-первых. А во-вторых, история у СмартКом не важнецкая. Лучше искать альтернативные источники.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/15387/Возрожу эту тему. Объединяю историю с реалтаймом. // Подписка на события ((SmartTrader)this.trader)....2012-01-04T10:05:52Z2012-01-04T11:07:13ZDaenurhttps://stocksharp.ru/users/28118/info@stocksharp.ruВозрожу эту тему.<br /><br />Объединяю историю с реалтаймом.<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
// Подписка на события
((SmartTrader)this.trader).NewHistoryCandles += (token, candles) => this.historyCandles.SyncDo(col =>
{
// Сохраняем исторические бары
this.historyCandles.AddRange(candles);
// Отрисовываем исторические бары
chartWindow.DrawCandles(token, candles);
});
candleManager.CandlesStarted += DrawRealTimeCandles;
candleManager.CandlesChanged += DrawRealTimeCandles;
candleManager.CandlesFinished += DrawRealTimeCandles;
// Собственно забираю историю
TimeSpan ts = new TimeSpan(currentTimeFrame.Hours * 100, currentTimeFrame.Minutes * 100, currentTimeFrame.Seconds * 100);
Range<DateTime> range = new Range<DateTime>((DateTime.Now - ts), DateTime.Now);
((SmartTrader)trader).RegisterHistoryCandles(this.SelectedSecurity, this.currentTimeFrame, range);
this.lastHistoryCandle = this.currentTimeFrame.GetCandleBounds(this.trader).Min;
// Дальнейшая отрисовка реал-тайм
public void DrawRealTimeCandles(CandleToken token, IEnumerable<Candle> candles)
{
this.GuiAsync(() =>
{
IEnumerable<Candle> realTimeCandles = candles;
// Для SmartCOM выводим только те свечки, которые не были отрисованы как исторические
if (this.rbSmart.IsChecked == true)
realTimeCandles = candles.Where(c => c.Time > this.lastHistoryCandle);
chartWindow.DrawCandles(token, realTimeCandles);
});
}</pre>
</div></div><br /><br /><br />История забирается нормально, реалтайм тоже без проблем идет. Единственная и довольно неприятная проблема - бар, на котором происходит соединение. Он, вроде как и из истории не берется полноценным, и из реалтайма. В результате бар, на котором произошло подключение, не совпадает с реальностью. Есть какие-нибудь способы получить его правильно, чтобы как в КВИКе было, где все нормально? Кто как решает эту проблему?<br /><br />ЗЫ. Самое интересное, что похожей проблемой грешат RightEdge и OpenQuant на разных источниках данных. Но тут-то у нас все в руках, вопрос только - как? [blush]Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/7334/Приветствую! Долго пытался разобраться самостоятельно, но так и не нашел ответов. Задача состоит в с...2011-04-07T10:25:42Z2011-04-07T10:25:42ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">morincer <a href="https://stocksharp.ru/posts/m/7330/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Приветствую!<br /><br />Долго пытался разобраться самостоятельно, но так и не нашел ответов.<br />Задача состоит в следующем: необходимо получить "ленту" пятимянутных свечек - от текущего момента (после подключения) до, допустим, минус две недели назад. <br />Собственно, вопросы:<br />1) Если вызвать RegisterHistoryData и слушать NewHistoryCandle - как узнать, что я получил все свечки в заданном диапазоне?<br />2) В документации сказано, что RegisterHistoryData получает свечки за <b>предыдущие</b> торговые сессии. Как тогда получить данные за текущую сессию (предполагаю, что подключился в середине торгового дня и нужно получить свечки более ранние)? <br />3) И последнее, но не в последнюю очередь - адаптация решения первых двух вопросов к тестированию на исторических данных - как? <br /><br />Зараннее спасибо!</div></div><br /><br />1. Эфристически.[smile] <br />2. Попробуйте за текущую сессию.<br />3. Тестирование идет на основе тиковых данных.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/7330/Приветствую! Долго пытался разобраться самостоятельно, но так и не нашел ответов. Задача состоит в с...2011-04-07T09:47:14Z2011-04-07T09:47:14Zmorincerhttps://stocksharp.ru/users/28225/info@stocksharp.ruПриветствую!<br /><br />Долго пытался разобраться самостоятельно, но так и не нашел ответов.<br />Задача состоит в следующем: необходимо получить "ленту" пятимянутных свечек - от текущего момента (после подключения) до, допустим, минус две недели назад. <br />Собственно, вопросы:<br />1) Если вызвать RegisterHistoryData и слушать NewHistoryCandle - как узнать, что я получил все свечки в заданном диапазоне?<br />2) В документации сказано, что RegisterHistoryData получает свечки за <b>предыдущие</b> торговые сессии. Как тогда получить данные за текущую сессию (предполагаю, что подключился в середине торгового дня и нужно получить свечки более ранние)? <br />3) И последнее, но не в последнюю очередь - адаптация решения первых двух вопросов к тестированию на исторических данных - как? <br /><br />Зараннее спасибо!Copyright @ StockSharp Platform LLC 2010 - 2024