Не могу понять почему не видно свечей
~/topic/3288/ne-mogu-ponyat-pochemu-ne-vidno-svechei/
Copyright @ StockSharp Platform LLC 2010 - 2024
2024-03-28T22:03:09Z
https://stocksharp.ru/images/logo.png
https://stocksharp.ru/posts/m/23270/
Выдает вот такое когда свечи хочу отрисовать: _chart.ProcessCandle((ChartCandleElement)_chart.Areas...
2013-01-09T14:59:08Z
2013-01-09T14:59:08Z
RoboKrolik
https://stocksharp.ru/users/16730/
info@stocksharp.ru
<div class="quote"><span class="quotetitle">Геннадий Ванин (Gennady Vanin) <a href="https://stocksharp.ru/posts/m/23266/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">RoboKrolik <a href="https://stocksharp.ru/posts/m/23260/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><br />Выдает вот такое когда свечи хочу отрисовать:<br />_chart.ProcessCandle((ChartCandleElement)_chart.Areas[0].Elements[0], candle);</div></div><br />А вы вообще нигде не добавляете элементы в <b>_chart.Areas[0]</b> ?!<br /><br /><div class="quote"><span class="quotetitle">RoboKrolik <a href="https://stocksharp.ru/posts/m/23260/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Или вот такое когда хочу цену закрытия получить свечи:<br />Label3.Content = Convert.ToString(series.GetCandle<TimeFrameCandle>(1).ClosePrice);<br /><br /><b>> WpfApplication1.exe!WpfApplication1.MainWindow.StartRobo_Click(object sender, System.Windows.RoutedEventArgs e) Line 169 + 0x28 bytes C#</b></div></div><br /><br />Вы же получаете цену закрытия 2й минутной свечки?<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
private TimeSpan _timeFrame = TimeSpan.FromMinutes(1); // таймфрейм</pre>
</div></div><br />Это, ИМО, возможно не немедленно, а Вы сразу дёргаете?<br /><br />Кроме того, если Вы работаете через учебный сервер, то таблица всех сделок может быть пустая, её заполнение нужно специально запрашивать</div></div><br /><br /><b>Спасибо за помощь. Понял свою ошибку. Пытался обратится к свече раньше чем она создалась и заполнилась.</b>
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.ru/posts/m/23269/
Кроме того, если Вы работаете через учебный сервер, то таблица всех сделок может быть пустая, её зап...
2013-01-09T12:40:34Z
2013-01-09T12:40:34Z
VassilSanych
https://stocksharp.ru/users/6491/
info@stocksharp.ru
<div class="quote"><span class="quotetitle">Геннадий Ванин (Gennady Vanin) <a href="https://stocksharp.ru/posts/m/23266/"><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 - 2024
https://stocksharp.ru/posts/m/23266/
Выдает вот такое когда свечи хочу отрисовать: _chart.ProcessCandle((ChartCandleElement)_chart.Areas...
2013-01-08T20:58:05Z
2013-01-08T22:00:59Z
Геннадий Ванин (Gennady Vanin)
https://stocksharp.ru/users/6413/
info@stocksharp.ru
<div class="quote"><span class="quotetitle">RoboKrolik <a href="https://stocksharp.ru/posts/m/23260/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><br />Выдает вот такое когда свечи хочу отрисовать:<br />_chart.ProcessCandle((ChartCandleElement)_chart.Areas[0].Elements[0], candle);</div></div><br />А вы вообще нигде не добавляете элементы в <b>_chart.Areas[0]</b> ?!<br /><br /><div class="quote"><span class="quotetitle">RoboKrolik <a href="https://stocksharp.ru/posts/m/23260/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Или вот такое когда хочу цену закрытия получить свечи:<br />Label3.Content = Convert.ToString(series.GetCandle<TimeFrameCandle>(1).ClosePrice);<br /><br /><b>> WpfApplication1.exe!WpfApplication1.MainWindow.StartRobo_Click(object sender, System.Windows.RoutedEventArgs e) Line 169 + 0x28 bytes C#</b></div></div><br /><br />Вы же получаете цену закрытия 2й минутной свечки?<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
private TimeSpan _timeFrame = TimeSpan.FromMinutes(1); // таймфрейм</pre>
</div></div><br />Это, ИМО, возможно не немедленно, а Вы сразу дёргаете?<br /><br />Кроме того, если Вы работаете через учебный сервер, то таблица всех сделок может быть пустая, её заполнение нужно специально запрашивать
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.ru/posts/m/23257/
Пишу каркас для торговой стратегии. Вот так создаю свечи: public partial class MainWindow : Window {...
2013-01-08T15:49:09Z
2013-01-08T16:46:51Z
RoboKrolik
https://stocksharp.ru/users/16730/
info@stocksharp.ru
Пишу каркас для торговой стратегии.<br /><br />Вот так создаю свечи:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
public partial class MainWindow : Window
{
// Объявление переменных
private CandleManager _candleManager; // менеджер свечек
private void Connect_Click(object sender, RoutedEventArgs e) // жму на кнопку подключения
{
_candleManager = new CandleManager(_trader); // создаем менеджер свечек для Трейдера
_candleManager.Processing += DrawCandle; // подписываемся на событие
private void StartRobo_Click(object sender, RoutedEventArgs e) // жму на кнопку запуска страты
{
CandleSeries series;
series = new CandleSeries(typeof(TimeFrameCandle), _security, _timeFrame);
_candleManager.Start(series);
Label3.Content = Convert.ToString(series.GetCandle<TimeFrameCandle>(1).ClosePrice);
</pre>
</div></div><br /><br />При запуске стратегии выскакивает вот такая ошибка<br /><br /><b>An unhandled exception of type 'System.NullReferenceException' occurred in WpfApplication1.exe<br /><br />Additional information: Ссылка на объект не указывает на экземпляр объекта.</b><br /><br />Не знаю что и делать. Я так понял что свечи не экспортируются.<br /><br />Какой экземпляр я не создал?<br /><br />Что делать?<br /><br />Код основного окна<br /><div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_64109a686ba44200b29f3e85022328a1');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_64109a686ba44200b29f3e85022328a1' style='display:none'><br />using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;<br />using System.Threading.Tasks;<br />using System.Windows;<br />using System.Windows.Controls;<br />using System.Windows.Data;<br />using System.Windows.Documents;<br />using System.Windows.Input;<br />using System.Windows.Media;<br />using System.Windows.Media.Imaging;<br />using System.Windows.Navigation;<br />using System.Windows.Shapes;<br />using System.Configuration;<br /><br />// using S#<br />using Ecng.Common;<br />using Ecng.ComponentModel;<br />using Ecng.Xaml;<br />using Ecng.Serialization;<br />using Ecng.Collections;<br />using StockSharp.Algo;<br />using StockSharp.Algo.Indicators;<br />using StockSharp.Algo.Indicators.Trend;<br />using StockSharp.Algo.Candles;<br />using StockSharp.Algo.Strategies;<br />using StockSharp.BusinessEntities;<br />using StockSharp.Quik;<br />using StockSharp.Logging;<br />using StockSharp.Xaml;<br /><br /><br />namespace WpfApplication1<br />{<br /><br /> public partial class MainWindow : Window<br /> {<br /><br /> // Объявление переменных<br /><br /> private QuikTrader _trader; // квик трейдер<br /><br /> private TimeSpan _timeFrame = TimeSpan.FromMinutes(1); // таймфрейм<br /> private TimeSpan _timeRefreshStrategy = TimeSpan.FromSeconds(1); // частота обновления стратегии<br /> <br /> int _sharecount; // количество торгуемых контрактов<br /> private DartWeiderStretegy _strategy; // обявляем стратегию<br /> <br /> private Security _security; // инструмент<br /> private Portfolio _portfolio; // портфель<br /><br /> private CandleManager _candleManager; // менеджер свечек<br /> <br /><br /> public MainWindow()<br /> {<br /> InitializeComponent();<br /> <br /><br /> }<br /><br /> // Кнопка "Подключение" - Метод подключения к квику<br /> private void Connect_Click(object sender, RoutedEventArgs e)<br /> {<br /> if (_trader == null)<br /> {<br /> _trader = new QuikTrader(QuikTerminal.GetDefaultPath());<br /><br /> //Подписываемся на событие появления новых портфелей<br /> _trader.NewPortfolios += portfolios => this.GuiAsync(() => {Portfolios.ItemsSource = _trader.Portfolios;});<br /><br /> //Подписываемся на событие появления новых инстументов<br /> _trader.NewSecurities += securities => this.GuiAsync(() => {Securities.ItemsSource = _trader.Securities;});<br /> <br /> }<br /><br /> try<br /> {<br /> // подключаем квик<br /> _trader.Connect();<br /> }<br /> catch (System.IO.IOException err)<br /> {<br /> MessageBox.Show("Не удается подключиться к квику" + err.Message);<br /> }<br /><br /> //Начинаем Экспорт данных<br /><br /> _trader.StartExport(); //получение он-лайн данных из квика Инструменты,Заявки , Портфели и так далее<br /><br /> _candleManager = new CandleManager(_trader); // создаем менеджер свечек для Трейдера<br /><br /> _candleManager.Processing += DrawCandle; // подписываемся на событие<br /><br /><br /> }<br /><br /><br /> private void DrawCandle(CandleSeries series, Candle candle)<br /> {<br /> this.GuiAsync(() =><br /> {<br /><br /> // _chart.ProcessCandle((ChartCandleElement)_chart.Areas[0].Elements[0], candle);<br /><br /> });<br /> }<br /><br /> // Кнопка "Остановка" - Метод остановки робота<br /> private void StopRobot_Click(object sender, RoutedEventArgs e)<br /> {<br /> if (_trader != null)<br /> {<br /> //отключаем экспорт со стакана и останавливаем стратегию<br /> _trader.UnRegisterMarketDepth(_security);<br /> if (_strategy.ProcessState == ProcessStates.Started) _strategy.Stop();<br /> if (_trader.Orders != null) _trader.CancelOrders();<br /> _trader.StopExport(); <br /> }<br /> }<br /><br /> // Метод на случай закрытия окна робота<br /> private void ProgramWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)<br /> {<br /> if (_trader != null)<br /> {<br /> //отключаем экспорт со стакана и останавливаем стратегию<br /> _trader.UnRegisterMarketDepth(_security);<br /> if (_strategy.ProcessState == ProcessStates.Started) _strategy.Stop();<br /> if (_trader.Orders != null) _trader.CancelOrders();<br /> _trader.StopExport();<br /> }<br /> }<br /><br /> // Кнопка "Запуск робота" - метод запуск робота<br /> private void StartRobo_Click(object sender, RoutedEventArgs e)<br /> {<br /> // проверяем подключен ли квик трейдер, задан ли портфель, инструмент<br /> if (_trader == null)<br /> {<br /> MessageBox.Show("Терминал не задан");<br /> return;<br /> }<br /><br /> if (_trader.Portfolios == null)<br /> {<br /> MessageBox.Show("Портфель не задан");<br /> return;<br /> }<br /><br /> if (_trader.Securities == null)<br /> {<br /> MessageBox.Show("Инструмент не задан");<br /> return;<br /> }<br /><br /> // код запуска стратегии<br /><br /> if (_strategy == null)<br /> {<br /><br /> CandleSeries series;<br /><br /> series = new CandleSeries(typeof(TimeFrameCandle), _security, _timeFrame);<br /><br /> _candleManager.Start(series);<br /><br /><br /> Label3.Content = Convert.ToString(series.GetCandle<TimeFrameCandle>(1).ClosePrice);<br /> <br /> this.GuiAsync(() =><br /> {<br /><br /><br /><br /> _strategy = new DartWeiderStretegy(_candleManager, _timeFrame)<br /> {<br /> Volume = _sharecount,<br /> Security = _security,<br /> Portfolio = _portfolio,<br /> Trader = _trader,<br /> Interval = _timeRefreshStrategy<br /> };<br /><br /> <br /><br /> <br /> });<br /><br /> <br /><br /> }<br /><br /><br /> if (_strategy.ProcessState == ProcessStates.Stopped)<br /> {<br /> // запускаем процесс получения стакана, необходимый для работы алгоритма котирования<br /> //_trader.RegisterQuotes(_strategy.Security);<br /> _trader.RegisterMarketDepth(_security);<br /> _strategy.Start();<br /> }<br /><br /> }<br /><br /><br /> private void Securities_SelectionChanged(object sender, SelectionChangedEventArgs e)<br /> {<br /> string sec = Convert.ToString(Securities.SelectedItem);<br /> sec = sec.Replace("@RTS", string.Empty);<br /> _security = _trader.Securities.First(s => s.Code == sec && s.Type == SecurityTypes.Future);<br /> }<br /><br /> private void Portfolios_SelectionChanged(object sender, SelectionChangedEventArgs e)<br /> {<br /> _portfolio = _trader.Portfolios.FirstOrDefault(p => p.Name == Convert.ToString(Portfolios.SelectedItem));<br /> }<br /><br /> private void PositionSize_TextChanged(object sender, TextChangedEventArgs e)<br /> {<br /> try<br /> {<br /> _sharecount = Convert.ToInt32(PositionSize.Text);<br /> }<br /> catch<br /> {<br /> MessageBox.Show("Неправильный размер позиции");<br /> }<br /> }<br /><br /> private void Button_Click_1(object sender, RoutedEventArgs e)<br /> {<br /> <br /><br /><br /> }<br /> <br /> }<br /><br />}<br /><br /></div><br /><br />Код стратегии<br /><div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_dc3cc6de2ae54c12b24918848ad2a945');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_dc3cc6de2ae54c12b24918848ad2a945' style='display:none'><br />using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;<br /><br />using StockSharp.Algo;<br />using StockSharp.Algo.Strategies;<br />using StockSharp.Algo.Candles;<br />using Ecng.Xaml;<br />using StockSharp.Quik;<br />using StockSharp.BusinessEntities;<br /><br />namespace WpfApplication1<br />{<br /> class DartWeiderStretegy : TimeFrameStrategy<br /> {<br /><br /> <br /> decimal openPrice; // цена открытия свечи<br /> decimal lastPrice; // цена предПРЕДпоследней свечи<br /><br /> private Order _order; // текущая заявка<br /><br /> private TimeSpan _timeFrame; // таймфрейм<br /><br /> private CandleManager _candleManager;<br /><br /> // конструктор для работы стратегии<br /> public DartWeiderStretegy(CandleManager candleManager, TimeSpan timeFrame) : base(timeFrame)<br /> {<br /> _candleManager = candleManager;<br /><br /> _timeFrame = TimeFrame;<br /> }<br /><br /> /// <summary><br /> /// Запуск стратегии<br /> /// </summary><br /> protected void OnStarting()<br /> {<br /> base.OnStarted();<br /> }<br /><br /> // Выполнение стратегии<br /> protected override ProcessResults OnProcess()<br /> {<br /><br /> <br /><br /> /*<br /><br /> //Определяем количество открытых позиций по инструменту<br /> int openPos = Convert.ToInt32(this.MyTrades.GetPosition());<br /> <br /> //Получаем цену открытия этой свечи<br /> openPrice = _lastCandle1.ClosePrice;<br /><br /> //Получаем цену открытия предПРЕДпоследней свечи<br /> lastPrice = _lastCandle2.ClosePrice;<br /><br /> //Если есть 2 свечи и нет открытых позиций<br /> if (_lastCandle1!=null && _lastCandle2!=null && openPos == 0)<br /> {<br /> // Если свеча выше предыдущей открываем лонг<br /> if (openPrice > lastPrice)<br /> {<br /> // создаем заявку на покупку<br /> _order = this.CreateOrder(OrderDirections.Buy, base.Security.GetMarketPrice(OrderDirections.Buy), base.Volume);<br /> <br /> // регистрируем ее<br /> base.RegisterOrder(_order);<br /><br /> if (_order.IsMatched() == true)<br /> {<br /><br /> //Выставляем стоп-лосс и тейкпрофит через метод<br /> _order = this.CreateStopLimitAndTakeProfit(openPrice);<br /><br /> // регистрируем его<br /> base.RegisterOrder(_order);<br /> }<br /> }<br /> }<br /> * <br /> * */<br /><br /><br /> return ProcessResults.Continue;<br /> }<br /><br /><br /> private Order CreateStopLimitAndTakeProfit(decimal openPrice2)<br /> {<br /> decimal stopPrice = Convert.ToDecimal(openPrice2) - 20;<br /> decimal tpPrice = Convert.ToDecimal(openPrice2) + 20;<br /><br /> return new Order<br /> {<br /> Type = OrderTypes.Conditional,<br /> Volume = base.Volume,<br /> Price = Convert.ToDecimal(stopPrice),<br /> Security = base.Security,<br /> Portfolio = base.Portfolio,<br /> Direction = OrderDirections.Sell,<br /> StopCondition = new QuikStopCondition<br /> {<br /> Type = QuikStopConditionTypes.LinkedOrder,<br /> LinkedOrderPrice = tpPrice,<br /> },<br /> };<br /> }<br /><br /><br /> <br /> <br /> }<br />}<br /><br /></div>
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.ru/posts/m/23260/
Что делать? Смотреть stack trace Выдает вот такое когда свечи хочу отрисовать: _chart.ProcessCandle(...
2013-01-08T16:14:18Z
2013-01-08T16:14:18Z
RoboKrolik
https://stocksharp.ru/users/16730/
info@stocksharp.ru
<div class="quote"><span class="quotetitle">VassilSanych <a href="https://stocksharp.ru/posts/m/23258/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">RoboKrolik <a href="https://stocksharp.ru/posts/m/23257/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Что делать?</div></div><br />Смотреть stack trace<br /></div></div><br /><br />Выдает вот такое когда свечи хочу отрисовать:<br />_chart.ProcessCandle((ChartCandleElement)_chart.Areas[0].Elements[0], candle);<br /><br /><b>> WpfApplication1.exe!WpfApplication1.MainWindow.DrawCandle.AnonymousMethod__6() Line 105 + 0x31 bytes C#</b><br /><br /><br />Или вот такое когда хочу цену закрытия получить свечи:<br />Label3.Content = Convert.ToString(series.GetCandle<TimeFrameCandle>(1).ClosePrice);<br /><br /><b>> WpfApplication1.exe!WpfApplication1.MainWindow.StartRobo_Click(object sender, System.Windows.RoutedEventArgs e) Line 169 + 0x28 bytes C#</b>
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.ru/posts/m/23258/
Что делать? Смотреть stack trace
2013-01-08T16:00:58Z
2013-01-08T16:00:58Z
VassilSanych
https://stocksharp.ru/users/6491/
info@stocksharp.ru
<div class="quote"><span class="quotetitle">RoboKrolik <a href="https://stocksharp.ru/posts/m/23257/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Что делать?</div></div><br />Смотреть stack trace<br />
Copyright @ StockSharp Platform LLC 2010 - 2024