← Atrás

Текущие задачи по PlazaTrader

  1. Избавиться от накопления очереди сообщений в первые секунды работы (необходимо разбить получение реплики на несколько соединений, работающих в отдельных thread'ах, каждое со своим циклом выборки).
  2. Добавить профилировщик получения данных и отправки заявок - необходимо понять насколько быстрый PlazaTrader у нас (особенно в связи с грядущими изменениями в плазе после нового года).
  3. Отфильтровывать данные от уже прошедшей сессии (вечером приходят данные как от дневной, так и от вечерней сессии).
  4. Если заявка GTC, то в вечерний клиринг приходит сообщение Inserted, с id_ord = новому номеру заявки и с id_ord1 = старому номеру заявки. Необходимо заменить одно на другое.

Ничего не упустил?

3ий таск я уже начал делать в фоновом режиме. Кто готов взяться за другие задачи?

Сделано: 2) Обрабатывать снятие заявки в клиринг (сейчас заявка остаётся активной и снять её невозможно). (Alexander) 3) Поддержка Plaza 64x. (frontman) 4) Возможность задания даты истечения заявки (сейчас делается через PlazaStopCondition.ExpiryDate, что не прозрачно, т.к. на Plaza вообще нет стоп заявок). (Alexander) 7) Добавить поддержку FutMoveOrder - одновременное перемещение 2х заявок. (frontman)

¿Le resultó útil este tema?

Compartir tema

Comentarios (192)

Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario

frontman
frontman

По первому пункту хотел бы вопрос задать: я правильно понял что изменять надо вот эту часть:

Streams.SyncDo(c =>
				{
					foreach (var stream in Streams)
					{
						try
						{
							stream.CheckConnection(_connection);
                            anySuccess = true;
						}
						catch (COMException e)
						{
                            System.Diagnostics.Trace.WriteLine("Ошибка проверки потока репликации - stream.CheckConnection(_connection) - COMException " + e.ErrorCode.ToString());
						}
					}
				});

Просто пытаюсь разобраться в механизмах стокшарпа. Вот на всякий случай переспрашиваю)

FiNick
FiNick

frontman: По первому пункту хотел бы вопрос задать: я правильно понял что изменять надо вот эту часть

Скорее всего именно эту часть менять не придется. Надо завести пару PlazaStreamManager, в методе StartExport написать что-то вроде


StartStream(1,
            StreamRegistry.CommonFutureStream,
            StreamRegistry.SessionContentsFutureStream,
	    StreamRegistry.CommonOptionStream,		 	 
	    StreamRegistry.SessionContentsOptionStream,
	    StreamRegistry.PortfoliosStream,
	    StreamRegistry.PositionsStream
	    );

StartStream(2,
            StreamRegistry.DealFutureStream,
            StreamRegistry.DealOptionStream,
            StreamRegistry.OrdersLogFutureStream,
            StreamRegistry.OrdersLogOptionStream,
            DefaultFutureDepthStream,
            DefaultOptionDepthStream,
            StreamRegistry.SessionFutureStream);

Где 1 и 2 номер стрим менеджера, в который соответствующие потоки надо добавить. И так далее...

Я смогу заняться 1 пунктом в конце недели, как освобожусь...

frontman
frontman

Спасибо. Понял. Я просто думал чт для каждого потока надо создать отдельный thread, а тут как я понимаю разделение только фьючерсов и опционов идет...

Alexander
Alexander Autor

frontman: Спасибо. Понял. Я просто думал чт для каждого потока надо создать отдельный thread, а тут как я понимаю разделение только фьючерсов и опционов идет...

Для каждого потока отдельный thread точно не нужен. Надо часть потоков - в один thread, часть - в другой.

Alexander
Alexander Autor

Занялся пунктом 2), добавил пункт 6) - его тоже надо сделать, сейчас некорректно работает после клиринга из-за него.

Кто возьмётся?

frontman
frontman

Кстати сегодня разговаривал с одним из специалистов РТС. Он сказал что есть метод перерегистрации пары заявок. Что нибудь слышали об этом? По моему в плазе это не реализовано еще...

