← Zurück

Тормоза на Плазе

Поднимаю старую тему, чтобы лишнего не плодить. Библиотека 3.2.11 Два вопроса:

  1. Как использовать StrategyLatencyManager? В доках ничего толком не сказано, вроде как все само должно. У стратегии LatencyManager создается автоматически. Но вот массив Orders всегда пуст и самому добавить в него ордеры нельзя. Свойство Latency мэнеджера всегда 0, как и у любой заявки.

  2. И без LatencyManager'а видно, что заявки выставляются 5-10 секунд (это через плазу). Как так?

War dieses Thema hilfreich?

Thema teilen

Kommentare (44)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Alexander
Alexander

FiNick: Поднимаю старую тему, чтобы лишнего не плодить. Библиотека 3.2.11 Два вопроса:

  1. Как использовать StrategyLatencyManager? В доках ничего толком не сказано, вроде как все само должно. У стратегии LatencyManager создается автоматически. Но вот массив Orders всегда пуст и самому добавить в него ордеры нельзя. Свойство Latency мэнеджера всегда 0, как и у любой заявки.

  2. И без LatencyManager'а видно, что заявки выставляются 5-10 секунд (это через плазу). Как так?

Какое отношение всё это имеет к тестированию? :)

  1. вызывается ли Strategy.OrderChanged?
  2. у плазы похоже тормоза в последние пару дней, сам столкнулся. до этого шустро работало. отсылайте логи в ртс, как они советуют, звоните девочкам по телефону, быстро и толково отвечают.
FiNick
FiNick Autor

Ну я робота тестирую, потому в тестирование, плюс раз уж тема про это создана=)

  1. Вызывается, NewOrders тоже. Поправка: свойство strategy.LatencyManager.Latency после второго-третьего ордера начинает выдавать чиселки (18 секунд задержка, я в шоке), но свойство Latency у ордеров все равно пустое
Mikhail Sukhov
Mikhail Sukhov

FiNick: Ну я робота тестирую, потому в тестирование

Тестирование робота != Тестирование стратегии. Это форум для тестирования стратегий. Перенесу сообщение в Плазу.

Serg
Serg

Может немного не в тему но буду благодарен если кто ответит) Можно ли где-то пощупать плазу2, посмотреть как работает, что-то вроде демодоступа? Спасибо

Alexander
Alexander

Serg: Может немного не в тему но буду благодарен если кто ответит) Можно ли где-то пощупать плазу2, посмотреть как работает, что-то вроде демодоступа? Спасибо

скачиваете с codeplex'а, заказываете у ртс демодоступ.

FiNick
FiNick Autor

Проблема частично решилась: стал регистрировать заявки через strategy.RegisterOrder, а не plaza.RegisterOrder. В результате, в обработчике NewMyTrades вызываю myTrade.Order.Latency, получаю чиселку. Но, если так написать:


var order = RegisterOrder();
var lat = order.Latency;

получаю 0. Такое подозрение, что у неисполненых ордеров Latency 0, что странно, ведь мы измеряем скорость выставления заявки, а не исполнения.

Alexander
Alexander

FiNick: Проблема частично решилась: стал регистрировать заявки через strategy.RegisterOrder, а не plaza.RegisterOrder. В результате, в обработчике NewMyTrades вызываю myTrade.Order.Latency, получаю чиселку. Но, если так написать:

var order = RegisterOrder(); var lat = order.Latency;

> получаю 0.
> Такое подозрение, что у неисполненых ордеров Latency 0, что странно, ведь мы измеряем скорость выставления заявки, а не исполнения.


Регистрировать заявку и нужно через strategy.RegisterOrder.
Это делается простым вызовом RegisterOrder внутри стратегии.

по коду
RegisterOrder - это void (!!!) функция. она принимает order в качестве параметра, но ничего не возвращает!
тот код, который вы указали вообще неверен. он не будет компилироваться.
задержку у заявки можно получить только после создания и регистрации.
FiNick
FiNick Autor

