Объединение свечей из разных источников~/topic/2266/obedinenie-svechei-iz-raznyh-istochnikov/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-28T11:06:44Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/18032/http://i35.fastpic.ru/big/2012/0404/46/7a6649d8bba684bf7e429efb029f0446.png Подгрузили историю, пров...2012-04-04T19:21:35Z2012-04-04T19:21:35ZMoadiphttps://stocksharp.ru/users/5973/info@stocksharp.ru<div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_091e3509d9254c0e8916006c9e3e5d23');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_091e3509d9254c0e8916006c9e3e5d23' style='display:none'><a href='http://i35.fastpic.ru/big/2012/0404/46/7a6649d8bba684bf7e429efb029f0446.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://i35.fastpic.ru/big/2012/0404/46/7a6649d8bba684bf7e429efb029f0446.png" style='max-width: 600px;' alt=""/></a></div><br />Подгрузили историю, проверили кол-во значений/свечек в IndicatorManager.Container и CandleManager.Container<br />Подгрузили сегодняшний день, проверили кол-во значений/свечек в IndicatorManager.Container и CandleManager.Container<br /><br />При остановке series и смене построителя свечек, а затем повторном запуске этой же series свечки в СandleManager.Container за прошлый день не сохраняются.<br />В IndicatorManager.Container прошлые значения сохраняются. Может сделать чтобы также было в СandleManager.Container?<br /><br />Можно конечно сделать свой CandleManagerContainer и в него складывать свечки, но это не очень удобно.<br /><br />Весь код, может кому пригодится.[smile]<br /> <br /><div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_6512d83fee2f4f1193138c0513f2dd61');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_6512d83fee2f4f1193138c0513f2dd61' style='display:none'><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
using System;
using System.Linq;
using System.Windows;
using System.Windows.Forms;
using System.ComponentModel;
using MessageBox = System.Windows.MessageBox;
using StockSharp.Algo.Candles.Compression;
using StockSharp.Algo.Indicators.Trend;
using StockSharp.Algo.Storages;
using Ecng.Serialization;
using Ecng.Collections;
using Ecng.Common;
using Ecng.Xaml;
using StockSharp.Quik;
using StockSharp.Algo.Candles;
using StockSharp.BusinessEntities;
using StockSharp.Algo.Indicators;
namespace SimpleCandle
{
public partial class MainWindow
{
QuikTrader _trader;
Security _instr1;
private const string _secCode1 = "RIM2";
CandleManager _candleManager;
readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(5);
// Начальная и конечная дата для подгрузки истории
readonly DateTime _startTime = new DateTime(2012, 4, 3);
readonly DateTime _stopTime = new DateTime(2012, 4, 4);
// Путь к данным истории
private const string _historyPath = @"e:\DataServer4.1\";
public MainWindow()
{
InitializeComponent();
Path.Text = @"e:\Program Files\QUIK\";
}
private void FindPath_Click(object sender, RoutedEventArgs e)
{
var dlg = new FolderBrowserDialog();
if (!Path.Text.IsEmpty()) dlg.SelectedPath = Path.Text;
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) Path.Text = dlg.SelectedPath;
}
bool _isConnected;
private void btnConnect_Click(object sender, RoutedEventArgs e)
{
if (!_isConnected)
{
if (Path.Text.IsEmpty()) MessageBox.Show(this, "Путь к Quik не выбран");
else
{
if (_trader == null)
{
_trader = new QuikTrader(Path.Text);
_trader.MarketTimeOffset = TimeSpan.FromHours(-3);
_isConnected = true;
_trader.ConnectionError += error => this.GuiAsync(() => MessageBox.Show(this, error.ToString()));
_trader.Connected += () => this.GuiAsync(() => btnExportDde.IsEnabled = true);
btnExportDde.IsEnabled = true;
_trader.NewSecurities += securities => { if (_instr1 == null)_instr1 = securities.FirstOrDefault(sec => sec.Code == _secCode1); };
_candleManager = new CandleManager();
}
_trader.Connect();
_isConnected = true;
btnConnect.Content = "Отключиться";
}
}
else
{
_trader.Disconnect();
_isConnected = false;
btnConnect.Content = "Подключиться";
}
}
private readonly SimpleMovingAverage _longSma = new SimpleMovingAverage { Length = 20 };
private CandleSeries _series;
private TimeFrameCandleBuilder _builder;
private IndicatorManager _indicatorManager = new IndicatorManager();
private IndicatorToken _token;
private void btnDrawCandleHistory_Click(object sender, RoutedEventArgs e)
{
var storage = new TradingStorage(new InMemoryStorage());
var cbs = new TradeStorageCandleBuilderSource { BasePath = _historyPath, Storage = storage };
_builder = new TimeFrameCandleBuilder();
_builder.Sources.Add(cbs);
_candleManager.Sources.Add(_builder);
_series = new CandleSeries(typeof(TimeFrameCandle), _instr1, _timeFrame);
_token = _indicatorManager.RegisterIndicator(_longSma, new CandleSeriesIndicatorSource(_series, candle => candle.ClosePrice));
_candleManager.Stopped += _candleManager_Stopped;
_candleManager.Start(_series, _startTime, _stopTime);
}
private void _candleManager_Stopped(CandleSeries series)
{
this.GuiAsync(() => Chart.Candles.AddRange(series.GetCandles()));
}
private void bntDrawCandleReal_Click(object sender, RoutedEventArgs e)
{
_candleManager.Stopped -= _candleManager_Stopped;
_candleManager.Stop(_series);
_candleManager.Sources.Remove(_builder);
var cbs = new TradeCandleBuilderSource(_trader);
var cb = new TimeFrameCandleBuilder();
cb.Sources.Add(cbs);
_candleManager.Sources.Add(cb);
_candleManager.Processing += DrawCandles;
_trader.StartExport(new[] { _trader.TradesTable });
_candleManager.Start(_series);
}
private void DrawCandles(CandleSeries series, Candle candle)
{
var bounds = _timeFrame.GetCandleBounds(_trader);
if (bounds.Min > candle.OpenTime)
{
if (candle.State == CandleStates.Finished)
{
this.GuiAsync(() => Chart.Candles.Add(candle));
}
}
else
{
this.GuiAsync(() => Chart.Candles.Add(candle));
}
}
private void button1_Click(object sender, RoutedEventArgs e)
{
button1.Content = _indicatorManager.Container.GetValues(_token).Count();
}
private void button2_Click(object sender, RoutedEventArgs e)
{
button2.Content = _candleManager.Container.GetCandles(_series).Count();
}
private void btnExportDde_Click(object sender, RoutedEventArgs e)
{
if (_isDdeStarted) StopDde();
else StartDde();
}
bool _isDdeStarted;
private void StartDde()
{
_trader.StartExport(new[] { _trader.SecuritiesTable });
_isDdeStarted = true;
}
private void StopDde()
{
_trader.StopExport(new[] { _trader.TradesTable, _trader.SecuritiesTable });
_isDdeStarted = false;
}
private void Window_Closing(object sender, CancelEventArgs e)
{
if (_trader != null)
{
if (_isDdeStarted) StopDde();
_trader.Dispose();
}
}
}
}
</pre>
</div></div></div><br /><div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_7cc092e895d84575bae436274f41d9d7');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_7cc092e895d84575bae436274f41d9d7' style='display:none'><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
<Window x:Class="SimpleCandle.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EcngTradingXaml="clr-namespace:StockSharp.Xaml;assembly=StockSharp.Xaml" Title="" Height="675" Width="763" Closing="Window_Closing" Topmost="False" WindowStartupLocation="CenterScreen">
<Grid>
<EcngTradingXaml:CandleChart x:Name="Chart" x:FieldModifier="public" Margin="0,70,0,0" HorizontalAlignment="Left" Width="732" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="Path" VerticalAlignment="Top" Width="277" />
<Button Content="..." Height="23" HorizontalAlignment="Left" Margin="295,12,0,0" Name="FindPath" VerticalAlignment="Top" Width="23" Click="FindPath_Click" />
<Button Content="Подключиться" Height="23" HorizontalAlignment="Left" Margin="12,41,0,0" Name="btnConnect" VerticalAlignment="Top" Width="98" Click="btnConnect_Click" />
<Button Content="Экспорт DDE" Height="23" HorizontalAlignment="Left" Margin="116,41,0,0" Name="btnExportDde" VerticalAlignment="Top" Width="98" Click="btnExportDde_Click" IsEnabled="False" />
<Button Content="Свечки Реал" Height="23" HorizontalAlignment="Left" Margin="324,41,0,0" Name="btnDrawCandleReal" VerticalAlignment="Top" Width="98" Click="bntDrawCandleReal_Click" />
<Button Content="Свечки История" Height="23" HorizontalAlignment="Left" Margin="220,41,0,0" Name="btnDrawCandlHistory" VerticalAlignment="Top" Width="98" Click="btnDrawCandleHistory_Click"/>
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="463,41,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="544,41,0,0" Name="button2" VerticalAlignment="Top" Width="75" Click="button2_Click" />
</Grid>
</Window>
</pre>
</div></div></div>Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17905/За текущий день отрисовывает, историю - нет. Данные от 4.0 переконвертировал в 4.1. Проверил в тесте...2012-04-02T06:43:51Z2012-04-02T06:43:51ZMoadiphttps://stocksharp.ru/users/5973/info@stocksharp.ru<div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote">За текущий день отрисовывает, историю - нет.<br />Данные от 4.0 переконвертировал в 4.1. Проверил в тесте на истории - нормально.<br /><br />Что делаю не так? В чем причина?</div></div><br /><br />Отвечу сам на свой вопрос.<br />Для того чтобы отрисовались свечки, надо немного подождать.[smile] <br /><br />Время отрисовки свечек по RI за один день:<br />В 4.0 10 сек.<br />В 4.1 90 сек.<br /><br />Также в 4.1 наблюдается странный глюк.<br />Допустим есть данные за неделю 26-30 марта.<br />Если выставить дату по которой нет данных, например 25 марта, то будет ошибка - очередь пуста, все правильно.<br />Если выставить дату 30 марта, т.е. последний день существующих данных, то ошибки не будет, но и свечки по какой то причине не генерируются.<br />Если выставить 29 марта, все нормально отрисуется.<br /><br />Проверял данные в тесте на истории за этот же день(30 марта), все нормально.<br /><br />В 4.0 такого не наблюдается.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17884/Александр я где то на Вашем форуме читал, что если написать индикатор то можно получить несколько от...2012-03-30T19:37:24Z2012-03-30T19:37:24ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">JackSparrow <a href="https://stocksharp.ru/posts/m/17883/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Александр я где то на Вашем форуме читал, что если написать индикатор то можно получить несколько ответов.<br /></div></div><br /><br />И я отвечал на ваши вопросы. В основном по Гидре. Поверьте, если бы не помощь по индикаторам, ответом было бы меньше, так как мы отвечаем только на вопросы, касающиеся багов. <br /><br /><div class="quote"><span class="quotetitle">JackSparrow <a href="https://stocksharp.ru/posts/m/17883/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><br />но время запрачиваемое на разгребание простых вопросов в отсутствие либо доков либо исходников, не оставляет шансов помощ в написании чего либо.</div></div><br /><br />Предлагаю взять паузу на выходные. Чувствую, неделя была у всех тяжелая... По свечкам - как выложим официально бету в паблик, так и доку обновим. Нет ни времени ни смысла каждому сейчас расказывать о том, как свечки устроены в новой версии, если можно за раз написать доку, и всех отправлять ее читать.<br /><br />Если есть претензии по текущей доке, то надо их высказывать <b>сейчас</b>. Будем смотреть, исправлять. До этого вы ничего не писали про качество документации. Значит все было окей. Сейчас что-то изменилось?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17883/Нет так нет. вы о чём? Александр я где то на Вашем форуме читал, что если написать индикатор то можн...2012-03-30T18:30:45Z2012-03-30T18:30:45ZJackSparrowhttps://stocksharp.ru/users/27783/info@stocksharp.ru<div class="quote"><span class="quotetitle">Alexander Mukhanchikov <a href="https://stocksharp.ru/posts/m/17841/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">JackSparrow <a href="https://stocksharp.ru/posts/m/17827/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Нет так нет.</div></div><br /><br />вы о чём?<br /></div></div><br />Александр я где то на Вашем форуме читал, что если написать индикатор то можно получить несколько ответов.<br />На данный момент я не получил не одного ответа не на один вопрос, хотя я не задаю заумных вопросов, все очень просты, и их не много.<br />Желание спрашивать пропадает. <br />К тому же Вы высказываете сожаления что Вам мало помогают, но время запрачиваемое на разгребание простых вопросов в отсутствие либо доков либо исходников, не оставляет шансов помощ в написании чего либо.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17882/Разбираюсь с 4.1 столкнулся с проблемой. В 4.0 CandleManager _candleManager; readonly TimeSpan _time...2012-03-30T17:41:53Z2012-03-30T17:43:09ZMoadiphttps://stocksharp.ru/users/5973/info@stocksharp.ruРазбираюсь с 4.1 столкнулся с проблемой.<br /><br />В 4.0<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
CandleManager _candleManager;
readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(5);
// Начальная и конечная дата для подгрузки истории
readonly DateTime _startTime = DateTime.Today - TimeSpan.FromDays(2);
readonly DateTime _stopTime = DateTime.Today;
// Путь к данным истории
private const string _historyPath = "e:\\DataServer\\";
...
_candleManager = new CandleManager();
_candleManager.CandlesStarted += (token, candles) => DrawCandles(candles);
_candleManager.CandlesChanged += (token, candles) => DrawCandles(candles);
...
private void btnDrawCandleHistory_Click(object sender, RoutedEventArgs e)
{
var storage = new TradingStorage(new InMemoryStorage()) { BasePath = _historyPath };
var builder = new CandleBuilder(new TradeStorageCandleBuilderSource(storage) { From = _startTime, To = _stopTime });
_candleManager.Sources.Add(builder);
_candleManager.RegisterTimeFrameCandles(_instr1, _timeFrame);
}
private void bntDrawCandleReal_Click(object sender, RoutedEventArgs e)
{
_candleManager.Sources.Add(new CandleBuilder(new TradeCandleBuilderSource(_trader)));
_candleManager.RegisterTimeFrameCandles(_instr1, _timeFrame);
}
</pre>
</div></div><br /><br />Два метода, один рисует свечки за сегодняшний день, другой - на основе истории.<br /><br />Делаю по аналогии в 4.1<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
CandleManager _candleManager;
readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(5);
// Начальная и конечная дата для подгрузки истории
readonly DateTime _startTime = DateTime.Today - TimeSpan.FromDays(2);
readonly DateTime _stopTime = DateTime.Today;
// Путь к данным истории
private const string _historyPath = "e:\\DataServer\\";
...
_candleManager = new CandleManager();
_candleManager.Processing += DrawCandles;
...
private void btnDrawCandleHistory_Click(object sender, RoutedEventArgs e)
{
var storage = new TradingStorage(new InMemoryStorage());
var cbs = new TradeStorageCandleBuilderSource() { BasePath = _historyPath, Storage = storage };
var cb = new TimeFrameCandleBuilder();
cb.Sources.Add(cbs);
_candleManager.Sources.Add(cb);
var series = new CandleSeries(typeof(TimeFrameCandle), _instr1, _timeFrame);
_candleManager.Start(series, _startTime, _stopTime);
}
private void bntDrawCandleReal_Click(object sender, RoutedEventArgs e)
{
var cbs = new TradeCandleBuilderSource(_trader);
var cb = new TimeFrameCandleBuilder();
cb.Sources.Add(cbs);
_candleManager.Sources.Add(cb);
var series = new CandleSeries(typeof (TimeFrameCandle), _instr1, _timeFrame);
_candleManager.Start(series);
}
</pre>
</div></div><br /><br />За текущий день отрисовывает, историю - нет.<br />Данные от 4.0 переконвертировал в 4.1. Проверил в тесте на истории - нормально.<br /><br />Что делаю не так? В чем причина?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17841/Нет так нет. вы о чём? 2012-03-29T18:04:26Z2012-03-29T18:04:26ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ru<div class="quote"><span class="quotetitle">JackSparrow <a href="https://stocksharp.ru/posts/m/17827/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Нет так нет.</div></div><br /><br />вы о чём?<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17827/Справки нет только для свечек. Всё остальное не менялось. Если используете свечки - то вкратце - Can...2012-03-29T10:33:25Z2012-03-29T10:33:25ZJackSparrowhttps://stocksharp.ru/users/27783/info@stocksharp.ru<div class="quote"><span class="quotetitle">Alexander Mukhanchikov <a href="https://stocksharp.ru/posts/m/17805/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Справки нет только для свечек.<br />Всё остальное не менялось.<br /><br />Если используете свечки - то вкратце - CandleToken поменялся на CandleSeries</div></div><br /><br />Спасибо вкратце, сделал свой контейнер, сделал свой график, нарисовал. Но хотелось использовать имеющиеся механизмы. Нет так нет.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17805/Справки нет только для свечек. Всё остальное не менялось. Если используете свечки - то вкратце - Can...2012-03-28T18:27:32Z2012-03-28T18:27:32ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruСправки нет только для свечек.<br />Всё остальное не менялось.<br /><br />Если используете свечки - то вкратце - CandleToken поменялся на CandleSeriesCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17803/Как решить эту проблему? Т.е. хотелось бы в _candleManager всунуть сначала свечи истории, а потом чт...2012-03-28T18:07:30Z2012-03-28T18:23:36ZJackSparrowhttps://stocksharp.ru/users/27783/info@stocksharp.ru<div class="quote"><span class="quotetitle">Mikhail Sukhov <a href="https://stocksharp.ru/posts/m/16403/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">russ <a href="https://stocksharp.ru/posts/m/16400/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Как решить эту проблему? Т.е. хотелось бы в _candleManager всунуть сначала свечи истории, а потом чтобы туда поступали свечи сегодняшнего дня.</div></div><br /><br />См. 4.1 из дев ветки. Все сильно поменялось в плане свечек.</div></div><br />А на что конкретно там смотреть, подскажите плиз. Как все свечи в один ряд собирать средствами S#? А то костылики нехочется придумывать.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/17804/Поддерживаю. Вопрос к разработчикам. Во многих постах на форуме предлагаете переходить на 4.1 Но есл...2012-03-28T18:18:17Z2012-03-28T18:18:17ZMoadiphttps://stocksharp.ru/users/5973/info@stocksharp.ruПоддерживаю.<br /><br /><b>Вопрос к разработчикам.</b><br /><br />Во многих постах на форуме предлагаете переходить на 4.1<br />Но если нет справки то как изучать новую функциональность?<br /><br />Пользоваться objectBrowser не совсем удобно. Или методом научного тыка на основе примеров?<br />Может есть какой то прототип справки?<br />Или если на codeplex в dev ветке, в файлах справки есть что почитать, то как эту справку собрать?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/16435/Как решить эту проблему? Т.е. хотелось бы в _candleManager всунуть сначала свечи истории, а потом чт...2012-02-14T20:26:30Z2012-02-14T20:26:51Zrusshttps://stocksharp.ru/users/567/info@stocksharp.ru<div class="quote"><span class="quotetitle">Alexander Mukhanchikov <a href="https://stocksharp.ru/posts/m/16434/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">russ <a href="https://stocksharp.ru/posts/m/16432/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Mikhail Sukhov <a href="https://stocksharp.ru/posts/m/16403/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">russ <a href="https://stocksharp.ru/posts/m/16400/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Как решить эту проблему? Т.е. хотелось бы в _candleManager всунуть сначала свечи истории, а потом чтобы туда поступали свечи сегодняшнего дня.</div></div><br /><br />См. 4.1 из дев ветки. Все сильно поменялось в плане свечек.</div></div><br />Имеется ввиду бета11 версия отсюда?<br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAAbncQVTu8T5yVB2LlB47S-5KHyW8ZN6xcH4iJyKFKwUQgjwasowjZHTe_leX0HSMEZMleO4gnNqwGCWXzqWS-5TnvzOJVHW4Fqr44e-qsVTg" title="http://stocksharp.codeplex.com/SourceControl/changeset/changes/14551">http://stocksharp.codepl.../changeset/changes/14551</a></div></div><br /><br />да</div></div><br />Прикольно, я так понял CandleToken канул в лету и ему на смену пришел CandleSeries.<br />Буду ждать релиза 4.1. Спасибо, что развиваете библиотеку.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/16434/Как решить эту проблему? Т.е. хотелось бы в _candleManager всунуть сначала свечи истории, а потом чт...2012-02-14T20:06:22Z2012-02-14T20:06:22ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ru<div class="quote"><span class="quotetitle">russ <a href="https://stocksharp.ru/posts/m/16432/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Mikhail Sukhov <a href="https://stocksharp.ru/posts/m/16403/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">russ <a href="https://stocksharp.ru/posts/m/16400/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Как решить эту проблему? Т.е. хотелось бы в _candleManager всунуть сначала свечи истории, а потом чтобы туда поступали свечи сегодняшнего дня.</div></div><br /><br />См. 4.1 из дев ветки. Все сильно поменялось в плане свечек.</div></div><br />Имеется ввиду бета11 версия отсюда?<br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAAbncQVTu8T5yVB2LlB47S-5KHyW8ZN6xcH4iJyKFKwUQgjwasowjZHTe_leX0HSMEZMleO4gnNqwGCWXzqWS-5TnvzOJVHW4Fqr44e-qsVTg" title="http://stocksharp.codeplex.com/SourceControl/changeset/changes/14551">http://stocksharp.codepl.../changeset/changes/14551</a></div></div><br /><br />даCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/16433/Заведите отдельную коллекцию для всех свечей Что значит заводить отдельную коллекцию? В виде List чт...2012-02-14T20:03:12Z2012-02-14T20:03:12Zrusshttps://stocksharp.ru/users/567/info@stocksharp.ru<div class="quote"><span class="quotetitle">freelancer <a href="https://stocksharp.ru/posts/m/16427/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Заведите отдельную коллекцию для всех свечей</div></div><br />Что значит заводить отдельную коллекцию? В виде List<Candle> что-ли? Хотелось бы все свечи иметь в candlemanager, чтобы ими пользоваться оттуда.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/16432/Как решить эту проблему? Т.е. хотелось бы в _candleManager всунуть сначала свечи истории, а потом чт...2012-02-14T20:00:25Z2012-02-14T20:00:25Zrusshttps://stocksharp.ru/users/567/info@stocksharp.ru<div class="quote"><span class="quotetitle">Mikhail Sukhov <a href="https://stocksharp.ru/posts/m/16403/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">russ <a href="https://stocksharp.ru/posts/m/16400/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Как решить эту проблему? Т.е. хотелось бы в _candleManager всунуть сначала свечи истории, а потом чтобы туда поступали свечи сегодняшнего дня.</div></div><br /><br />См. 4.1 из дев ветки. Все сильно поменялось в плане свечек.</div></div><br />Имеется ввиду бета11 версия отсюда?<br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAAbncQVTu8T5yVB2LlB47S-5KHyW8ZN6xcH4iJyKFKwUQgjwasowjZHTe_leX0HSMEZMleO4gnNqwGCWXzqWS-5TnvzOJVHW4Fqr44e-qsVTg" title="http://stocksharp.codeplex.com/SourceControl/changeset/changes/14551">http://stocksharp.codepl.../changeset/changes/14551</a>Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/16427/Заведите отдельную коллекцию для всех свечей2012-02-14T15:34:49Z2012-02-14T15:34:49Zfreelancerhttps://stocksharp.ru/users/28572/info@stocksharp.ruЗаведите отдельную коллекцию для всех свечейCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/16403/Как решить эту проблему? Т.е. хотелось бы в _candleManager всунуть сначала свечи истории, а потом чт...2012-02-14T10:18:02Z2012-02-14T10:18:02ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">russ <a href="https://stocksharp.ru/posts/m/16400/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Как решить эту проблему? Т.е. хотелось бы в _candleManager всунуть сначала свечи истории, а потом чтобы туда поступали свечи сегодняшнего дня.</div></div><br /><br />См. 4.1 из дев ветки. Все сильно поменялось в плане свечек.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/16400/freelancer, cпасибо Поидее, даже учитывая, что CandleManager будет содержать один набор свечек (толь...2012-02-13T22:44:54Z2012-02-13T22:51:23Zrusshttps://stocksharp.ru/users/567/info@stocksharp.ru<div class="quote"><span class="quotetitle">pehas <a href="https://stocksharp.ru/posts/m/15172/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">freelancer, cпасибо<br />Поидее, даже учитывая, что CandleManager будет содержать один набор свечек (только из трейдера), можно будет попробовать скормить исторические свечи квика индикаторам через process()<br />Правда, все же странно, что нельзя в S# объединить две группировки свечек..<br /><br /></div></div><br />Кстати действительно очень интересный и не понятный момент.<br />Допустим берем свечи из примера на QPILE как экспорт произвольных таблиц, там есть свечи за предыдущие и частично сегоднешний день, допустим робота запускаем в 12 часов.<br />Теперь регистрируем токен:<br />_tokenWorkingTF = _candleManager.RegisterTimeFrameCandles(_security, TimeSpan.FromMinutes(30));<br />сразу получаем несколько 30 минуток т.к. сессия уже идет, сразу вопрос всегда ли будут получаться только свечи сегодняшнего дня или нет?<br /><br />Потом загружаем свечи из экспорта произвольных таблиц<br />List<Candle> candles = new List<Candle>();<br /> foreach (QuikCandleFutDay qk in lst)<br /> {<br /> TimeFrameCandle cndl = new TimeFrameCandle<br /> {<br /> OpenPrice = qk.OpenPrice,<br /> HighPrice = qk.HighPrice,<br /> LowPrice = qk.LowPrice,<br /> ClosePrice = qk.ClosePrice,<br /> TimeFrame = (TimeSpan)token.Arg,<br /> Time = DateTime.ParseExact(qk.DateTime.Date + qk.DateTime.Time, "yyyyMMddHHmmss", CultureInfo.InvariantCulture),<br /> TotalVolume = qk.Volume,<br /> Security = token.Security,<br /> };<br /> candles.Add(cndl);<br /> }<br /> _candleManager.Container.AddCandles(token, candles);<br /><br />Соответственно в _candleManager будет полный бардак, сначала будут идти свечи части сегодняшнего дня, а потом будут идти свечи из экспорта.<br />Казалось бы можно сначала запихнуть свечи из экспорта, но это невозможно, т.к. нужно создать токен, а как только создается токен в него сразу загоняются свечи сегодняшнего дня.<br />Как решить эту проблему? Т.е. хотелось бы в _candleManager всунуть сначала свечи истории, а потом чтобы туда поступали свечи сегодняшнего дня.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/15172/freelancer, cпасибо Поидее, даже учитывая, что CandleManager будет содержать один набор свечек (толь...2011-12-26T17:12:34Z2011-12-26T17:12:34Zpehashttps://stocksharp.ru/users/340/info@stocksharp.rufreelancer, cпасибо<br />Поидее, даже учитывая, что CandleManager будет содержать один набор свечек (только из трейдера), можно будет попробовать скормить исторические свечи квика индикаторам через process()<br />Правда, все же странно, что нельзя в S# объединить две группировки свечек..<br /><br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/15166/Ну да. IndicatorManager у меня нет. В OnStarting: соединяю свечи, потом: foreach (Candle c in _candl...2011-12-26T14:07:11Z2011-12-26T14:07:11Zfreelancerhttps://stocksharp.ru/users/28572/info@stocksharp.ruНу да. IndicatorManager у меня нет. <br />В OnStarting: соединяю свечи, потом: <br /><br />foreach (Candle c in _candles)<br /> Индикатор.Process(new StockSharp.Algo.Indicators.CandleIndicatorValue(c));<br /><br />А в CandlesFinished прибавляю пришедшую свечу и еще раз Индикатор.Process(new StockSharp.Algo.Indicators.CandleIndicatorValue(пришедшая_свеча));<br /><br />Как-то такCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/15149/Я сделал так: воспользовался экспортом произвольных таблиц из примеров. Но ! Новые свечки в той табл...2011-12-26T12:11:56Z2011-12-26T12:11:56Zpehashttps://stocksharp.ru/users/340/info@stocksharp.ru<div class="quote"><span class="quotetitle">freelancer <a href="https://stocksharp.ru/posts/m/15145/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Я сделал так:<br />воспользовался экспортом произвольных таблиц из примеров. Но ! Новые свечки в той таблице у меня появляются с задержкой в 2 секунды. Поэтому оттуда не беру сегодняшние свечи, а беру их их по таблице всех сделок. А внутри стратегии просто складываю их в одну коллекцию и всё. Всё проходит очень быстро</div></div><br /><br />Получается, что вы не работаете с индикаторами, по крайней мере не через IndicatorManager, верно? У меня все заточено под CandleManager. C него берут значения все индикаторы и в стратегии стоят правила на приход и обновление свечей по CandleManager. Поэтому просто использовать отдельную коллекцию не получится. А вот если ее положить каким-то образом в CandleManager, то возможно. Но, например, вот так невыходит<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
CM.Container.AddCandles(candleToken, this.historyCandles);
</pre>
</div></div><br />События CandlesChanged, CandlesStarted для historyCandles (полученных из квика) не вызываются..Copyright @ StockSharp Platform LLC 2010 - 2024