Alexander
Alexander Autor

frontman: Кстати сегодня разговаривал с одним из специалистов РТС. Он сказал что есть метод перерегистрации пары заявок. Что нибудь слышали об этом? По моему в плазе это не реализовано еще...

Что за "перерегистрация пары заявок"?

frontman
frontman

ReRegisterOrder(Order, Order) - Перерегистрировать заявку на бирже. Это прям из мануала строчка. Я в рамках терминологии этой написал... Так вот есть метод позволяющий передвигать пару заявок. Ну так меня заверил человек с РТС))

frontman
frontman

FutMoveOrder - это для передвижения одной заявки А есть что то такое же для двух... Я вот и спрашиваю знаете ли вы об этом что то?

Alexander
Alexander Autor

frontman: FutMoveOrder - это для передвижения одной заявки А есть что то такое же для двух... Я вот и спрашиваю знаете ли вы об этом что то?

Знаем. FutMoveOrder - для перемещения 2х заявок как раз, а не 1ой.

frontman
frontman

Т.е ReRegisterOrder(Order, Order) перемещает вот эти две заявки? А куда тогда? Если бы он выглядил вот так : ReRegisterOrder(Order, Order, Order, Order) я б еще понял ... А так что то не пойму(( Извините...

Alexander
Alexander Autor

frontman: Т.е ReRegisterOrder(Order, Order) перемещает вот эти две заявки? А куда тогда? Если бы он выглядил вот так : ReRegisterOrder(Order, Order, Order, Order) я б еще понял ... А так что то не пойму(( Извините...

У вас исходный код есть - смотрите сами. Там всё очевидно, я только что по коду сам посмотрел. Почему другие могут пользоваться поиском, а вы не умеете? Надо учиться. И лучше поздно, чем никогда.

frontman
frontman

Этот метод для отмены одной заявки и регистрации другой в рамках одной транзакции. А я говорю о методе отменяющем 2 заявки и выставляющим 2 заявки в рамках одной транзакции. То что есть явно это не делает.

Alexander
Alexander Autor

frontman: Этот метод для отмены одной заявки и регистрации другой в рамках одной транзакции. А я говорю о методе отменяющем 2 заявки и выставляющим 2 заявки в рамках одной транзакции. То что есть явно это не делает.

Я ведь говорю что по коду несложно понять. :) Добавил пункт 7. Опять никто не готов взяться, будем ждать пока у нас руки дойдут?

FiNick
FiNick

Alexander Mukhanchikov: 7) Добавить поддержку FutMoveOrder - одновременное перемещение 2х заявок.

Не пойму, чем ReRegisterOrder(Order, Order, Order, Order) лучше двух последовательных ReRegisterOrder(Order, Order) в плане быстродействия или удобства?? Одной транзакцией это сделать нельзя вродебы.

Mikhail Sukhov
Mikhail Sukhov

FiNick:

Alexander Mukhanchikov: 7) Добавить поддержку FutMoveOrder - одновременное перемещение 2х заявок.

Не пойму, чем ReRegisterOrder(Order, Order, Order, Order) лучше двух последовательных ReRegisterOrder(Order, Order) в плане быстродействия или удобства?? Одной транзакцией это сделать нельзя вродебы.

Тоже не понимаю, зачем такой костыль. Для такого метода нужно и код написать в стратегии. Что мне кажется совсем уж не удобно. Подозреваю, что это сделано для атомарного изменения multi leg заявки. Но могу ошибаться.

esper
esper

FiNick: Не пойму, чем ReRegisterOrder(Order, Order, Order, Order) лучше двух последовательных ReRegisterOrder(Order, Order) в плане быстродействия или удобства?? Одной транзакцией это сделать нельзя вродебы.

Это вроде не костыль, FutMoveOrder (OptMoveOrder) позволяет переставить две заявки за одну транзакцию

Alexander
Alexander Autor

FiNick:

Alexander Mukhanchikov: 7) Добавить поддержку FutMoveOrder - одновременное перемещение 2х заявок.

