Стакан. Вопросы новичка.
Atom Ответить
20.04.2012


Извиняюсь сразу за глупые вопросы, но как и у многих начинающих, они возникают, а спросить не у кого.

в примере Sample , создаю новую форму, далее в ней код:
Код
namespace Sample
{
	using System;
	using System.Collections.ObjectModel;
	using System.Linq;
	using System.Threading;
	using System.Windows;
	using System.Windows.Controls;

	using Ecng.Collections;
	using Ecng.Common;
	using Ecng.Xaml;

	using StockSharp.BusinessEntities;
	using StockSharp.Quik;
	using StockSharp.Algo;
	
	public partial class bot : Window
	{
		
		private static Security _lkoh;
		private static MarketDepth _depth;
		public bot()
		{
			
			
			InitializeComponent();
			_lkoh.Code="LKOH";
			MainWindow.Instance.Trader.RegisterQuotes(_lkoh);
			_depth=MainWindow.Instance.Trader.GetMarketDepth(_lkoh);
			st.Content=_depth.Asks[0].Price.ToString();
		}
		public ObservableCollection<Security> Securities { get; private set; }
	}
}

Соответственно после вызова окна ругается. Почему, понять не могу.

Теги:


Спасибо:




27 Ответов
1 2  >
Кот Матроскин

Фотография
Дата: 20.04.2012
Ответить


Что это есть такое:
Код
_lkoh.Code="LKOH";

Ты бумагу ни получил с биржи, ни создал (как в эмуляции)
Пытаясь просто присвоить ей код Лукойла, ты ничего не добьешься
Спасибо:

nuan

Фотография
Дата: 20.04.2012
Ответить


Подскажите как нужно!
Автор топика
Спасибо:

Alexander

Фотография
Дата: 20.04.2012
Ответить


nuan Перейти
Подскажите как нужно!


Смотрите примеры что идут в архиве
Спасибо:

nuan

Фотография
Дата: 20.04.2012
Ответить


Код



namespace Sample
{
	using System;
	using System.Collections.ObjectModel;
	using System.Linq;
	using System.Threading;
	using System.Windows;
	using System.Windows.Controls;

	using Ecng.Collections;
	using Ecng.Common;
	using Ecng.Xaml;

	using StockSharp.BusinessEntities;
	using StockSharp.Quik;
	using StockSharp.Algo;
	
	public partial class bot : Window
	{
		
		private static Security _lkoh;
		private static MarketDepth _depth;
		public bot()
		{
			
			
			InitializeComponent();
			const string secCode = "LKOH";
			
			MainWindow.Instance.Trader.NewSecurities += securities =>
						{
							if (_lkoh == null)
							{
								// находим Лукойл и присваиваем ее переменной lkoh
								_lkoh = securities.FirstOrDefault(sec => sec.Code == secCode);

								if (_lkoh != null)
								{
									//Console.WriteLine("Инструмент Лукойл появился.");

									// запускаем экспорт стакана
									MainWindow.Instance.Trader.RegisterQuotes(_lkoh);
									/*
									if (_portfolio != null && _depth != null)
										waitHandle.Set();*/
								}
							}
						};
			_depth=MainWindow.Instance.Trader.GetMarketDepth(_lkoh);
			st.Content=_depth.Asks[0].Price.ToString();
		}
		public ObservableCollection<Security> Securities { get; private set; }
	}
}

Делаю как в примере.
Просто не совсем понимаю принцип получения стакана.
Был бы подробный алгоритм.
В документации все описано довольно скудно.
Был бы простой пример.
Автор топика
Спасибо:

OvcharenkoVI

Фотография
Автор статей
Дата: 20.04.2012
Ответить


А почему инструмент получается не в MainWindow?

Напиши скайп, вечерком скину свою программку работающую, напишу комментарии
Спасибо:

Творог

Фотография
Дата: 20.04.2012
Ответить


А как получить цену и объём определённой очереди? Например цену 3-го бида в стакане.
Спасибо:

Творог

Фотография
Дата: 20.04.2012
Ответить