Забыл сказать, в данном случае RegisterOrder это переопределенный метод. Внутри создается ордер, в try конструкции отправляется на биржу, ссылка на ордер возвращается.

Alexander
Alexander

FiNick: Забыл сказать, в данном случае RegisterOrder это переопределенный метод. Внутри создается ордер, в try конструкции отправляется на биржу, ссылка на ордер возвращается.

Тогда уж покажите сам метод. А заявка успевает зарегистрироваться=выставиться на биржу? Наверняка нет, отсюда и 0 latency. Выведите статус заявки перед получением Latency.

FiNick
FiNick Autor
Order RegisterOrder(OrderDirections direction, decimal volume, decimal price)
        {
            var order = new Order
            {
                Portfolio = this.Portfolio,
                Price = price,
                Security = this.Security,
                Volume = volume,
                Direction = direction,
            };
                        
            try
            {
                var t1 = DateTime.Now;
                this.RegisterOrder(order);
                var t2 = DateTime.Now;
                this.AddLog(new LogMessage(this,DateTime.Now, ErrorTypes.Warning, String.Format("Register Order: State: {0}   Id: {1}   TrId: {2}   Lat: {3}. Time: {4}   {5}",
                                                                                                order.State,
                                                                                                order.Id,
                                                                                                order.TransactionId,
                                                                                                order.Latency, t1, t2
                                                                                                )));
            }
            catch (Exception e)
            {
                this.AddLog(new LogMessage(this,DateTime.Now, ErrorTypes.Error, "Message: " + e.Message));
            }

            return order;
        }

Вот результат: MS 15.09.2011 14:37:07.750 Внимание Register Order: State: None Id: 0 TrId: 52561517 Lat: 00:00:00. Time: 15.09.2011 14:36:58 15.09.2011 14:37:07 Хорошо, вы правы, видимо спрашивать Latency, имеет смысл только после событий NewOrders или OrdersChanged. Но кто мне тогда объяснит, чем занимается this.RegisterOrder(order) целых 9 секунд!! Я думал он дожидается результата выставления заявки.

Alexander
Alexander

FiNick: ... Вот результат: MS 15.09.2011 14:37:07.750 Внимание Register Order: State: None Id: 0 TrId: 52561517 Lat: 00:00:00. Time: 15.09.2011 14:36:58 15.09.2011 14:37:07 Хорошо, вы правы, видимо спрашивать Latency, имеет смысл только после событий NewOrders или OrdersChanged. Но кто мне тогда объяснит, чем занимается this.RegisterOrder(order) целых 9 секунд!! Я думал он дожидается результата выставления заявки.

У вас 9 секунд проходит от момента вызова функции RegisterOrder до момента выхода из неё? Скачайте исходный код плазы, посмотрите где возникает эта задержка.

Mikhail Sukhov
Mikhail Sukhov

FiNick: Но кто мне тогда объяснит, чем занимается this.RegisterOrder(order) целых 9 секунд!!

Режим синхронный-асинхронный?

FiNick
FiNick Autor

Mikhail Sukhov:

FiNick: Но кто мне тогда объяснит, чем занимается this.RegisterOrder(order) целых 9 секунд!!

Режим синхронный-асинхронный?

1)Вы имеете ввиду, в каком режиме вызываются события типа NewMyTrades, NewOrders, события реагирующие на StrategyRule, и т.п.? Не знаю как это можно посмотреть. Надеюсь что асинхронно) хотя мне давно уже очень интересно, как все это исполняется. Например, если пришли друг за другом два события NewMyTrades, а обработчик первого события еще не закончил работу, запустится ли параллельно в другом потоке обработчик второго события NewMyTrades?

2)Или вы имеете ввиду свойство IsAsync у TransactionManager'a? По умолчанию стоит true, и я не заметил в коде, чтобы у пользователя PlazaTrader была возможность его менять. Единственное, что сейчас под подозрением из-за задержек это PlazaConnectionPool, у которого стоит StreamTimeOut по умолчанию 10 секунд, прям как у меня задержки. Но я еще не разобрался как там все работает, вопрос открыт.

