Ошибка: котирование порождает несколько выполненных заявок

Ошибка: котирование порождает несколько выполненных заявок
Atom
11/10/2011
Camill


Проблема проявляется даже стандартном примере SampleHistoryTesting. Для обнаружения в OnProcess достаточно добавить

if (Math.Abs(PositionManager.Position) > Volume)
  throw new Exception("Неверное состояние - поза превышает рабочий объем.");

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

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


Tags:


Thanks:


<< < 3 4 5 6  >
Mikhail Sukhov

Avatar
Date: 11/18/2011
Reply


Camill: Так что тормоза надо лечить отдельно.

Параллельным матчингом.

Thanks:

Camill

Avatar
Date: 11/18/2011
Reply


Mikhail Sukhov: Параллельным матчингом. Буду благодарен за пример кода. Нашел в документации ParallelMarketEmulator, но не нашел, куда его надо вписать.

Thanks:

Mikhail Sukhov

Avatar
Date: 11/18/2011
Reply


Camill:

Mikhail Sukhov: Параллельным матчингом. Буду благодарен за пример кода. Нашел в документации ParallelMarketEmulator, но не нашел, куда его надо вписать.

Вы же мне пример присылали, где синхронный устанавливали.

Thanks:

Camill

Avatar
Date: 11/18/2011
Reply


И правда. Но подключение параллельного не помголо - те же 25 минут на тестовый пример. Подключал так: ```csharp _trader.MarketEmulator = new ParallelMarketEmulator(_trader);

Thanks:

Mikhail Sukhov

Avatar
Date: 11/18/2011
Reply


Camill: И правда. Но подключение параллельного не помголо - те же 25 минут на тестовый пример. Подключал так: ```csharp _trader.MarketEmulator = new ParallelMarketEmulator(_trader);


Значит это точно не матчинг заявок увеличил время. Свечки используете?
Thanks:

Camill

Avatar
Date: 11/18/2011
Reply


Mikhail Sukhov: Значит это точно не матчинг заявок увеличил время. Свечки используете? Конечно. Собственно, я к тестовому примеру со скользящими средними его и подключал.

Thanks:

Mikhail Sukhov

Avatar
Date: 11/18/2011
Reply


Camill:

Mikhail Sukhov: Значит это точно не матчинг заявок увеличил время. Свечки используете? Конечно. Собственно, я к тестовому примеру со скользящими средними его и подключал.

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

Thanks:

Camill

Avatar
Date: 11/19/2011
Reply


Вроде что-то сделали, но непонятно, как это использовать - ни примера, ни мануала внятного я не видел.

Thanks:

Mikhail Sukhov

Avatar
Date: 11/19/2011
Reply


Camill: Вроде что-то сделали, но непонятно, как это использовать - ни примера, ни мануала внятного я не видел.

Вот такая помощь. К таким помощникам еще парочка помощников нужна.

Thanks:

russ

Avatar
Date: 11/20/2011
Reply


По поводу проблемы с неработающим котированием, описанной здесь http://stocksharp.com/forum/2129/Nie-rabotaiet-kotirovaniie/

  1. Взял с codeplex версию 4.0.6
  2. К стратегии котирования прикрепил лог

var strategy = new MarketQuotingStrategy(order, new Unit(5), new Unit(5));
var log = new FileLogListener("log" + (count++).ToString() + ".txt");
strategy.Log += new Action<LogMessage>(message => log.WriteMessage(message)); 

В итоге все нормально, но появилось очень много сообщение о том, что в стакан пустой:


00:05:00.000 |            | MQS             | Стратегия запущена.
00:05:00.000 | Warning    | MQS             | Стакан пустой.
00:10:00.000 | Warning    | MQS             | Стакан пустой.
00:15:00.000 | Warning    | MQS             | Стакан пустой.
00:20:00.000 | Warning    | MQS             | Стакан пустой.
00:25:00.000 | Warning    | MQS             | Стакан пустой.
00:30:00.000 | Warning    | MQS             | Стакан пустой.
00:35:00.000 | Warning    | MQS             | Стакан пустой.
00:40:00.000 | Warning    | MQS             | Стакан пустой.
00:45:00.000 | Warning    | MQS             | Стакан пустой.

Лог обрезал т.к. очень длинный, т.е. каждые 5 минут выдается сообщение Стакан Пустой.

23:20:00.000 | Warning    | MQS             | Стакан пустой.
23:25:00.000 | Warning    | MQS             | Стакан пустой.
23:30:00.000 | Warning    | MQS             | Стакан пустой.
23:35:00.000 | Warning    | MQS             | Стакан пустой.
23:40:00.000 | Warning    | MQS             | Стакан пустой.
23:45:00.000 | Warning    | MQS             | Стакан пустой.
23:50:00.000 | Warning    | MQS             | Стакан пустой.
23:55:00.000 | Warning    | MQS             | Стакан пустой.
23:59:59.990 |            | MQS             | Регистрация новой заявки на Buy с ценой 155010 и объемом 1.
23:59:59.990 |            | MQS             | Заявка 52981109 на Buy отправлена с ценой 155010 объемом 1.
00:04:59.990 |            | MQS             | Цена текущей 155010 и лучшей 154965.
00:04:59.990 |            | MQS             | Лучший бид 154960 и лучший аск 155005.
00:04:59.990 |            | MQS             | Котирование заявки 52981109 на Buy с ценой 155010 объемом 1.
00:04:59.990 |            | MQS             | Отмена заявки 52981109.
00:04:59.990 |            | MQS             | Новая Buy сделка 1 по цене 155005 на 1 заявки 52981109.
00:04:59.990 |            | MQS             | Позиция изменилась на 1.
00:04:59.990 |            | MQS             | Заканчиваем котирование с неисполненным объемом равный 0.
00:04:59.990 |            | MQS             | Стратегия останавливается.
00:04:59.990 |            | MQS             | Заканчиваем котирование с неисполненным объемом равный 0.
00:04:59.990 |            | MQS             | Заканчиваем котирование с неисполненным объемом равный 0.
00:04:59.990 |            | MQS             | Заканчиваем котирование с неисполненным объемом равный 0.
00:04:59.990 |            | MQS             | Стратегия остановлена.

Непонятно почему стакан пустой, исходные данные формирую как в примере:


var portfolio = new Portfolio { Name = "test account" };
                    var timeFrame = TimeSpan.FromMinutes(5);
                    var security = new Security
                    {
                        Id = "RIU9@RTS",
                        Code = "RIU9",
                        Name = "RTS-9.09",
                        MinStepSize = 5,
                        MinStepPrice = 2,
                        Decimals = 0,
                        Exchange = Exchange.Test,
                    };
                    
                    _trader = new EmulationTrader(
                    new[] { security },
                    new[] { portfolio })
                        {
                            MarketTimeChangedInterval = timeFrame
                        };

                        _trader.TradeGenerators[security] = new RandomWalkTradeGenerator(security, 155000);

                        _trader.DepthGenerators[security] = new TrendMarketDepthGenerator(security);
Thanks:
<< < 3 4 5 6  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy