Имитация исполнения сделки в обычном коннекторе

Имитация исполнения сделки в обычном коннекторе
Atom
22.01.2018
Георгий


Здравствуйте.

Есть необходимость запускать в одном роботе как тестовые стратегии (что-то вроде RealTimeEmulationTrader), так и рабочие. Пробовал когда-то давно создавать одновременно два коннектора (один обычный, а другой RealTimeEmulationTrader), но одновременно они работать не захотели. Запуск двух разных роботов с разными коннекторами, тоже нужного результата не дает (первый при запуске второго отключается от терминала и наоборот). Как можно в обычном коннекторе имитировать исполнение заявки как это делается в RealTimeEmulationTrader?




Спасибо:


< 1 2 
Георгий

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


Support: Добрый день. Ошибка исправлена в версии 4.4.5.4

Здравствуйте.

В 4.4.15 не работает одновременно обычный коннектор к Quik и RealTimeEmulationTrader. После подключения обычного коннектора, если вызвать подключение RealTimeEmulationTrader, то выдается ошибка. Если же подключение не вызывать, то RealTimeEmulationTrader остается в состоянии Disconnected, хотя основной коннектор подключился.

Спасибо:

Support

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


Добрый день

Спасибо за ваш отчёт. Пожалуйста, приведите текст ошибки.

Спасибо:

Георгий

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


Текст ошибки:

Название Время Тип Сообщение QuikTrader 01.01.0001 0:00:00 Info Connect BasketMessageAdapter 04.12.2018 18:09:18 Info Connecting 'Quik LUA. Transactions: 127.0.0.1:5001 Sender quik Target StockSharpTS'. BasketMessageAdapter 04.12.2018 18:09:18 Info Connecting 'Quik LUA. Market data: 127.0.0.1:5001 Sender quik Target StockSharpMD'. BasketMessageAdapter 04.12.2018 18:09:18 Error "System.ArgumentException: Родитель у источника Quik LUA. Market data: 127.0.0.1:5001 Sender quik Target StockSharpMD уже установлен в BasketMessageAdapter. Имя параметра: value в StockSharp.Logging.BaseLogSource.set_Parent(ILogSource value) в StockSharp.Algo.Testing.RealTimeEmulationTrader1.RealTimeEmulationMarketDataAdapter.set_Parent(ILogSource value) в StockSharp.Messages.MessageAdapterWrapper.set_Parent(ILogSource value) в StockSharp.Messages.MessageAdapterWrapper.set_Parent(ILogSource value) в StockSharp.Messages.MessageAdapterWrapper.set_Parent(ILogSource value) в StockSharp.Messages.MessageAdapterWrapper.set_Parent(ILogSource value) в StockSharp.Messages.MessageAdapterWrapper.set_Parent(ILogSource value) в StockSharp.Messages.MessageAdapterWrapper.set_Parent(ILogSource value) в StockSharp.Messages.MessageAdapterWrapper.set_Parent(ILogSource value) в StockSharp.Messages.MessageAdapterWrapper.set_Parent(ILogSource value) в StockSharp.Messages.MessageAdapterWrapper.set_Parent(ILogSource value) в StockSharp.Algo.BasketMessageAdapter.<>c__DisplayClass89_0.<OnSendInMessage>b__1(IMessageAdapter a) в System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) в StockSharp.Algo.BasketMessageAdapter.OnSendInMessage(Message message) в StockSharp.Messages.MessageAdapter.SendInMessage(Message message)" RealTimeEmulationTrader1 04.12.2018 18:09:18 Error "System.InvalidOperationException: Сообщение 'Connect,T(L)=2018/12/04 18:09:18.660,Error=Родитель у источника Quik LUA. Market data: 127.0.0.1:5001 Sender quik Target StockSharpMD уже установлен в BasketMessageAdapter. Имя параметра: value' привело к ошибке обработки. ---> System.Collections.Generic.KeyNotFoundException: Данный ключ отсутствует в словаре. в System.Collections.Generic.Dictionary2.get_Item(TKey key) в Ecng.Collections.SynchronizedDictionary2.get_Item(TKey key) в StockSharp.Algo.Connector.ProcessConnectMessage(BaseConnectionMessage message) в StockSharp.Algo.Connector.OnProcessMessage(Message message) --- Конец трассировки внутреннего стека исключений ---" Quik LUA. Transactions 04.12.2018 18:09:18 Info Connect to 127.0.0.1:5001... Quik LUA. Transactions 04.12.2018 18:09:18 Info Connect to 127.0.0.1:5001 is OK. Quik LUA. Transactions 04.12.2018 18:09:18 Info Sending logon to 127.0.0.1:5001... Quik LUA. Transactions 04.12.2018 18:09:18 Info Logon sent to 127.0.0.1:5001 OK. Quik LUA. Transactions 04.12.2018 18:09:18 Info Start message processing. Quik LUA. Market data 04.12.2018 18:09:18 Info Connect to 127.0.0.1:5001... Quik LUA. Market data 04.12.2018 18:09:18 Info Connect to 127.0.0.1:5001 is OK. Quik LUA. Market data 04.12.2018 18:09:18 Info Sending logon to 127.0.0.1:5001... Quik LUA. Market data 04.12.2018 18:09:18 Info Logon sent to 127.0.0.1:5001 OK. Quik LUA. Market data 04.12.2018 18:09:18 Info Start message processing. BasketMessageAdapter 04.12.2018 18:09:18 Info Connected to 'Quik LUA. Transactions: 127.0.0.1:5001 Sender quik Target StockSharpTS'. BasketMessageAdapter 04.12.2018 18:09:18 Info Connected to 'Quik LUA. Market data: 127.0.0.1:5001 Sender quik Target StockSharpMD'.

Спасибо:

Support

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


Добрый день

Ошибка не подтвердилась. Проверка была на примере SampleRealtimeEmulation

Спасибо: Георгий

Георгий

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


Спасибо. Нашел в чем у меня были грабли. Теперь работает. Еще возникло два вопроса:

  1. Не совсем понятно за что отвечает флаг ownAdapter в RealTimeEmulationTrader. У меня если его не поставить в false, то не работает. Подключение прописываю в коде, а не так как это делается в SampleRealtimeEmulation
  2. Если я хочу чтобы одна страта работала на нормальном коннекторе, а другая на реалтайм эмуляторе, то надо в явном виде в страту коннектор передавать или правильно как-то по другому делать?
Спасибо:

Георгий

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


Чтобы воспроизвести ошибку на примере RealTimeEmulationTrader нужно: в настройках подключения добавить "Quik Lua. Trabsactions" и "Quik Lua. Market Data", в коде в строке

_emuConnector = new RealTimeEmulationTrader<IMessageAdapter>(_realConnector.MarketDataAdapter ?? new PassThroughMessageAdapter(new IncrementalIdGenerator()), _emuPf, false);

удаляем false в конце, т.е. должно быть

_emuConnector = new RealTimeEmulationTrader<IMessageAdapter>(_realConnector.MarketDataAdapter ?? new PassThroughMessageAdapter(new IncrementalIdGenerator()), _emuPf);

Запускаем. Ошибка:

Название Время Тип Сообщение Connector 01.01.0001 0:00:00 Info Connect RealTimeEmulationTrader1 01.01.0001 0:00:00 Info Connect BasketMessageAdapter 16.12.2018 23:05:18 Info Connecting 'Quik LUA. Transactions: localhost:5001 Sender quik Target StockSharpTS'. BasketMessageAdapter 16.12.2018 23:05:18 Error "System.ArgumentException: Родитель у источника Quik LUA. Market data: localhost:5001 Sender quik Target StockSharpMD уже установлен в BasketMessageAdapter. Имя параметра: value в StockSharp.Logging.BaseLogSource.set_Parent(ILogSource value) в StockSharp.Algo.Testing.RealTimeEmulationTrader1.RealTimeEmulationMarketDataAdapter.set_Parent(ILogSource value) в StockSharp.Algo.BasketMessageAdapter.<>c__DisplayClass89_0.b__1(IMessageAdapter a) в System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func2 keySelector, Func2 elementSelector, IEqualityComparer1 comparer) в StockSharp.Algo.BasketMessageAdapter.OnSendInMessage(Message message) в StockSharp.Messages.MessageAdapter.SendInMessage(Message message)" RealTimeEmulationTrader1 16.12.2018 23:05:18 Error "System.InvalidOperationException: Сообщение 'Connect,T(L)=2018/12/16 23:05:18.897,Error=Родитель у источника Quik LUA. Market data: localhost:5001 Sender quik Target StockSharpMD уже установлен в BasketMessageAdapter. Имя параметра: value' привело к ошибке обработки. ---> System.Collections.Generic.KeyNotFoundException: Данный ключ отсутствует в словаре. в System.ThrowHelper.ThrowKeyNotFoundException() в System.Collections.Generic.Dictionary2.get_Item(TKey key) в Ecng.Collections.SynchronizedDictionary`2.get_Item(TKey key) в StockSharp.Algo.Connector.ProcessConnectMessage(BaseConnectionMessage message) в StockSharp.Algo.Connector.OnProcessMessage(Message message) --- Конец трассировки внутреннего стека исключений ---" Quik LUA. Transactions 16.12.2018 23:05:18 Info Connect to localhost:5001... Quik LUA. Transactions 16.12.2018 23:05:18 Info Connect to localhost:5001 is OK. Quik LUA. Transactions 16.12.2018 23:05:18 Info Sending logon to localhost:5001... Quik LUA. Transactions 16.12.2018 23:05:18 Info Logon sent to localhost:5001 OK. ......

Спасибо:

Support

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


Добрый день

Параметр ownAdapter указывает, будет ли эмулятор контролировать время жизни реального подключения. В вашем случае он должен быть false, так как у вас есть ещё и реальная торговля.

Спасибо:
< 1 2 

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

loading
clippy