Не пойму, чем ReRegisterOrder(Order, Order, Order, Order) лучше двух последовательных ReRegisterOrder(Order, Order) в плане быстродействия или удобства?? Одной транзакцией это сделать нельзя вродебы.

  1. На бирже это учитывается как 1 транзакция. Когда у тебя ограничение в 30\60\150 транзакций в секунду - такая экономия крайне важна.
  2. Результат приходит в одном ответе
  3. Крайне удобно для выполнения обязательств маркет мейкинга
frontman
frontman

Да если меня с работы раньше не выгонят то скоро займусь)

Alexander
Alexander Autor
  1. пункт сделал
frontman
frontman

Для меня это экономия в деньгах прежде всего. http://www.rts.ru/s186#trans - денег неплохо так берут.

Alexander
Alexander Autor

frontman: Для меня это экономия в деньгах прежде всего. http://www.rts.ru/s186#trans - денег неплохо так берут.

Я правильно понял, что вы взялись делать пункт с MoveOrder?

frontman
frontman

Ну... Да)) Как сделаю вам написать надо, что бы вы мне логин и пароль дали для?

Alexander
Alexander Autor

frontman: Ну... Да)) Как сделаю вам написать надо, что бы вы мне логин и пароль дали для?

Да. Или сюда к сообщению фикс приложите, мы сами закоммитим.

frontman
frontman

ок.

Alexander
Alexander Autor

Добавил 8-9 пункты.

Alexander
Alexander Autor

Сделал 2)

FiNick
FiNick

1 задача с очередями пока не получается, ошибки сыпятся

frontman
frontman

7 - сделал. Как залить то?)

Alexander
Alexander Autor

frontman: 7 - сделал. Как залить то?)

Сюда, в зип архиве.

frontman
frontman

Вот. Там ток часть плазы

Alexander
Alexander Autor

frontman: Вот. Там ток часть плазы

TransactionManager.cs битый в архиве. В нём изменения есть? Или у меня только проблемы - у кого-нибудь получилось полностью скачать?

FiNick
FiNick

Частично сделал задачу один. Разделил реплики на три потока, вроде как работает. Но работет как-то криво, даже медленнее данные стали подгружаться (раньше 10 секунд, теперь 25). При подключении большая очередь сохраняется (раньше до 40, теперь до 80-90), что оч странно. Также некоторые моменты не сделал, например:

/// <summary>
/// Потоки, которые будут запущены при вызове метода <see cref="StartExport"/>.
/// </summary>
public PlazaStreamList Streams
{
	get { return _streamManager1.Streams; } //??? Надо как-то обьеденить потоки от всех _streamManager
}
Mikhail Sukhov
Mikhail Sukhov

Давайте лучше сразу на КодеПлекс. У Александра сейчас пока нет времени, так что коммитьте сразу в код. Можно через Shelves.

FiNick
FiNick

Mikhail Sukhov: Давайте лучше сразу на КодеПлекс. У Александра сейчас пока нет времени, так что коммитьте сразу в код. Можно через Shelves.

Залил на кодеплекс.

З.Ы. Забыл комент написать, блин) а можно как-нибудь комент потом вписывать в ченжсет?

Mikhail Sukhov
Mikhail Sukhov

FiNick: З.Ы. Забыл комент написать, блин) а можно как-нибудь комент потом вписывать в ченжсет?

Да, через Show History, changeset details и комментарий вписать.

Alexander
Alexander Autor

FiNick: Частично сделал задачу один. Разделил реплики на три потока, вроде как работает. Но работет как-то криво, даже медленнее данные стали подгружаться (раньше 10 секунд, теперь 25). При подключении большая очередь сохраняется (раньше до 40, теперь до 80-90), что оч странно. Также некоторые моменты не сделал, например:

/// <summary> /// Потоки, которые будут запущены при вызове метода <see cref="StartExport"/>. /// </summary> public PlazaStreamList Streams { get { return _streamManager1.Streams; } //??? Надо как-то обьеденить потоки от всех _streamManager }