Alexander
Alexander

Попутно нашёл кое-что - после ConnectionError.SafeInvoke(new InvalidOperationException("Ошибка подключения к Plaza. Код {0}.".Put(status))); у нас этот Exception показывается через 10 секунд. Видимо у нас такая задержка при реализации образовалась. Предлагаю подключиться к рефакторингу PlazaTrader, лишь после его сертифицировать и тестить.

FiNick
FiNick Autor

Alexander: Предлагаю подключиться к рефакторингу PlazaTrader, лишь после его сертифицировать и тестить. Я-то могу подключиться, но много пользы от себя не обещаю. У меня опыта программирования полгода джуниор девелопером.

Mikhail Sukhov
Mikhail Sukhov

FiNick:

Alexander: Предлагаю подключиться к рефакторингу PlazaTrader, лишь после его сертифицировать и тестить. Я-то могу подключиться, но много пользы от себя не обещаю. У меня опыта программирования полгода джуниор девелопером.

Присоединяюсь к вопросу. А что собственно нужно делать в рефакторинге? Можно список задач изолированных?

Mikhail Sukhov
Mikhail Sukhov

FiNick:

Alexander: Предлагаю подключиться к рефакторингу PlazaTrader, лишь после его сертифицировать и тестить. Я-то могу подключиться, но много пользы от себя не обещаю. У меня опыта программирования полгода джуниор девелопером.

Тогда может поможете с до заполнением метаданных? В PlazaTableId видно (если установлен R#), что некоторые потоки не описаны нашими классами PlazaXXXColumns, и соответственно, для них нет свойства в PlazaStreamRegistry. Например, ClearingMoney.

FiNick
FiNick Autor

Mikhail Sukhov:

FiNick:

Alexander: Предлагаю подключиться к рефакторингу PlazaTrader, лишь после его сертифицировать и тестить. Я-то могу подключиться, но много пользы от себя не обещаю. У меня опыта программирования полгода джуниор девелопером.

Тогда может поможете с до заполнением метаданных? В PlazaTableId видно (если установлен R#), что некоторые потоки не описаны нашими классами PlazaXXXColumns, и соответственно, для них нет свойства в PlazaStreamRegistry. Например, ClearingMoney.

Дайте логин на TFS

Alexander
Alexander

FiNick:

Mikhail Sukhov:

FiNick:

Alexander: Предлагаю подключиться к рефакторингу PlazaTrader, лишь после его сертифицировать и тестить. Я-то могу подключиться, но много пользы от себя не обещаю. У меня опыта программирования полгода джуниор девелопером.

Тогда может поможете с до заполнением метаданных? В PlazaTableId видно (если установлен R#), что некоторые потоки не описаны нашими классами PlazaXXXColumns, и соответственно, для них нет свойства в PlazaStreamRegistry. Например, ClearingMoney.

Дайте логин на TFS

Зачем? Код плазы доступен на codeplex

FiNick
FiNick Autor

Зачем? Код плазы доступен на codeplex

Если я буду вносить изменения, куда их мёржить? Плюс, может я что-то путаю, но в тех исходниках я не нашел код неймспейса StockSharp.Algo.Strategies, вылезают метаданные и все.

Alexander
Alexander

Зачем? Код плазы доступен на codeplex

Если я буду вносить изменения, куда их мёржить? Плюс, может я что-то путаю, но в тех исходниках я не нашел код неймспейса StockSharp.Algo.Strategies, вылезают метаданные и все.

Порядок действий следующий:

  1. регистрируетесь на codeplex
  2. вступаете в stocksharp.codeplex.com
  3. пишите свой ник
  4. мы вас добавляем в команду
  5. с помощью программ что там описаны выкачиваете исходники
  6. делаете фикс
  7. заливаете на codeplex патч как там описано

StockSharp.Algo.Strategies находится в закрытом TFS и этот namespace не нужен для решения описанной выше задачи.

FiNick
FiNick Autor

Кстати, странная фишка: у меня если плаза не подключена проц на 100% забит, подключаю нагрузка до 0-2% падает, отключаю опять 100%. Подключение 11-12 секунд всегда, отключается быстро 2-3 сек. Раундтрип заявки, как выяснилось, зависит от свойства плазатрейдера StreamTimeOut. Я не знаю точно, это из-за того, что заявка долго идет на биржу, или долго идет подтверждение с биржи.

Alexander
Alexander

FiNick: Кстати, странная фишка: у меня если плаза не подключена проц на 100% забит, подключаю нагрузка до 0-2% падает, отключаю опять 100%. Подключение 11-12 секунд всегда, отключается быстро 2-3 сек. Раундтрип заявки, как выяснилось, зависит от свойства плазатрейдера StreamTimeOut. Я не знаю точно, это из-за того, что заявка долго идет на биржу, или долго идет подтверждение с биржи.

Любая возникающая ошибка также приходит через 10 секунд - это недостаток дизайна с StreamTimeOut, тоже надо править.

По поводу 100% при отключении - есть на это таск. Только используйте уже последний revision, там ж рефакторинг сильно был произведён, может ушло уже.

Alexander
Alexander

FiNick: Кстати, странная фишка: у меня если плаза не подключена проц на 100% забит, подключаю нагрузка до 0-2% падает, отключаю опять 100%. Подключение 11-12 секунд всегда, отключается быстро 2-3 сек. Раундтрип заявки, как выяснилось, зависит от свойства плазатрейдера StreamTimeOut. Я не знаю точно, это из-за того, что заявка долго идет на биржу, или долго идет подтверждение с биржи.

Просьба сопровождать коммиты(чек ины) комментариями и проверять перед выкладыванием :) после последних 2х чек инов плаза работать перестала.

FiNick
FiNick Autor

Alexander: Просьба сопровождать коммиты(чек ины) комментариями и проверять перед выкладыванием :) после последних 2х чек инов плаза работать перестала.

С комментами ступил, буду писать. На счет не работает: не билдится или рантайм эксепшны? У меня билдится, но на прогоне данные с потока подтягивать не пробовал. Кстати, какая у вас политика при создании этих PlazaXXXColumns? Надо туда вбивать все колонки какие есть в документации или только самые необходимые? Я так смотрю колонки многих таблиц не до конца описаны или не описаны вовсе.

Alexander
Alexander

FiNick:

Alexander: Просьба сопровождать коммиты(чек ины) комментариями и проверять перед выкладыванием :) после последних 2х чек инов плаза работать перестала.

