Alexander
|
Date: 7/1/2011
Проблема известна, занимаемся.
|
|
|
|
Thanks:
|
|
|
|
|
|
Mikhail Sukhov
|
Date: 7/1/2011
hobo:
Объясните, что изменяет число позиций в PositionManager стратегии?
Я использую стратегию на основе TimeFrameStrategy и столкнулся с такой ситуацией:
Изначально позиций не было, затем стратегия выставила заявку, она выполнилась. Однако, PositionManager.Position остался равным 0.
А стратегия выводит событие NewMyTrades + OrdersChanged? StrategyPositionManager рассчитывает по 2-ум типам данных позицию. По-умолчанию, через баланс заявок.
|
|
|
|
Thanks:
|
|
|
|
|
|
hobo
|
Date: 7/2/2011
Вывожу только NewMyTrades.
Понятно, значит было что-то не так с заявками и в NewMyTrades мне ничего не увидеть. Повывожу-ка я OrdersChanged, может еще раз проявится подобное, а пока свой подсчет позиции буду использовать.
|
|
|
|
Thanks:
|
|
|
|
|
|
hobo
|
Date: 7/12/2011
|
|
|
|
|
Сегодня опять повторился неправильный подсчет.
Вот лог выхода из позиции, равной 1, когда сбился подсчет. Ничего необычного в логе я лично не вижу[blink]
Позиций(orig) - это base.PositionManager.Position
По сделкам - мой подсчет внутри OnNewTrades
SBLSS 12.07.2011 12:28:54.455 SL зарегистрировали ордер 4365160817
SBLSS 12.07.2011 12:28:54.688 OnOrdersChanged. Сейчас позиций(orig)=1, по сделкам=1. order.Direction=Sell. order.ID=4365160817. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:28:54.688 OnOrdersChanged. Сейчас позиций(orig)=1, по сделкам=1. order.Direction=Sell. order.ID=4365160817. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:28:54.689 OnNewMyTrades. 1ая_часть_лога_по_OnNewMyTrades
SBLSS 12.07.2011 12:28:54.689 OnNewMyTrades. 1ая_часть_лога_по_OnNewMyTrades
SBLSS 12.07.2011 12:28:54.689 OnOrdersChanged. Сейчас позиций(orig)=1, по сделкам=0. order.Direction=Sell. order.ID=4365160817. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:28:54.689 OnNewMyTrades. 2ая_часть_лога_по_OnNewMyTrades
SBLSS 12.07.2011 12:28:54.689 OnOrdersChanged. Сейчас позиций(orig)=1, по сделкам=0. order.Direction=Sell. order.ID=4365160817. order.Status=Accepted. order.State=Done
|
|
|
|
Thanks:
|
|
|
|
|
|
Alexander
|
Date: 7/12/2011
Тут разница 1мс, покажите лог хотя бы через 100мс.
|
|
|
|
Thanks:
|
|
|
|
|
|
hobo
|
Date: 7/12/2011
|
|
|
|
|
100 мс вперед?
Я бы рад показать хоть 100 секунд, но я - не скальпер и после этого куска несколько минут в логе просто ничего нет, ни строчки. Плюс я не вывожу в каждой итерации позицию в лог.
Вот следующий вход и выход, уже со сбившимся подсчетом.
SBLSS 12.07.2011 12:37:09.578 Зарегистрировали ордер, id = 4365407898
SBLSS 12.07.2011 12:37:09.994 OnOrdersChanged. Сейчас позиций(orig)=2, по сделкам=0. order.Direction=Buy. order.ID=4365407898. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:37:09.994 OnOrdersChanged. Сейчас позиций(orig)=2, по сделкам=0. order.Direction=Buy. order.ID=4365407898. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:37:09.994 OnOrdersChanged. Сейчас позиций(orig)=2, по сделкам=0. order.Direction=Buy. order.ID=4365407898. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:37:10.082 OnNewMyTrades. Сейчас позиций=1
SBLSS 12.07.2011 12:37:10.083 OnNewMyTrades. Произошла сделка 349859601. Исходный ордер 4365407898 с направлением Buy
SBLSS 12.07.2011 12:37:10.083 OnNewMyTrades.
SBLSS 12.07.2011 12:37:11.237 SL от сделки 349859601
SBLSS 12.07.2011 12:37:14.434 SL зарегистрировали ордер 4365410450
SBLSS 12.07.2011 12:37:14.644 OnOrdersChanged. Сейчас позиций(orig)=1, по сделкам=1. order.Direction=Sell. order.ID=4365410450. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:37:14.644 OnOrdersChanged. Сейчас позиций(orig)=1, по сделкам=1. order.Direction=Sell. order.ID=4365410450. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:37:14.645 OnOrdersChanged. Сейчас позиций(orig)=1, по сделкам=1. order.Direction=Sell. order.ID=4365410450. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:37:14.661 OnNewMyTrades. Сейчас позиций=0
SBLSS 12.07.2011 12:37:14.661 OnNewMyTrades. Произошла сделка 349860428. Исходный ордер 4365410450 с направлением Sell
SBLSS 12.07.2011 12:37:14.661 OnNewMyTrades.
Строчки "OnNewMyTrades. Сейчас позиций=<>" выводятся сразу после собственного пересчета позиции по сделкам.
Если скажете что можно информативного выводить, я готов.
|
|
|
|
Thanks:
|
|
|
|
|
|
Alexander
|
Date: 7/12/2011
|
|
|
|
|
hobo:
100 мс вперед?
Я бы рад показать хоть 100 секунд, но я - не скальпер и после этого куска несколько минут в логе просто ничего нет, ни строчки. Плюс я не вывожу в каждой итерации позицию в лог.
Вот следующий вход и выход, уже со сбившимся подсчетом.
SBLSS 12.07.2011 12:37:09.578 Зарегистрировали ордер, id = 4365407898
SBLSS 12.07.2011 12:37:09.994 OnOrdersChanged. Сейчас позиций(orig)=2, по сделкам=0. order.Direction=Buy. order.ID=4365407898. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:37:09.994 OnOrdersChanged. Сейчас позиций(orig)=2, по сделкам=0. order.Direction=Buy. order.ID=4365407898. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:37:09.994 OnOrdersChanged. Сейчас позиций(orig)=2, по сделкам=0. order.Direction=Buy. order.ID=4365407898. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:37:10.082 OnNewMyTrades. Сейчас позиций=1
SBLSS 12.07.2011 12:37:10.083 OnNewMyTrades. Произошла сделка 349859601. Исходный ордер 4365407898 с направлением Buy
SBLSS 12.07.2011 12:37:10.083 OnNewMyTrades.
SBLSS 12.07.2011 12:37:11.237 SL от сделки 349859601
SBLSS 12.07.2011 12:37:14.434 SL зарегистрировали ордер 4365410450
SBLSS 12.07.2011 12:37:14.644 OnOrdersChanged. Сейчас позиций(orig)=1, по сделкам=1. order.Direction=Sell. order.ID=4365410450. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:37:14.644 OnOrdersChanged. Сейчас позиций(orig)=1, по сделкам=1. order.Direction=Sell. order.ID=4365410450. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:37:14.645 OnOrdersChanged. Сейчас позиций(orig)=1, по сделкам=1. order.Direction=Sell. order.ID=4365410450. order.Status=Accepted. order.State=Done
SBLSS 12.07.2011 12:37:14.661 OnNewMyTrades. Сейчас позиций=0
SBLSS 12.07.2011 12:37:14.661 OnNewMyTrades. Произошла сделка 349860428. Исходный ордер 4365410450 с направлением Sell
SBLSS 12.07.2011 12:37:14.661 OnNewMyTrades.
> Строчки "OnNewMyTrades. Сейчас позиций=<>" выводятся сразу после собственного пересчета позиции по сделкам.
>
> Если скажете что можно информативного выводить, я готов.
Не понял где ошибка.
PositionManager меняет позицию по событию Strategy.OrderChanged.
Вы тоже подписываетесь на это событие.
Событие поступает - срабатывает ваш обработчик. Вы берёте старую, не пересчитанную позицию, выводите.
Далее это событие поступает в PositionManager. Он пересчитывает, меняет.
Следующий вывод, где есть данные от PositionManager - в 12:37:14.644 - "Сейчас позиций(orig)=1", что верно.
Или я не так понял ваш вывод?
|
|
|
|
Thanks:
|
|
|
|
|
|
hobo
|
Date: 7/12/2011
Во втором - ничего, все верно, если учитывать, что подсчет позиции уже сбился к этому времени и весь этот кусок лога показывает на 1 позицию больше, чем было на самом деле.
12.07.2011 12:37:00.000 - Исходное состояние, стратегия вне рынка. Позиций фактически было 0.
12.07.2011 12:37:09.994 - "Сейчас позиций(orig)=2" - вот такой ситуации не было. PositionManager должен показывать 1 (ну пусть даже 0, если что-то еще не сработало, но никак не 2).
Следующий вывод, где есть данные от PositionManager - в 12:37:14.644 - "Сейчас позиций(orig)=1", что верно.
А к этому моменту опять было 0.
|
|
|
|
Thanks:
|
|
|
|
|
|
Alexander
|
Date: 7/12/2011
Следующий вывод, где есть данные от PositionManager - в 12:37:14.644 - "Сейчас позиций(orig)=1", что верно.
А к этому моменту опять было 0.
Так у вас по сделкам тоже 1 подсчитано.
подпишитесь на Strategy.OrderChanged, покажите что выводится в этом событии - какая заявка и как меняется.
Сейчас лучше 3.2.5 использовать, было несколько фиксов в стратегиях.
|
|
|
|
Thanks:
|
|
|
|
|
|
hobo
|
Date: 7/13/2011
Я смотрю, что "информативные" у меня логи, если я даже вас запутал [biggrin]
Alexander:
Так у вас по сделкам тоже 1 подсчитано.
SBLSS 12.07.2011 12:37:14.645 OnOrdersChanged. Сейчас позиций(orig)=1, по сделкам=1. - вот здесь "1 по сделкам" потому что OnNewMyTrades еще не вызвался и позиция не пересчитана пока.
SBLSS 12.07.2011 12:37:14.661 OnNewMyTrades. Сейчас позиций=0 - Вот тут уже пересчитана
Alexander:
подпишитесь на Strategy.OrderChanged, покажите что выводится в этом событии - какая заявка и как меняется.
Я это собственно и сделал, когда Михаил спросил, "А выводит ли?".
DoLog(
"OnOrdersChanged. Сейчас позиций(orig)=" + base.PositionManager.Position +
", по сделкам=" + base_PositionManager_Position +
". order.Direction=" + order.Direction +
". order.ID=" + order.Id +
". order.Status=" + order.Status +
". order.State=" + order.State
);
Заявка, правда, или не меняется или 3-4 раза одно и тоже выводится в лог.
|
|
|
|
Thanks:
|
|
|
|
|