Посмотрел - совсем не то что хотелось бы.
Нет возможности самому регулировать создание потоков и выделение им реплик.
+ подтверждаю что быстрее как минимум не стало.

Наверное в ближайшее время займусь.


P.S. Предлагаю все изменения класть в shelve, а не на main trunk. Отписываясь об этом здесь, чтоб знать где что смотреть.
frontman
frontman

Александр а что с 7м пунктом то? Вроде как все сделал я ... И давно... Или что то не так?

Alexander
Alexander Autor

frontman: Александр а что с 7м пунктом то? Вроде как все сделал я ... И давно... Или что то не так?

У вас работает? Если да - пользуйтесь, нас не ждите.

Я начал смотреть, мне там кое-что не понравилось. Я не забыл, помню. :) Как конференцию проведём - досмотрю, отпишусь.

frontman
frontman

Ок.

esper
esper

TransactionManager.cs битый в архиве. В нём изменения есть? Или у меня только проблемы - у кого-нибудь получилось полностью скачать? Сейчас попробовал, у меня нормально открылся.

Alexander
Alexander Autor

TransactionManager.cs битый в архиве. В нём изменения есть? Или у меня только проблемы - у кого-нибудь получилось полностью скачать? Сейчас попробовал, у меня нормально открылся.

Приложи к сообщению, пожалуйста. Глюк какой-то видимо у меня. Из разных браузеров пробовал - одно и тоже.

esper
esper

сабж

Alexander
Alexander Autor

7 пункт допилил и залил. Спасибо frontman

FiNick
FiNick

Alexander Mukhanchikov: 7 пункт допилил и залил. Спасибо frontman

Отлично! Посмотри первый пункт, плиз=) давно уже с ним бьюсь, не получается, такое ощущение, что несколько потоков пытаются использовать какие-то общие ресурсы, мешают друг-другу и поэтому данные наоборот медленнее подгружаются

Alexander
Alexander Autor

FiNick:

Alexander Mukhanchikov: 7 пункт допилил и залил. Спасибо frontman

Отлично! Посмотри первый пункт, плиз=) давно уже с ним бьюсь, не получается, такое ощущение, что несколько потоков пытаются использовать какие-то общие ресурсы, мешают друг-другу и поэтому данные наоборот медленнее подгружаются

Сегодня смотрел. Там полный рефакторинг необходим работы с потоками репликации. В общем - в ближайших планах.

FiNick
FiNick

Можно пояснить что было сделано в "Change Set 11295. Plaza. Рефакторинг работы с подключениями."? У меня после него перестали заявки ставиться, пишет "Specified cast is not valid." at P2ClientGateMTA32.CP2BLMessageClass.SendAsync2(CP2Connection conn, UInt32 Timeout, Object event, Int64 eventParam)

Alexander
Alexander Autor

FiNick: Можно пояснить что было сделано в "Change Set 11295. Plaza. Рефакторинг работы с подключениями."? У меня после него перестали заявки ставиться, пишет "Specified cast is not valid." at P2ClientGateMTA32.CP2BLMessageClass.SendAsync2(CP2Connection conn, UInt32 Timeout, Object event, Int64 eventParam)

Известно, решаем. Была сделана корректная работа с потоками и стримами.

Mikhail Sukhov
Mikhail Sukhov

Alexander Mukhanchikov: Известно, решаем. Была сделана корректная работа с потоками и стримами.

Убрал атрибут public у TransactionManager. В итоге public потерял и MessageDispatcher, который быть не пабликом не может. Вот думаю, надо наверное не просто вернуть public у TransactionManager, а еще и дать доступ внешнему коду к этому объекту.

FiNick
FiNick

Я так понял теперь можно создавать несколько потоков отправки команд? Интересно, это дало что-нибудь в плане быстродействия?

Mikhail Sukhov
Mikhail Sukhov

FiNick: Я так понял теперь можно создавать несколько потоков отправки команд? Интересно, это дало что-нибудь в плане быстродействия?

Фронтмэн жмется с написанием тестера.😂 Без тестера только гадание на кофейной гуще.

frontman
frontman

FiNick: Я так понял <mark>теперь можно создавать несколько потоков отправки команд</mark>? Интересно, это дало что-нибудь в плане быстродействия?

Оооп) А может кто нить поделиться секретом это как?)

Alexander
Alexander Autor

frontman:

FiNick: Я так понял <mark>теперь можно создавать несколько потоков отправки команд</mark>? Интересно, это дало что-нибудь в плане быстродействия?

Оооп) А может кто нить поделиться секретом это как?)

Plaza: возможность создавать несколько транзакционных потоков.

FiNick
FiNick

Михаил, помнится во времена, когда тестовый сервак плазы не работал, вы (или Александр) тестировали плазу на реальном боевом сервере плазы. Откройте секрет, как можно получить доступ к реальному серверу не проходя сертификацию робота? Дело в том, что с этими очередями сообщений сертификацию не пройти (первый таск собственно), а мне бы уже давно надо отрабатывать быстрые стратегии на реальном сервере...

Mikhail Sukhov
Mikhail Sukhov

FiNick: Михаил, помнится во времена, когда тестовый сервак плазы не работал, вы (или Александр) тестировали плазу на реальном боевом сервере плазы. Откройте секрет, как можно получить доступ к реальному серверу не проходя сертификацию робота?

Купить логин у брокера. Сертификацию кто-то из брокеров еще требует?

FiNick
FiNick

Mikhail Sukhov: Купить логин у брокера. Сертификацию кто-то из брокеров еще требует?

У нас тут деревня похоже=) БКС требует сертификацию, финам вообще не предоставляет прямой доступ на РТС со своей программкой. А разве можно подключиться на РТС в обход брокера? Не охота еще и брокеру комиссию отстегивать

Mikhail Sukhov
Mikhail Sukhov

FiNick: У нас тут деревня похоже=) БКС требует сертификацию, финам вообще не предоставляет прямой доступ на РТС со своей программкой.

А что с другими брокерами? БКС вообще попутал что-то, имхо. Забыл на какой стороне поля играет.

FiNick: А разве можно подключиться на РТС в обход брокера? Не охота еще и брокеру комиссию отстегивать

Нет, только через брокера.

FiNick
FiNick

Кроме БКС и Финама больше в Новосибирске никого нет.

Mikhail Sukhov
Mikhail Sukhov

FiNick: Кроме БКС и Финама больше в Новосибирске никого нет.

Обложили.😂 А дистанционно разве нельзя открыться у другого брокера? Скан пасспорта по факсу и т.д.

dart
dart

FiNick: Кроме БКС и Финама больше в Новосибирске никого нет. Здрасте, а Открытие например, ВТБ-24

frontman
frontman

Офигееееть) Тут все изменения можно смотреть)) Вот я быдляра) Спасибо.

Alexander
Alexander Autor

Сделал существенное увеличение производительности и стабильности выставления заявок. Положил на codeplex. Тестируйте в своих тестерах, пока frontman пишет общий профилировщик. У меня по моим тестам на бою получилось ускорение в 3-5 раз. 😎

to frontman: договаривались уже, что BrokerCode в PlazaTrader ни к чему. Нужен вам локально - создавайте наследника PlazaTrader локально и используйте его там.

frontman
frontman

Alexander Mukhanchikov: Сделал существенное увеличение производительности и стабильности выставления заявок. Положил на codeplex. Тестируйте в своих тестерах, пока frontman пишет общий профилировщик. У меня по моим тестам на бою получилось ускорение в 3-5 раз. 😎

to frontman: договаривались уже, что BrokerCode в PlazaTrader ни к чему. Нужен вам локально - создавайте наследника PlazaTrader локально и используйте его там.

Александр не получиться. В наследники придется переопределить методы в которых используются закрытые поля класса PlazaTrader. Например _transactionManager в методе OnRegisterOrder. Мне придется весь PlazaTrader переписать...

Alexander
Alexander Autor

frontman:

Alexander Mukhanchikov: Сделал существенное увеличение производительности и стабильности выставления заявок. Положил на codeplex. Тестируйте в своих тестерах, пока frontman пишет общий профилировщик. У меня по моим тестам на бою получилось ускорение в 3-5 раз. 😎

to frontman: договаривались уже, что BrokerCode в PlazaTrader ни к чему. Нужен вам локально - создавайте наследника PlazaTrader локально и используйте его там.

Александр не получиться. В наследники придется переопределить методы в которых используются закрытые поля класса PlazaTrader. Например _transactionManager в методе OnRegisterOrder. Мне придется весь PlazaTrader переписать...

Попробуйте так:

есть событие

		/// <summary>
		/// Обработать отправляемую транзакцию до того, как она будет отослана на сервер Plaza.
		/// </summary>
		public event Action<Transaction> ProcessRequest;

Подписываетесь на него. Вам приходит Transaction. Делаете ему SetBrokerCode.

aleksej
aleksej

Alexander Mukhanchikov: Сделал существенное увеличение производительности и стабильности выставления заявок. Положил на codeplex. Тестируйте в своих тестерах, пока frontman пишет общий профилировщик. У меня по моим тестам на бою получилось ускорение в 3-5 раз. 😎

to frontman: договаривались уже, что BrokerCode в PlazaTrader ни к чему. Нужен вам локально - создавайте наследника PlazaTrader локально и используйте его там.

Подтверждаю, Latency заявок снизился очень значительно (у меня, в среднем, со 150 мс. до 50 мс.) и у заявок стали появляться статусы Failed (а раньше просто подвисали на None). Глянул изменения в коде коннектора, примерно понял.

Огромное спасибо, завтра еще буду тестировать :)

Mikhail Sukhov
Mikhail Sukhov

Alexander Mukhanchikov: Подписываетесь на него. Вам приходит Transaction. Делаете ему SetBrokerCode.

А что за брокерский код? Почему мне его не нужно вводить?

Alexander
Alexander Autor

Mikhail Sukhov:

Alexander Mukhanchikov: Подписываетесь на него. Вам приходит Transaction. Делаете ему SetBrokerCode.

А что за брокерский код? Почему мне его не нужно вводить?

frontman делает какую-то хрень на стороне брокера. ему надо его вводить, физикам - нет. в PlazaTrader полю BrokerCode точно не место.

Mikhail Sukhov
Mikhail Sukhov

Alexander Mukhanchikov: frontman делает какую-то хрень на стороне брокера.

😂

FiNick
FiNick

Alexander Mukhanchikov: Сделал существенное увеличение производительности и стабильности выставления заявок. Положил на codeplex. Тестируйте в своих тестерах, пока frontman пишет общий профилировщик. У меня по моим тестам на бою получилось ускорение в 3-5 раз. 😎

Подтверждаю, ускорение есть, правда не в разы, как у Александра. У меня до москвы задержка 53мс в среднем, заявки ставятся в среднем за 100 мс, раньше было 120-140 вроде.

frontman
frontman

Александр благодарю. Вот ток мне кажется время выполнения транзакций из за этого может увеличиться... И попрошу без вот таких вот оценок. Тем более что вы не в курсе моей работы. И насчет брокерского кода: он есть во ВСЕХ транзакциях отправляемых РТС. Только вот лично вам он не нужен и поэтому вы считаете, что это лишне. Я не понимаю в чем проблема... Что он места много занимает? Или что? Принцип?

Alexander
Alexander Autor

frontman: Александр благодарю. Вот ток мне кажется время выполнения транзакций из за этого может увеличиться...

"Кажется"? А если потестировать, да посмотреть? Вот для этого и нужен профилировщик-тестировщик, о котором месяца 2 ведётся разговор. Уже вон отписались и подтвердили мои тесты - снизилось время в 3-4 раза.

Давайте конкретно, без кажется. Где у вас увеличилось время? На каких транзакциях? На каком сервере? Насколько? И у меня и у aleksej средний Latency снизился со 150мс до 50мс. С каких до каких он вырос у вас?

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

frontman: И попрошу без вот таких вот оценок. Тем более что вы не в курсе моей работы. И насчет брокерского кода: он есть во ВСЕХ транзакциях отправляемых РТС. Только вот лично вам он не нужен и поэтому вы считаете, что это лишне. Я не понимаю в чем проблема... Что он места много занимает? Или что? Принцип?