С комментами ступил, буду писать. На счет не работает: не билдится или рантайм эксепшны? У меня билдится, но на прогоне данные с потока подтягивать не пробовал. Кстати, какая у вас политика при создании этих PlazaXXXColumns? Надо туда вбивать все колонки какие есть в документации или только самые необходимые? Я так смотрю колонки многих таблиц не до конца описаны или не описаны вовсе.

Исправил. Не грузились данные.

Mikhail Sukhov
Mikhail Sukhov

FiNick: Кстати, какая у вас политика при создании этих PlazaXXXColumns? Надо туда вбивать все колонки какие есть в документации или только самые необходимые? Я так смотрю колонки многих таблиц не до конца описаны или не описаны вовсе.

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

И да, нужно, конечно же, полную проекцию Плаза таблиц.

Alexander
Alexander

FiNick: Кстати, странная фишка: у меня если плаза не подключена проц на 100% забит, подключаю нагрузка до 0-2% падает, отключаю опять 100%.

Исправил, фикс - в исходниках codeplex 😎

Alexander
Alexander

Результаты замеров после вчерашних изменений со 100мс. Всего послал 10 заявок. Для первой заявки всё происходит максимально долго:

3мс от RegisterOrder до обработчика PlazaTrader.OnRegisterOrder 110мс на _transactionManager.Factory.CreateRegister(order); 5мс на transaction.Set 12мс на SendTransaction

Далее всё быстрее, но.

