oec. StockSharp
https://stocksharp.ru/handlers/atom.ashx?category=tag&id=oec&type=community
Copyright @ StockSharp Platform LLC 2010 - 2024
2024-03-29T11:22:47Z
https://stocksharp.ru/images/logo.png
https://stocksharp.ru/topic/9127/
Тиковые данные в OpenECry
2018-02-13T10:42:27Z
2018-02-14T11:17:25Z
RashinSergey
https://stocksharp.ru/users/99102/
info@stocksharp.ru
Здравствуйте, вот уже неделю мучаюсь с проблемой, никаким образом не удается получить тиковые данные в openecry.<br /><br />Скажите пожалуйста тики в openECry вообще работают ?<br /><br /><br />Подскажите пожалуйста кто-нибудь в чем дело может быть.... очень прошу =(<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><br />using ConsoleDump;<br />using Ecng.Common;<br />using Ecng.Xaml;<br />using StockSharp.Algo;<br />using StockSharp.Algo.Candles;<br />using StockSharp.BusinessEntities;<br />using StockSharp.Localization;<br />using StockSharp.Messages;<br />using StockSharp.OpenECry;<br />using StockSharp.Xaml;<br />using StockSharp.Xaml.Charting;<br />using System;<br />using System.Linq;<br />using System.Net;<br />using System.Windows;<br />using System.Windows.Controls;<br />using WpfApp1.Service;<br /><br />namespace WpfApp1<br />{<br /> /// <summary><br /> /// Логика взаимодействия для MainWindow.xaml<br /> /// </summary><br /> public partial class MainWindow<br /> {<br /> /// <summary><br /> /// Название коннетора<br /> /// </summary><br /> private string selectedConnector;<br /><br /> /// <summary><br /> /// Выбранный инструмент<br /> /// </summary><br /> private Security selectedSecurity;<br /><br /> /// <summary><br /> /// Сервис коннеторов<br /> /// </summary><br /> private ConnectorServiceInterface ConnectorService;<br /><br /> /// <summary><br /> /// <br /> /// </summary><br /> private readonly ChartCandleElement candlesElem;<br /><br /> private CandleManager candleManager;<br /><br /> private CandleSeries candleSeries;<br /> private ChartTradeElement tradesElem;<br /> private ScalperStrategy strategy;<br /><br /> private Connector Trader;<br /> private Portfolio portfolio;<br /><br /> public MainWindow()<br /> {<br /> InitializeComponent();<br /><br /> CandleSettingsEditor.Settings = new CandleSeries<br /> {<br /> CandleType = typeof(TimeFrameCandle),<br /> Arg = TimeSpan.FromMinutes(5),<br /> };<br /> CandleSettingsEditor.SettingsChanged += CandleSettingsChanged;<br /><br /> ConnectorService = new ConnectorService();<br /><br /> var area = new ChartArea();<br /> Chart.Areas.Add(area);<br /><br /> candlesElem = new ChartCandleElement();<br /> area.Elements.Add(candlesElem);<br /><br /> tradesElem = new ChartTradeElement { FullTitle = LocalizedStrings.Str985 };<br /> area.Elements.Add(tradesElem);<br /> }<br /><br /> <br /><br /> private void SecurityPicker_OnSecuritySelected(Security security)<br /> {<br /> if (security == null)<br /> return;<br /><br /> if (candleSeries != null)<br /> {<br /> candleManager.Stop(candleSeries); // give back series memory<br /> strategy.Start();<br /> }<br /> <br /><br /> Chart.Reset(new[] { candlesElem });<br /><br /> selectedSecurity = security;<br /> StartBotButton.IsEnabled = true;<br /><br /> <br /> Trader.RegisterSecurity(security);<br /> Trader.RegisterTrades(security);<br /> Trader.RegisterMarketDepth(security);<br /><br /><br /> candleSeries = new CandleSeries(CandleSettingsEditor.Settings.CandleType, security, CandleSettingsEditor.Settings.Arg);<br /><br /> // create strategy based on 80 5-min и 10 5-min<br /> strategy = new ScalperStrategy(<br /> Chart, candlesElem, tradesElem,<br /> candleManager, candleSeries)<br /> {<br /> Volume = 1,<br /> Portfolio = portfolio,<br /> Security = security,<br /> Connector = Trader,<br /> };<br /><br /> strategy.Start();<br /> candleManager.Start(candleSeries);<br /> }<br /><br /> private void CandleSettingsChanged()<br /> {<br /> SecurityPicker_OnSecuritySelected(SecurityPicker.SelectedSecurity);<br /> }<br /><br /> private void FindClick(object sender, RoutedEventArgs e)<br /> {<br /> var wnd = new SecurityLookupWindow { Criteria = new Security { Code = "ES" } };<br /><br /> if (!wnd.ShowModal())<br /> {<br /> return;<br /> }<br /><br /> Trader.Lookup(wnd.Criteria);<br /> Trader.LookupSecurities(wnd.Criteria);<br /> this.GuiAsync(() => {<br /> <br /> });<br /> }<br /><br /> private void StartBot(object sender, RoutedEventArgs e)<br /> {<br /> <br /> }<br /><br /> private void OnSelectConnector(object sender, System.Windows.Controls.SelectionChangedEventArgs e)<br /> {<br /> ComboBoxItem item = (ComboBoxItem)ConnectorName.SelectedItem;<br /><br /> selectedConnector = item.Name.ToString();<br /><br /> Login.IsEnabled = true;<br /> Password.IsEnabled = true;<br /> ConnectButton.IsEnabled = true;<br /> }<br /><br /> /// <summary><br /> /// Информация о стакане<br /> /// </summary><br /> /// <param name="depth"></param><br /> private void OnDepth(MarketDepth depth)<br /> {<br /> if (depth.Security != selectedSecurity)<br /> {<br /> return;<br /> }<br /><br /> DepthControl.UpdateDepth(depth);<br /> }<br /><br /> private void ConnectButton_Click(object sender, System.Windows.RoutedEventArgs e)<br /> {<br /> Console.WriteLine("send connect");<br /> Trader = ConnectorService.Connect(Login.Text, Password.Password, selectedConnector);<br /><br /> // подписываемся на событие успешного соединения<br /> Trader.Connected += () =><br /> {<br /> Console.WriteLine("Bot connected...");<br /><br /> candleManager = new CandleManager(Trader);<br /> //Security Criteria = new Security { Code = "ES" };<br /> //Trader.LookupSecurities(Criteria);<br /><br /> // update gui labels<br /> this.GuiAsync(() => {<br /> FindButton.IsEnabled = true;<br /> });<br /><br /> // subscribe on news<br /> Trader.RegisterNews();<br /> };<br /> <br /> // событие успешного отключения<br /> Trader.Disconnected += () =><br /> {<br /> Console.WriteLine("Bot disconnected...");<br /> this.GuiAsync(() => {<br /> FindButton.IsEnabled = false;<br /> });<br /> };<br /><br /> // подписываемся на событие разрыва соединения<br /> Trader.ConnectionError += error => this.GuiAsync(() =><br /> {<br /> MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2959);<br /> });<br /><br /> // событие ошибки обработки данных<br /> Trader.Error += error => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2955));<br /><br /> Trader.NewSecurity += security =><br /> {<br /> SecurityPicker.Securities.Add(security);<br /> };<br /><br /><br /> Trader.NewMyTrade += trades =><br /> {<br /> trades.Dump();<br /> };<br /><br /> Trader.NewTrade += trade =><br /> {<br /> trade.Dump();<br /> };<br /> Trader.NewTrades += trade =><br /> {<br /> trade.Dump();<br /> };<br /><br /> Trader.NewOrder += order =><br /> {<br /> // order.Dump();<br /> };<br /><br /> Trader.NewPosition += position =><br /> {<br /> position.Dump();<br /> };<br /><br /> Trader.NewSecurities += securities =><br /> {<br /> // Console.WriteLine("Получены инструменты...");<br /> //securities.Dump();<br /><br /> //Connector.Securities.Dump();<br /> };<br /> Trader.NewPortfolio += _portfolio =><br /> {<br /> portfolio = _portfolio;<br /> // подписываемся на обновление портфеля<br /> Trader.RegisterPortfolio(_portfolio);<br /> };<br /><br /> Trader.SecurityChanged += sec =><br /> {<br /> sec.Dump();<br /> };<br /><br /><br /> Trader.NewMarketDepth += OnDepth;<br /> Trader.MarketDepthChanged += OnDepth;<br /><br /><br /> SecurityPicker.MarketDataProvider = Trader;<br /><br /> Trader.Connect();<br /> }<br /> }<br />}<br /><br /></div></div>