Ну я образно говорю. Я делаю хрень на стороне физика, вы - на стороне брокера :)

Я уже много раз спрашивал - зачем брокерский код простому смертному? Для чего его вписывать в каждую транзакцию? Брокерский код добавляется в транзакцию уже на стороне биржи. И чем вас не устраивает тот метод изменения транзакции, который я описал выше?

Зачем он в PlazaTrader? Это не то поле, которое нужно знать шлюзу. Оно там явно лишнее. Далее - в Transaction не будут добавляться новые поля. Нужно что-то установить - пользуйтесь GetField \ SetField. Те немногие поля, которые там есть - я почищу. Постоянно таблицы модифицируется, что-то добавляется, что-то удаляется. Transaction не будет содержать сотни полей, не будет завязан на конкретную версию шлюза.

Alexander
Alexander Autor

И да, доступ давался несколько для иных задач чем добавление BrokerCode :)

это

  1. модификация стримов по группам чтоб можно было их удалять \ добавлять удобно;
  2. программа-тестировщик скорости работы.
frontman
frontman

Alexander Mukhanchikov:

  1. модификация стримов по группам чтоб можно было их удалять \ добавлять удобно;

Готов сделать. Все таки давайте решим делаем это через

  1. Свойство для каждого потока SecurityType или
  2. Группировку потоков в коллекции futuresStreams, optionsStreams, commonStreams?
Alexander
Alexander Autor

frontman:

Alexander Mukhanchikov:

  1. модификация стримов по группам чтоб можно было их удалять \ добавлять удобно;

Готов сделать. Все таки давайте решим делаем это через

  1. Свойство для каждого потока SecurityType или
  2. Группировку потоков в коллекции futuresStreams, optionsStreams, commonStreams?

Через SecurityType, которое может быть: Future (фьючерсы), Option (только опционы), Common (общее)

frontman
frontman

Да нет Александр) Я не про то что вы пофиксили... Я про событие ProcessRequest)) Ну что вы так сразу близко к сердцу то) Все я понял. Так бы сразу и написали...😭

Alexander
Alexander Autor

frontman: Да нет Александр) Я не про то что вы пофиксили... Я про событие ProcessRequest)) Ну что вы так сразу близко к сердцу то) Все я понял. Так бы сразу и написали...😭

На сколько оно у вас увеличилось по ProcessRequest? На пару микросекунд? :) Сделайте тест, там увеличение если и будет, то << 1 мс.

Я вроде так сразу и писал - спрашивал нафига оно рядовому пользователю. :)

frontman
frontman

Сделал...

Alexander
Alexander Autor

frontman: Сделал...

Отлично. Только поставьте у себя в настройках Visual Studio для табов - сохранение табов (а не пробелы), tab size 4, ident size 4

frontman
frontman

Ок. Щас полазаю))

frontman
frontman

У меня такой вопрос: А почему для StockSharpa используется .NET Framework 3.5? В нем нет например Parallel LINQ, а так было бы приятно)))

Alexander
Alexander Autor

frontman: У меня такой вопрос: А почему для StockSharpa используется .NET Framework 3.5? В нем нет например Parallel LINQ, а так было бы приятно)))

Из-за SmartCom

frontman
frontman

По шестой задачи хотел спросить. Может укажите так сказать направление)) Александр вы можете я знаю)

Alexander
Alexander Autor

frontman: По шестой задачи хотел спросить. Может укажите так сказать направление)) Александр вы можете я знаю)

Если запускать в вечернюю сессию робота, то данные придут и по дневной сессии - т.е. будут одни и теже isin_id инструментов, с разными номерами сессий. Надо брать ту, которая идёт. Также надо понять как заменять текущие инструменты на новые при смене сессии.

frontman
frontman

Хм... Все спасиб)

frontman
frontman

Александр а что дает ваше "Plaza: возможность снимать заявку по ext_id (TransactionId)"? Можно разъяснить... Я там увидел что вроде как можно теперь создать транзакцию для отмены сразу нескольких заявок... А вот реализации такой функции в PlazaTrader не нашел... Можете как то объяснить? Спасибо.

frontman
frontman

frontman: Я там увидел что вроде как можно теперь создать транзакцию для отмены сразу нескольких заявок... А вот реализации такой функции в PlazaTrader не нашел... Извиняюсь проглядел)

Alexander
Alexander Autor

frontman: Александр а что дает ваше "Plaza: возможность снимать заявку по ext_id (TransactionId)"? Можно разъяснить... Я там увидел что вроде как можно теперь создать транзакцию для отмены сразу нескольких заявок... А вот реализации такой функции в PlazaTrader не нашел... Можете как то объяснить? Спасибо.

Я добавил возможность снимать заявку для которой ещё неизвестен order_id. Делается это по внешнему id - по ext_id в понятиях шлюза или по TransactionId в наших понятиях. Попробуйте снять заявку которая в состоянии None до моих изменений и после них - поймёте.

Т.е. сейчас есть возможность снимать заявку в промежуток между отправкой заявки и ответом биржи.

frontman
frontman

Но все таки если нетрудно смысл изменений объясните) Спасибо)

frontman
frontman

Ок. Спасибо. У меня возможно по этой причине и не снимались заявки. Оч классно)

Alexander
Alexander Autor

frontman: Ок. Спасибо. У меня возможно по этой причине и не снимались заявки. Оч классно)

Как дела с 5-6 задачами?

frontman
frontman

Ну думаю 6е я добью. Щас уже делаю. А вот 5е точ не буду. Кстати вы не скажите почему SessionId = new PlazaColumn(TableId, "sess_id", typeof(int), false) Т.е. IsMandatory == false.? Это в классе PlazaDealDerivativeColumns...

Alexander
Alexander Autor

frontman: Ну думаю 6е я добью. Щас уже делаю. А вот 5е точ не буду. Кстати вы не скажите почему SessionId = new PlazaColumn(TableId, "sess_id", typeof(int), false) Т.е. IsMandatory == false.? Это в классе PlazaDealDerivativeColumns...

А зачем sess_id для сделок? Если надо - можно и true передавать.

5е не будете по причине что теперь всё летает и не надо сверять производительность "до" и "после"?

frontman
frontman

Alexander Mukhanchikov: А зачем sess_id для сделок? Так... Скорее всего я не понял знач задачи) Я думал что он качает сделки лишнии)) Хотя вот сам вижу что нет) Так что он тогда лишнего качает то?) Инструменты только?

Alexander
Alexander Autor

frontman:

Alexander Mukhanchikov: А зачем sess_id для сделок? Так... Скорее всего я не понял знач задачи) Я думал что он качает сделки лишнии)) Хотя вот сам вижу что нет) Так что он тогда лишнего качает то?) Инструменты только?

Это вообще не при чём. Сегодня одна сессия, завтра - другая. Надо иметь возможность заменять один инструмент на другой при смене сессии, т.к. для разных сессий инструменты разные.

Т.е. если приходят несколько сессий - надо брать инструмент по активной сессии, а не по закончившейся.

frontman
frontman

Просто я так понимаю из за этого я при получении сделок не могу sess_id посмотреть...

frontman
frontman

))) Нет Александр я уже говорил. У меня каждая транзакция на счету. Я не могу такую прогу тестить. Меня уволят)

Alexander
Alexander Autor

frontman: ))) Нет Александр я уже говорил. У меня каждая транзакция на счету. Я не могу такую прогу тестить. Меня уволят)

Тестовый сервер так и не подключили? :) Да и я вроде говорил - можно и по 100 транзакциям тестить. Нет, так нет. Вам надо, не нам 😎

frontman
frontman

ууу))) Хм... Тогда думать надо...

frontman
frontman

А у инструмента только sess_id меняется?

Alexander
Alexander Autor

frontman: А у инструмента только sess_id меняется?

Посмотрите всё сами раз взялись за задачу.

Cargar más comentarios