Как получить стакан в числах или строках ???
Atom Ответить
25.02.2016


Добрый день,

Решал попробовать Ваш продукт АПИ
подскажите плиз как мне получить стакан в виде строк?

Я так понял что код ниже это получает стакан

TraderOnMarketDepthsChanged(new[] { trader.GetMarketDepth(SecurityPicker.SelectedSecurity) });
trader.MarketDepthsChanged += TraderOnMarketDepthsChanged;

private void TraderOnMarketDepthsChanged(IEnumerable<MarketDepth> depths)
{
foreach (var depth in depths)
{
var wnd = _quotesWindows.TryGetValue(depth.Security);

if (wnd != null)
wnd.DepthCtrl.UpdateDepth(depth);
}
}

но как мне, например, записать его в файл ???

Теги:


Спасибо:




12 Ответов
Сергей Гаврилов

Фотография
Курсы
Дата: 26.02.2016
Ответить


Спасибо: Mikhail Sukhov cheh

cheh

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


спасибо за ссылочку, но как записывать я конечно понимаю....

вот то что я не могу понять это как из

trader.MarketDepthsChanged достать значения price и volume в виде строк или чисел, чтобы после записать их в файл ...

или я где то туплю :) ....



я достал эти данные с помощью следующего кода

var x = trader.GetMarketDepth(sec);

IEnumerable<Quote> bids = x.Bids.ToArray();

IEnumerator<Quote> ee = bids.GetEnumerator();

decimal price;
decimal volume;

if (ee.MoveNext())
{
price = ee.Current.Price;
volume = ee.Current.Volume;
string price_string = price.ToString();
string volume_string = volume.ToString();

System.IO.File.AppendAllText(@"C:\BCS_Work\QUIK\lua\data_usd_fut_br\WriteLines.txt", "start \r\n "+price_string + " " + volume_string + "\r\n");

while (ee.MoveNext())
{
price = ee.Current.Price;
volume = ee.Current.Volume;
price_string = price.ToString();
volume_string = volume.ToString();

System.IO.File.AppendAllText(@"C:\BCS_Work\QUIK\lua\data_usd_fut_br\WriteLines.txt", price_string + " " + volume_string + "\r\n");

}
System.IO.File.AppendAllText(@"C:\BCS_Work\QUIK\lua\data_usd_fut_br\WriteLines.txt", "end\r\n");
}

НО к сожалению, тут я получаю только первый стакан ... а как я понимаю остальные обновления пишутся уже в trader.MarketDepthsChanged

Если я ошибаюсь поправьте меня ..
Автор топика
Спасибо:

RomSunZ

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


Через цикл freach пробегаете каждый квот и считываете цену и ко-во
Спасибо: cheh

cheh

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


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

cheh

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


и все равно, написал вот так и он не обновляется (((
MarketDepth x = trader.GetMarketDepth(sec);
foreach (Quote depth in x)
{

price = depth.Price;
volume = depth.Volume;
slides = depth.OrderDirection;
price_string = price.ToString();
volume_string = volume.ToString();

System.IO.File.AppendAllText(@"C:\BCS_Work\QUIK\lua\data_usd_fut_br\WriteLines.txt", price_string + " " + volume_string + slides + "\r\n");



}
Автор топика
Спасибо:

Mikhail Sukhov

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


cheh Перейти
и все равно, написал вот так и он не обновляется (((


А вам с какой целью (если, цель, не заставить себя вспотеть кодомBigGrin)? Если просто нужны стаканы к текстовом виде, то Гидра умеет их выгружать в csv.
Спасибо:

cheh

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


я хотел в онлайн режиме анализировать стакан и от этого ордера ставить .... т.е. мне в double или decilmal сойдет, пишу в файл просто для того чтобы посмотреть что результаты .... ))) а что это так сложно сделать ?
Автор топика
Спасибо:

Mikhail Sukhov

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


cheh Перейти
я хотел в онлайн режиме анализировать стакан и от этого ордера ставить .... т.е. мне в double или decilmal сойдет, пишу в файл просто для того чтобы посмотреть что результаты .... ))) а что это так сложно сделать ?


Без знания C# - нереально. А у вас как раз это.

Вы, конечно, через неделю-другую научитесь писать в файл (без понимания самого процесса, просто как калька). Но дальше то все равно упретесь в потолок.

Дело, конечно, ваше. Но, имхо, усилия направлены в утиль.
Спасибо:

cheh

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


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

Иван З.

Фотография
Курсы Автор статей Благотворитель
Дата: 29.02.2016
Ответить


все есть тут.
https://github.com/Stock...SecuritiesWindow.xaml.cs
тут смотрим стаканы
Код

		private void TraderOnMarketDepthsChanged(IEnumerable<MarketDepth> depths)
		{
			foreach (var depth in depths)
			{
				var wnd = _quotesWindows.TryGetValue(depth.Security);

				if (wnd != null)
					wnd.DepthCtrl.UpdateDepth(depth);
			}
		}
Спасибо:

cheh

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


2 Иван )) да, я этот пример и пытаюсь модифицировать )))
Автор топика
Спасибо:

cheh

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


в общем-то победа ))) спасибо за подсказку ... я нашел как это делать, хотя не понял почему у меня до этого не работало )) если интересно то код ниже

TraderOnMarketDepthsChanged(new[] { x });
trader.MarketDepthsChanged += TraderOnMarketDepthsChanged;

----------- а это TraderOnMarketDepthsChanged ----------------


private void TraderOnMarketDepthsChanged(IEnumerable<MarketDepth> depths)
{
IEnumerable<Quote> bids;
decimal price;
decimal volume;

foreach (var depth in depths)
{
var wnd = _quotesWindows.TryGetValue(depth.Security);

if (wnd != null)
wnd.DepthCtrl.UpdateDepth(depth);

bids = depth.Bids.ToArray();

IEnumerator<Quote> ee = bids.GetEnumerator();

if (ee.MoveNext())
{
price = ee.Current.Price;
volume = ee.Current.Volume;
string price_string = price.ToString();
string volume_string = volume.ToString();

System.IO.File.AppendAllText(@"C:\BCS_Work\QUIK\lua\data_usd_fut_br\WriteLines.txt", "start \r\n " + price_string + " " + volume_string + "\r\n");

while (ee.MoveNext())
{
price = ee.Current.Price;
volume = ee.Current.Volume;
price_string = price.ToString();
volume_string = volume.ToString();

System.IO.File.AppendAllText(@"C:\BCS_Work\QUIK\lua\data_usd_fut_br\WriteLines.txt", price_string + " " + volume_string + "\r\n");

}
System.IO.File.AppendAllText(@"C:\BCS_Work\QUIK\lua\data_usd_fut_br\WriteLines.txt", "end\r\n");
}

}


}
Автор топика
Спасибо:


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

loading
clippy