0мс от отправки заявки до PlazaTrader.OnRegisterOrder 2мс на _transactionManager.Factory.CreateRegister(order); 0мс на transaction.Set <mark>122мс на SendTransaction</mark>

0мс от отправки заявки до PlazaTrader.OnRegisterOrder 2мс на _transactionManager.Factory.CreateRegister(order); 0мс на transaction.Set 4мс на SendTransaction

0мс от отправки заявки до PlazaTrader.OnRegisterOrder 2мс на _transactionManager.Factory.CreateRegister(order); 1мс на transaction.Set 0мс на SendTransaction

0мс от отправки заявки до PlazaTrader.OnRegisterOrder 2мс на _transactionManager.Factory.CreateRegister(order); 0мс на transaction.Set <mark>100мс на SendTransaction</mark>

0мс от отправки заявки до PlazaTrader.OnRegisterOrder 2мс на _transactionManager.Factory.CreateRegister(order); 0мс на transaction.Set <mark>100мс на SendTransaction</mark>

0мс от отправки заявки до PlazaTrader.OnRegisterOrder 2мс на _transactionManager.Factory.CreateRegister(order); 1мс на transaction.Set <mark>203мс на SendTransaction</mark>

0мс от отправки заявки до PlazaTrader.OnRegisterOrder 2мс на _transactionManager.Factory.CreateRegister(order); 0мс на transaction.Set 34мс на SendTransaction

0мс от отправки заявки до PlazaTrader.OnRegisterOrder 2мс на _transactionManager.Factory.CreateRegister(order); 0мс на transaction.Set <mark>101мс на SendTransaction</mark>

0мс от отправки заявки до PlazaTrader.OnRegisterOrder 1мс на _transactionManager.Factory.CreateRegister(order); 1мс на transaction.Set <mark>100мс на SendTransaction</mark>

SendTransaction работает медленно, как раз видна дискретность в 100мс.

Alexander
Alexander

Прологировал SendTransaction Первый запуск:

6мс AddTransaction 45мс SendAsync

Последующие: (где не указан AddTransaction - там 0мс):

42мс SendAsync

<mark>204мс SendAsync</mark>

24мс SendAsync

1мс AddTransaction 4мс SendAsync

1мс AddTransaction 4мс SendAsync

17мс SendAsync

1мс AddTransaction 4мс SendAsync

33мс SendAsync

<mark>100мс SendAsync</mark>

FiNick
FiNick Autor

На форуме rts было написано:

Из этого следует несколько выводов:

а. Выбор синхронного или асинхронного способа отправки одинаков с точки зрения как скорости отправки, так и ожидания ответа и должен диктоваться внутренней архитектурой приложения.

Асинхронную отправку имеет смысл использовать, если -- приложение однопоточное и получает реплику в том же Connection, который используется для отправки заявок. В этом случае сихронный Send будет блокировать получение реплики до момента получения ответа на сообщение. -- приложение отправляет сообщения, не дожидаясь ответа на предыдущие отправленные сообщения (например, классическая система интернет-трейдинга)

б. Обработка таймаута при ожидании на объекте ядра точно также как при Sleep квантуется по 10-15 мс. Таймаут в 1 мс статистически эквивалентен таймауту в 10 мс. Так устроена ОС Windows.

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

г. Таймаут = 0 в ProcessMessage означает, что один из процессоров или процессорных ядер будет постоянно загружен обработкой пустого (по большей части) цикла данного потока. У нас: 1мс AddTransaction 4мс SendAsync

33мс SendAsync

<mark>100мс SendAsync</mark>

Чем занимается SendAsync столько времени, оно же вроде асинхронная отправка, неужели дожидается какого-то ответа? И плюс почему PollTimeOut влияет на это время, судя по коду там есть TransactionTimeOut для этого (5 сек по умолчанию).

Alexander
Alexander

На форуме rts было написано:

Из этого следует несколько выводов:

а. Выбор синхронного или асинхронного способа отправки одинаков с точки зрения как скорости отправки, так и ожидания ответа и должен диктоваться внутренней архитектурой приложения.

Асинхронную отправку имеет смысл использовать, если -- приложение однопоточное и получает реплику в том же Connection, который используется для отправки заявок. В этом случае сихронный Send будет блокировать получение реплики до момента получения ответа на сообщение. -- приложение отправляет сообщения, не дожидаясь ответа на предыдущие отправленные сообщения (например, классическая система интернет-трейдинга)

б. Обработка таймаута при ожидании на объекте ядра точно также как при Sleep квантуется по 10-15 мс. Таймаут в 1 мс статистически эквивалентен таймауту в 10 мс. Так устроена ОС Windows.

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

г. Таймаут = 0 в ProcessMessage означает, что один из процессоров или процессорных ядер будет постоянно загружен обработкой пустого (по большей части) цикла данного потока. У нас: 1мс AddTransaction 4мс SendAsync

33мс SendAsync

<mark>100мс SendAsync</mark>

Чем занимается SendAsync столько времени, оно же вроде асинхронная отправка, неужели дожидается какого-то ответа? И плюс почему PollTimeOut влияет на это время, судя по коду там есть TransactionTimeOut для этого (5 сек по умолчанию).

Не дожидается похоже. PollTimeOut всё же не влияет, я был не прав. TransactionTimeOut вообще за другое ответственен, он тут тоже не при чём.

Ещё раз повторюсь - как только сделал через shared memory - всё стало мгновенно.

Потестируйте у себя, интересно сравнить.

FiNick
FiNick Autor

Alexander: Потестируйте у себя, интересно сравнить. До включения UseLocalProtocol: RegisterOrder работает в среднем 31 мс (кста, видно что там квант времени 15,625 мс, потому надо пользоваться каким-нибудь Stopwatch и т.п.), latency в среднем 180-200мс После включения: RegisterOrder работает за 0мс (кроме первого раза), latency в среднем 150-170мс, т.е на эти 30мс меньше стала.

Alexander
Alexander

FiNick:

Alexander: Потестируйте у себя, интересно сравнить. До включения UseLocalProtocol: RegisterOrder работает в среднем 31 мс (кста, видно что там квант времени 15,625 мс, потому надо пользоваться каким-нибудь Stopwatch и т.п.), latency в среднем 180-200мс После включения: RegisterOrder работает за 0мс (кроме первого раза), latency в среднем 150-170мс, т.е на эти 30мс меньше стала.

Latency как считаете?

FiNick
FiNick Autor

Alexander:

FiNick:

Alexander: Потестируйте у себя, интересно сравнить. До включения UseLocalProtocol: RegisterOrder работает в среднем 31 мс (кста, видно что там квант времени 15,625 мс, потому надо пользоваться каким-нибудь Stopwatch и т.п.), latency в среднем 180-200мс После включения: RegisterOrder работает за 0мс (кроме первого раза), latency в среднем 150-170мс, т.е на эти 30мс меньше стала.

Latency как считаете?

Время работы RegisterOrder: тупо DateTime.Now после вызова минус до вызова, а latency это свойство Order.Latency

ЗЫ Не много не по теме, но может кто знает, насколько трудно получить тестовый доступ к серверу плазы? Очень просто, пишите в техподдержку rts, выдадут.

P.S. Похоже уже можно выпускать релиз 4.0.1 =)

Alexander
Alexander

Включил UseLocalProtocol у себя в примере по умолчанию, полное время исполнения OnOrderRegister снизилось до 0-2мс.

Alexander
Alexander

Произвёл замеры на тестовом сервере биржи - 100 заявок.

  1. регистрирую время - посылаю заявку
  2. получаю ответ от биржи - регистрирую время.

В итоге средняя разница между 2) и 1) составила 140мс (это не с сервера биржи, а с рабочего компа). Максимальное время - 2148мс, минимальное - 58мс.

Такой всплеск - до 2 секунд был 1 раз, в остальном заявки - до 150мс, пару раз было по 500мс. Первая посланная заявка - 600мс.

Пошёл дальше - посмотрел на среднюю задержку пакетов от меня до биржи - с помощью rts echo. В итоге после 50 тысяч запросов - 105мс средняя задержка канала.

Всё, с тормозами Plaza2, похоже, решено. Пользуйтесь.

Единственная оставшаяся задача - поддержка 64 бит. Желающих как обычно нет? :)

Ortn
Ortn
Ortn

Alexander: Произвёл замеры на тестовом сервере биржи - 100 заявок.

  1. регистрирую время - посылаю заявку
  2. получаю ответ от биржи - регистрирую время.

В итоге средняя разница между 2) и 1) составила 140мс (это не с сервера биржи, а с рабочего компа). Максимальное время - 2148мс, минимальное - 58мс.

Такой всплеск - до 2 секунд был 1 раз, в остальном заявки - до 150мс, пару раз было по 500мс. Первая посланная заявка - 600мс.

Пошёл дальше - посмотрел на среднюю задержку пакетов от меня до биржи - с помощью rts echo. В итоге после 50 тысяч запросов - 105мс средняя задержка канала.

Всё, с тормозами Plaza2, похоже, решено. Пользуйтесь.

Единственная оставшаяся задача - поддержка 64 бит. Желающих как обычно нет? :)

Очень интересно какие результаты получатся у других людей. Сам проверить не могу т.к. нет доступа по плазе.

ЗЫ Не много не по теме, но может кто знает, насколько трудно получить тестовый доступ к серверу плазы? И можно ли это вообще сейчас сделать, или это только на время тестирования раздавали тестовые логины?

Alexander
Alexander

Отправил ещё 400 заявок.

Среднее колеблется в районе 120-140. Максимальное (делаю пачками по 100 заявок) - от 400мс до 2.3 секунды

минимальное - от 31 до 93мс.

Mikhail Sukhov
Mikhail Sukhov

Alexander: Отправил ещё 400 заявок.

Среднее колеблется в районе 120-140. Максимальное (делаю пачками по 100 заявок) - от 400мс до 2.3 секунды

минимальное - от 31 до 93мс.

Можешь тесты залить так же на КодеПлекс? Даже лучше в качестве примеров. Чтобы в любой момент каждый смог бы проверить свою скорость под нагрузкой.

Alexander
Alexander

Mikhail Sukhov:

Alexander: Отправил ещё 400 заявок.

Среднее колеблется в районе 120-140. Максимальное (делаю пачками по 100 заявок) - от 400мс до 2.3 секунды

минимальное - от 31 до 93мс.

Можешь тесты залить так же на КодеПлекс? Даже лучше в качестве примеров. Чтобы в любой момент каждый смог бы проверить свою скорость под нагрузкой.

Они сейчас просто в виде подсчёта разницы DateTime внутри PlazaTrader. Попробую на выходных отрефакторить и выложить, хотя бы в виде диффа.

Mikhail Sukhov
Mikhail Sukhov

Alexander: Они сейчас просто в виде подсчёта разницы DateTime внутри PlazaTrader. Попробую на выходных отрефакторить и выложить, хотя бы в виде диффа.

А зачем внутрь засовывал? Для замера регистрации достаточно Watch.Do(() => for 1 to 100000 trader.RegisterOrder). Для замера времени движения заявки - Order.Latency.

Alexander
Alexander

Mikhail Sukhov:

Alexander: Они сейчас просто в виде подсчёта разницы DateTime внутри PlazaTrader. Попробую на выходных отрефакторить и выложить, хотя бы в виде диффа.

А зачем внутрь засовывал? Для замера регистрации достаточно Watch.Do(() => for 1 to 100000 trader.RegisterOrder). Для замера времени движения заявки - Order.Latency.

Намудрил я похоже. Таймеров понавставлял :)

Завтра потестирую на выделенном сервере в датацентре ртс, вот это уже интереснее.

Mikhail Sukhov
Mikhail Sukhov

Alexander: Завтра потестирую на выделенном сервере в датацентре ртс, вот это уже интереснее.

Если будет готовая прога, я бы на своем логине прогнал. Главное, не в рынок заявки ставить.