Насколько я понимаю, нужно создать коллекцию и затем по индексу ретривить цену и объём заявок в стакане. В QPILE так, а в ООП также делается?
Спасибо:

Кот Матроскин

Фотография
Дата: 21.04.2012
Ответить


Под шумок и я задам вопросик для маленьких Blushing. Что может означать двойной знак вопроса ?? в строке:
Код
var result = value as IIndicatorValue ?? input.SetValue(value);
Спасибо:

BigBen

Фотография
Дата: 21.04.2012
Ответить


Кот Матроскин Перейти
Под шумок и я задам вопросик для маленьких Blushing. Что может означать двойной знак вопроса ?? в строке:
Код
var result = value as IIndicatorValue ?? input.SetValue(value);


В книгах, например, пишут об этом так:
"Попытка преобразовать обнуляемый объект в его базовый тип путем приведения типов обычно приводит к генерированию исключения System.InvalidOperationException, если обнуляемый объект содержит пустое значение.
Это может произойти, например, в том случае, если значение обнуляемого объекта присваивается переменной его базового типа с помощью приведения типов. Появления данного исключения можно избежать, если воспользоваться оператором ??, называемым нулеобъединяющим оператором. Этот оператор позволяет указать значение, которое будет использоваться по умолчанию, если обнуляемый объект содержит пустое значение. Он также исключает потребность в приведении типов.
Ниже приведена общая форма оператора ??.

обнуляемый_объект ?? значение_по_умолчанию

Если обнуляемый_объект содержит конкретное значение, то результатом операции ?? будет именно это значение. В противном случае результатом операции ?? окажется значение_по_умолчанию."

Читайте литературу!
Спасибо: Кот Матроскин

Кот Матроскин

Фотография
Дата: 21.04.2012
Ответить


Да я прежде чем написать вопрос вчера две книги просмотрел + MDSN + Yandex - кругом ни слова про "??" ((((
Не подскажешь первоисточник))?
За ответ большое спасибо
Спасибо:

Alexander

Фотография
Дата: 21.04.2012
Ответить


Кот Матроскин Перейти
Да я прежде чем написать вопрос вчера две книги просмотрел + MDSN + Yandex - кругом ни слова про "??" ((((
Не подскажешь первоисточник))?
За ответ большое спасибо



MSDN
Спасибо: Кот Матроскин

BigBen

Фотография
Дата: 21.04.2012
Ответить


Кот Матроскин Перейти
Да я прежде чем написать вопрос вчера две книги просмотрел + MDSN + Yandex - кругом ни слова про "??" ((((
Не подскажешь первоисточник))?
За ответ большое спасибо



Герберт Шилдт - C# 4.0. Полное руководство
Спасибо:

Творог

Фотография
Дата: 21.04.2012
Ответить


Сорри, как говорится, за серию риторических вопросов, на которые я так и не получу ответа. Похоже, что если нет ответа, как можно получить инфу по индексу очереди, значит такой возможности, получается, вообще нет, только лучший bid & ask. Какой тогда смысл переходить с QPILE... Либо ответ слишком очевиден, чтобы тратить время на его ответ, но в документации ничего похожего я не увидел.
Спасибо:

Alexander

Фотография
Дата: 21.04.2012
Ответить


Творог Перейти
Сорри, как говорится, за серию риторических вопросов, на которые я так и не получу ответа. Похоже, что если нет ответа, как можно получить инфу по индексу очереди, значит такой возможности, получается, вообще нет, только лучший bid & ask. Какой тогда смысл переходить с QPILE... Либо ответ слишком очевиден, чтобы тратить время на его ответ, но в документации ничего похожего я не увидел.


Для начала вы посмотрите что из себя представляет MarketDepth (стакан). Думаю при внимательном рассмотрении класса вопрос сам отпадёт.

Правильный ответ - второй, он настолько очевиден, что мы его даём лишь в поддержке, если по документации вы этого не видите.
Спасибо:

Кот Матроскин

Фотография
Дата: 21.04.2012
Ответить


Alexander Mukhanchikov Перейти
Кот Матроскин Перейти
Да я прежде чем написать вопрос вчера две книги просмотрел + MDSN + Yandex - кругом ни слова про "??" ((((
Не подскажешь первоисточник))?
За ответ большое спасибо

MSDN

BigBen Перейти
Кот Матроскин Перейти
Да я прежде чем написать вопрос вчера две книги просмотрел + MDSN + Yandex - кругом ни слова про "??" ((((
Не подскажешь первоисточник))?
За ответ большое спасибо

Герберт Шилдт - C# 4.0. Полное руководство

Всем большое спасибо!
Спасибо:

Кот Матроскин

Фотография
Дата: 21.04.2012
Ответить


Alexander Mukhanchikov Перейти
Творог Перейти
Сорри, как говорится, за серию риторических вопросов, на которые я так и не получу ответа. Похоже, что если нет ответа, как можно получить инфу по индексу очереди, значит такой возможности, получается, вообще нет, только лучший bid & ask. Какой тогда смысл переходить с QPILE... Либо ответ слишком очевиден, чтобы тратить время на его ответ, но в документации ничего похожего я не увидел.


Для начала вы посмотрите что из себя представляет MarketDepth (стакан). Думаю при внимательном рассмотрении класса вопрос сам отпадёт.

Правильный ответ - второй, он настолько очевиден, что мы его даём лишь в поддержке, если по документации вы этого не видите.


Действительно, ответ то очевиден. Читал:
https://stocksharp.ru/do...Entities_MarketDepth.htm
Спасибо:

Творог

Фотография
Дата: 21.04.2012
Ответить


Alexander Mukhanchikov Перейти

Для начала вы посмотрите что из себя представляет MarketDepth (стакан). Думаю при внимательном рассмотрении класса вопрос сам отпадёт.


Спсб, сразу новичку в документации непросто сориентироваться, разобраться где что лежит. А в чём отличие Цены от Котировки?
Спасибо:

nuan

Фотография
Дата: 21.04.2012
Ответить


Ребят , кому не лень, дайте пример, по моему вопросу.
Буду крайне благодарен.
Автор топика
Спасибо:

Moadip

Фотография
Автор статей Программист
Дата: 21.04.2012
Ответить


Цитата:
А в чём отличие Цены от Котировки?

Цена это цена, а quote это класс.
По котировке можно узнать, цену, объем, по какому инструменту эта котировка и т.д.

Quote

Смотрите раздел свойства.
Спасибо:

Творог

Фотография
Дата: 23.04.2012
Ответить


Moadip Перейти
Цитата:
А в чём отличие Цены от Котировки?

Цена это цена, а quote это класс.
По котировке можно узнать, цену, объем, по какому инструменту эта котировка и т.д.


А, ну по сути котировка - это ключ, по которому берётся значение из коллекции.
Спасибо:

nuan

Фотография
Дата: 24.04.2012
Ответить


Спасибо за ответ, а как мне например получить цену третьего бида ?)
Автор топика
Спасибо:

vader

Фотография
Дата: 24.04.2012
Ответить


Допустим так
decimal aa = _marketDepth.Bids[2].Price;

_marketDepth - это объект MarketDepth,
получить его можно таким образом - _marketDepth = _security.Trader.GetMarketDepth(_security);
ПОлучать каждый раз его не надо, он будет обновлятся автоматически.
Только запустите предварительно получение стакана.
Спасибо:

nuan

Фотография
Дата: 24.04.2012
Ответить


vader можете сделать пример?
Автор топика
Спасибо:

OvcharenkoVI

Фотография
Автор статей
Дата: 24.04.2012
Ответить


Вроде все вполне очевидно )

В методе OnStarting стратегии делаете

md = Trader.GetMarketDepth(Security);

а потом уже в теле стратегии запрашивайте все что угодно )

Дока для кого?
Спасибо:

nuan

Фотография
Дата: 24.04.2012
Ответить


фуф разобрался... ) все оказалось проще. Спасибо огромное :) просто с Си быстро перейти на C# , да еще и с незнакомым API трудно )
Автор топика
Спасибо:
1 2  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy