RealTimeEmulationTrader
Atom Ответить
11.02.2017


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

var quikMd = new LuaFixMarketDataMessageAdapter(new MillisecondIncrementalIdGenerator())
{
Login = "quik",
Password = "quik".To<SecureString>(),
Address = QuikTrader.DefaultLuaAddress,
TargetCompId = "StockSharpMD",
SenderCompId = "quik",
RequestAllSecurities = true
};

_trader = new RealTimeEmulationTrader<IMessageAdapter>(quikMd);

_portfolio = new Portfolio { Name = "test account", BeginValue = 1000000, CurrentValue = 1000000};

По кнопке запускаю стратегию
Код
class Strategy01:Strategy
{
protected override void OnStarted()
{
this.AddInfoLog("---Start---{0}---{1}---{2}---{3}---{4}---", Connector, Security, Portfolio, Portfolio.BeginValue, Portfolio.CurrentValue);
var order = this.BuyAtMarket();
RegisterOrder(order);
base.OnStarted();

}


В логе ошибка недостаточно средств (((
RealTimeEmulationTrader`1 11.02.2017 18:32:47 Info Создан новый портфель Симулятор.
RealTimeEmulationTrader`1 11.02.2017 18:33:01 Info Инструмент SBER@QJSIM зарегистрирован на получение рыночных данных для MarketDepth.
RealTimeEmulationTrader`1 11.02.2017 18:33:01 Info Инструмент SBER@QJSIM зарегистрирован на получение рыночных данных для Level1.
RealTimeEmulationTrader`1 11.02.2017 18:33:01 Info Инструмент SBER@QJSIM зарегистрирован на получение рыночных данных для Trades.
RealTimeEmulationTrader`1 11.02.2017 18:33:01 Info RegisterOrder: 0/ Покупка Цена=0 Объем=1 Сост=None Бал=0
RealTimeEmulationTrader`1 11.02.2017 18:33:01 Info New order: 66767638/ Покупка Цена=0 Объем=1 Сост=Pending Бал=1
S_SBER@QJSIM_test account 11.02.2017 18:33:01 Info Стратегия Запущена. [0,-1]. Позиция 0.
S_SBER@QJSIM_test account 11.02.2017 18:33:01 Info ---Start---RealTimeEmulationTrader`1---SBER@QJSIM---test account---1000000---1000000---
S_SBER@QJSIM_test account 11.02.2017 18:33:01 Info Регистрация новой Market (0x65FB2A) заявки на Buy с ценой 0 и объемом 1.
SecurityMarketEmulator 11.02.2017 18:33:01 Info Заявка 66767638 не зарегистрирована. Причина 'На счету test account недостаточно денег для регистрации заявки 66767638. Необходимо 131.92, имеется 0, заблокировано 0.00.'.



Спасибо:




42 Ответов
1 2  >
Support

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


Проверим..
Спасибо:

Support

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


Вот так попробуйте.
_portfolio = new Portfolio { Name = "test", BeginValue = 1000000 };
_connector = new RealTimeEmulationTrader<IMessageAdapter>(quikMd, _portfolio);
Спасибо:

Prival

Фотография
Курсы
Дата: 16.02.2017
Ответить


Спасибо помогло. Но не до конца. Заявка отправляется, но не появляется позиций. Все время висит статус -> Регистрация
https://yadi.sk/i/njAg6-vh3EAwKs
Пробовал смотреть примеры, но к сожалению из примера SampleRealTimeEmulation убран вариант подключения к квику.
Может у когото есть простой пример где все работает ? Типа нажали кнопу....появилась позиция по фьючерсу. Заранее Спасибо.
Автор топика
Спасибо:

Support

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


Скорее всего это баг.
Спасибо:

Prival

Фотография
Курсы
Дата: 17.02.2017
Ответить


Написал на githabe. Приложил полный код. https://github.com/Stock...rp/StockSharp/issues/291
Прикладываю его сюда. Мне кажется это я что то не так делаю, т.к. учусь (разбираюсь с библиотекой). Буду исренне удивлен если это действительно баг, т.к. мне кажется эта функция должна быть очень востребована, А пишу про неё только я.
Если не трудно подтвердите что у Вас тоже позиция равна 0.
Заранее благодарю
Автор топика
Спасибо:

Support

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


На ГИте Михаил писав Вам, чтобы проверили на последней версии... Проверяли?
Спасибо:

Support

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


protected override void OnStarted()
{
Console.WriteLine(@"---Start---{0}---{1}---{2}---{3}---{4}---{5}", Connector, Security, Portfolio, Portfolio.BeginValue, Portfolio.CurrentValue, Position);
base.OnStarted();
var order = this.BuyAtLimit((decimal)117400);
RegisterOrder(order);
}
В данному контексте base.OnStarted() нужно на первое место поставить..
Спасибо:

Prival

Фотография
Курсы
Дата: 20.02.2017
Ответить


1. base.OnStarted() переставил на первое место. - не помогло
2. Скачал 4.3.21 перестал находится _ri
3. Собрал проект по новой, с нуля. событие _trader.NewSecurities += - не срабатывает, инструменты не приходят. Хотя раньше приходили.






Автор топика
Спасибо:

Support

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


1. base.OnStarted() - и не должно было помочь... Просто base.OnStarted() должен быть вызван раньше, чем начнет выполняться основная логика стратегии..
2. В Квике скрипт Lua из сборки 4.3.21 подключаете?
Спасибо:

Prival

Фотография
Курсы
Дата: 21.02.2017
Ответить


1. Скрипт lua из сборки 4.3.21 но инструменты не приходят (((
2. Скажите у вас TestBag01.rar нормально все работает ? или тоже не приходят инструменты ? Я возможно как то неправильно инициализирую, а как правильно не понимаю, в прошлой сборке инструменты приходили без проблем
Заранее спасибо.
Автор топика
Спасибо:

Support

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


Вот этот пример коннектора попробуйте.
Спасибо:

Prival

Фотография
Курсы
Дата: 22.02.2017
Ответить


Support Перейти
Вот этот пример коннектора попробуйте.

Тоже не работает выдает ошибку.
переменная _portfolio=null ((
Автор топика
Спасибо:

Support

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


Вот так измените: _connector.NewPortfolios += portfolios =>
{
portfolios.ForEach(portfolio =>
{
Console.WriteLine("Получен портфель: {0}", portfolio.Name);
_connector.RegisterPortfolio(portfolio);
_portfolio = portfolio;
});
};
Спасибо:

Prival

Фотография
Курсы
Дата: 27.02.2017
Ответить


Спасибо всем кто помогает. С вашими подсказками многое получилось. Файл прилагаю
Осталось 2 вопроса (проблемы)
1. Console.WriteLine(@"Событие появления новых сделок, по нашим заявкам " + _strategy.MyTrades.Count());
выдает 0
2. Не срабатывает событие Connector.SecuritiesChanged +=...
соответсвенно не понимаю как получить security.LastTrade.Price, открытый интерес и т.д.
3. Две строки пришлось закоментировать, там все время ошибки, но думаю это не критично
//_trader.EmulationAdapter.Emulator.Settings.TimeZone = TimeHelper.Est;
//_trader.EmulationAdapter.Emulator.Settings.ConvertTime = true;

Заранее благодарю за помощь (подсказки)
Автор топика
Спасибо:

Support

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


Вот так можно данные в ValuesChanged получать.. Просто нужное поле из перечисления Level1Fields выбираете...


Но для Вашей задачи Вам проще всего подписаться на событие NewTrades и и получать обычные сделки по нужному инструменту... В классе Trade есть поле OpenInterest... Кроме того в этом событии в ы получите историю по сделкам (и OI) c с начала торговой сессии, т.е. с 19-00 предыдущего дня. Чтобы получать сделки с OI нужно 1. Чтобы инструмент был добавлен в таблицу обезличенных сделок, 2. в этой таблице должно быть добавлено поле Открытые позиции..
Спасибо:

Support

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


.
Спасибо:

Prival

Фотография
Курсы
Дата: 16.03.2017
Ответить


Натолкнулся еще на 3 неточности (проблемы). Подключаюсь к реальному счету в режиме Симуляции.
1. Иногда сделки проходят по неправильным ценам. У фьючерса RIM7 цена должна быть кратка 10, но иногда это не так.
Код
Код
private void Connector_NewMyTrades(IEnumerable<MyTrade> trades)
{
foreach (var trade in trades)
{
Console.WriteLine(@"{0} Прошла сделка {5} {4} по цене {1}, объём {2}, направление {3}.",
TimeHelper.Now.TimeOfDay, trade.Trade.Price, trade.Trade.Volume, trade.Order.Direction,
trade.Trade.Security.Code, trade.Trade.Id);
}
}


Окно вывода
14:06:32.6568830 Прошла сделка 11 RIM7 по цене 108588, объём 2, направление Sell.
14:06:39.7736608 Прошла сделка 12 RIM7 по цене 108610, объём 1, направление Buy.
14:06:39.7791045 Прошла сделка 13 RIM7 по цене 108610, объём 1, направление Buy.
14:07:01.4183506 Прошла сделка 14 RIM7 по цене 108590, объём 2, направление Sell.
14:07:14.6335282 Прошла сделка 15 RIM7 по цене 108552, объём 2, направление Buy.
14:07:15.4650348 Прошла сделка 16 RIM7 по цене 108530, объём 1, направление Sell.
14:07:15.4652660 Прошла сделка 17 RIM7 по цене 108529, объём 1, направление Sell.

2. Вторая проблема не могу получить AveragePrice

20:00:01.9982056 Заявка Sell RIM7 полностью исполнена Volume=1. Позиция -1 AveragePrice=0

Код для проверки
...
var order = this.SellAtMarket(volume);
...
Код
order
.WhenMatched(this.Connector)
.Do(() =>
{
Console.WriteLine(@"{0} Заявка {2} {3} полностью исполнена Volume={4}. Позиция {1} AveragePrice={5}", TimeHelper.Now.TimeOfDay, PositionManager.Position, order.Direction, order.Security.Code, order.Volume, TraderHelper.GetAveragePrice(order, Connector) );

})
.Once()
.Apply(this);


3. Если сделать переворотную систему (мы все время в рынке), т.е. первый вход 1 контрактом Volumeу=1, а затем все время переворачиваемся 2*Volume, то через некоторое время приблизительно на 30-40 перевороте. Не хватает денег ...

2017/03/16 20:13:57.674| |S_RIM7@FORTS_Симулятор|Новая Buy сделка 24 по цене 109380 на 2 заявки 71722071.
2017/03/16 20:14:00.464| |S_RIM7@FORTS_Симулятор|Регистрация новой Market (0xDF6003) заявки на Sell с ценой 0 и объемом 2.
2017/03/16 20:14:00.465| |S_RIM7@FORTS_Симулятор|Новая позиция: (S#:RIM7@FORTS, Native:,Type:Future, Симулятор)=-1.
2017/03/16 20:14:00.465| |S_RIM7@FORTS_Симулятор|Заявка 71722072 (0xDF6003) больше не активна.
2017/03/16 20:14:00.465| |S_RIM7@FORTS_Симулятор|Новая Sell сделка 25 по цене 109360 на 1 заявки 71722072.
2017/03/16 20:14:00.465| |S_RIM7@FORTS_Симулятор|Новая Sell сделка 26 по цене 109359 на 1 заявки 71722072.
2017/03/16 20:14:16.808| |S_RIM7@FORTS_Симулятор|Регистрация новой Market (0x6FABE9) заявки на Buy с ценой 0 и объемом 2.
2017/03/16 20:14:16.808| |S_RIM7@FORTS_Симулятор|Новая позиция: (S#:RIM7@FORTS, Native:,Type:Future, Симулятор)=1.
2017/03/16 20:14:16.808| |S_RIM7@FORTS_Симулятор|Заявка 71722073 (0x6FABE9) больше не активна.
2017/03/16 20:14:16.808| |S_RIM7@FORTS_Симулятор|Новая Buy сделка 27 по цене 109380 на 2 заявки 71722073.
2017/03/16 20:15:07.679| |S_RIM7@FORTS_Симулятор|Регистрация новой Market (0x2CE1F40) заявки на Sell с ценой 0 и объемом 2.
2017/03/16 20:15:07.680| |S_RIM7@FORTS_Симулятор|Новая позиция: (S#:RIM7@FORTS, Native:,Type:Future, Симулятор)=-1.
2017/03/16 20:15:07.680| |S_RIM7@FORTS_Симулятор|Заявка 71722074 (0x2CE1F40) больше не активна.
2017/03/16 20:15:07.680| |S_RIM7@FORTS_Симулятор|Новая Sell сделка 28 по цене 109380 на 2 заявки 71722074.
2017/03/16 20:15:20.863| |S_RIM7@FORTS_Симулятор|Регистрация новой Market (0x1500FC8) заявки на Buy с ценой 0 и объемом 2.
2017/03/16 20:15:20.870|Error |S_RIM7@FORTS_Симулятор|Заявка 71722075 (0x1500FC8) не была зарегистрирована по причине 'Коллекция была изменена после создания экземпляра перечислителя.'.
2017/03/16 20:15:20.870| |S_RIM7@FORTS_Симулятор|Заявка 71722075 (0x1500FC8) больше не активна.
2017/03/16 20:15:20.906| |S_RIM7@FORTS_Симулятор|Регистрация новой Market (0x2CE342) заявки на Buy с ценой 0 и объемом 2.
2017/03/16 20:15:20.994| |S_RIM7@FORTS_Симулятор|Новая позиция: (S#:RIM7@FORTS, Native:,Type:Future, Симулятор)=0.
2017/03/16 20:15:20.994| |S_RIM7@FORTS_Симулятор|Заявка 71722076 (0x2CE342) больше не активна.
2017/03/16 20:15:20.994| |S_RIM7@FORTS_Симулятор|Новая Buy сделка 29 по цене 109420 на 1 заявки 71722076.
2017/03/16 20:15:20.994| |S_RIM7@FORTS_Симулятор|Регистрация новой Market (0x31A0F6C) заявки на Buy с ценой 0 и объемом 1.
2017/03/16 20:15:20.995| |S_RIM7@FORTS_Симулятор|Новая позиция: (S#:RIM7@FORTS, Native:,Type:Future, Симулятор)=0.
2017/03/16 20:15:20.995| |S_RIM7@FORTS_Симулятор|Заявка 71722077 (0x31A0F6C) больше не активна.
2017/03/16 20:15:21.041| |S_RIM7@FORTS_Симулятор|Регистрация новой Market (0x2E71A07) заявки на Buy с ценой 0 и объемом 1.
2017/03/16 20:15:21.041|Error |S_RIM7@FORTS_Симулятор|Заявка 71722078 (0x2E71A07) не была зарегистрирована по причине 'На счету Симулятор недостаточно денег для регистрации заявки 71722078. Необходимо 1006189.99, имеется 999685, заблокировано 992018.30.'.
2017/03/16 20:15:21.041| |S_RIM7@FORTS_Симулятор|Заявка 71722078 (0x2E71A07) больше не активна.
2017/03/16 20:15:21.483| |S_RIM7@FORTS_Симулятор|Регистрация новой Market (0x1998D3) заявки на Buy с ценой 0 и объемом 1.
2017/03/16 20:15:21.483|Error |S_RIM7@FORTS_Симулятор|Заявка 71722079 (0x1998D3) не была зарегистрирована по причине 'На счету Симулятор недостаточно денег для регистрации заявки 71722079. Необходимо 1006189.99, имеется 999685, заблокировано 992018.30.'.
2017/03/16 20:15:21.483| |S_RIM7@FORTS_Симулятор|Заявка 71722079 (0x1998D3) больше не активна.

Заранее благодарю за помощь.
Автор топика
Спасибо:

Support

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


Нужен код и логи под debug в файле..
Спасибо:

Prival

Фотография
Курсы
Дата: 17.03.2017
Ответить


Код + лог.
Автор топика
Спасибо:

Support

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


Хорошо, передадим разработчикам..
Спасибо:

Prival

Фотография
Курсы
Дата: 29.03.2017
Ответить


Хотелось бы получить информацию, как и что делать (прошло уже больше недели). Сегодня обновилась версия квика, проверил на ней работу робота TestBag04.rar

Все ошибки сохранилось.
1. Сделки проходят по неверным цена
19:14:18.8260759 Прошла сделка 7 RIM7 по цене 112180, объём 2, направление Buy.
19:14:18.8265779 Заявка Sell RIM7 полностью исполнена Volume=2. Позиция -1 AveragePrice=0
19:14:18.8266919 Прошла сделка 8 RIM7 по цене 112178, объём 1, направление Sell.
19:14:18.8268459 Прошла сделка 9 RIM7 по цене 112177, объём 1, направление Sell.

2. AveragePrice=0 может я его както не так запрашиваю ?

3. И снова нехватает денег (( уже на 9-м перевороте.
Заявка 69154072 (0xF8B369) не была зарегистрирована по причине 'На счету Симулятор недостаточно денег для регистрации заявки 69154072. Необходимо 1026974.88, имеется 999992, заблокировано 998447.80.'.
Автор топика
Спасибо:

Support

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


Ошибки переданы, когда будут фиксы я не знаю..
Спасибо:

Prival

Фотография
Курсы
Дата: 07.04.2017
Ответить


Вышла новая версия. 4.3.23
К сожалению все ошибки остались (((

19:29:04.1517536 Заявка Buy RIM7 полностью исполнена Volume=1. Позиция 1 AveragePrice=0
19:29:04.1685022 Прошла сделка 1 RIM7 по цене 111122, объём 1, направление Buy.

2017/04/07 19:29:08.871| |S_RIM7@FORTS_Симулятор|Регистрация новой Market (0x1E7434C) заявки на Sell с ценой 0 и объемом 2.
2017/04/07 19:29:08.872| |S_RIM7@FORTS_Симулятор|Новая позиция: (S#:RIM7@FORTS, Native:,Type:Future, Симулятор)=1.
2017/04/07 19:29:08.872| |S_RIM7@FORTS_Симулятор|Заявка 69934145 (0x1E7434C) больше не активна.
2017/04/07 19:29:08.969| |S_RIM7@FORTS_Симулятор|Регистрация новой Market (0xDF06CA) заявки на Sell с ценой 0 и объемом 2.
2017/04/07 19:29:08.969|Error |S_RIM7@FORTS_Симулятор|Заявка 69934146 (0xDF06CA) не была зарегистрирована по причине 'На счету Симулятор недостаточно денег для регистрации заявки 69934146. Необходимо 4667460, имеется 1000000, заблокировано 4445200.'.
2017/04/07 19:29:08.969| |S_RIM7@FORTS_Симулятор|Заявка 69934146 (0xDF06CA) больше не активна.

Пожалуйста обратите внимание разработчиков.
1. RIM7 по цене 111122 такого не может быть, цена должна быть кратна 10
2. order.GetAveragePrice(Connector) выдает ноль. Может я как то неправильно запрашиваю ? подскажите как правильно узнать среднюю цену позиции
3. Несколько переворотов и снова нехватает денег (лог выше) .... (((
Автор топика
Спасибо:

Support

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


Сделайте следующую проверку с последней версией: посмотрите добавляются ли сделки в коллекцию strategy.MyTrades
Спасибо:

Support

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


См. также политику по ошибкам и исправлениям здесь: http://stocksharp.ru/art...-razrabatyvaemym-ficham/
Спасибо:
1 2  >

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

loading
clippy