← 返回

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

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

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

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

本主题对您有帮助吗?

分享主题

评论 (44)

登录创建账户, 登录或注册以发表评论

Alexander
Alexander

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

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

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

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

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

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

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

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

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

Serg
Serg

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

Alexander
Alexander

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

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

FiNick
FiNick 作者

Проблема частично решилась: стал регистрировать заявки через 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 作者

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

Alexander
Alexander

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

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

FiNick
FiNick 作者
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 作者

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 作者

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

Mikhail Sukhov
Mikhail Sukhov

FiNick:

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

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

Mikhail Sukhov
Mikhail Sukhov

FiNick:

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

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

FiNick
FiNick 作者

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 作者

Зачем? Код плазы доступен на 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 作者

Кстати, странная фишка: у меня если плаза не подключена проц на 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 作者

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 作者

На форуме 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 作者

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 作者

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: Завтра потестирую на выделенном сервере в датацентре ртс, вот это уже интереснее.

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