SmartQuant Discussion
http://www.smartquant.com/forums/

Обновление Strategy.Position
http://www.smartquant.com/forums/viewtopic.php?f=65&t=8956
Page 1 of 1

Author:  newDave [ Mon Mar 14, 2011 10:25 am ]
Post subject:  Обновление Strategy.Position

Приветствую,
Есть задача записать в Strategy.Position данные о позиции реально находящейся на брокерском счете.
Уже подсказали что есть такие вещи как BrokerInfo и BrokerAccount, однако в API quide про них совсем немного. Есть ли какие то стандартные способы условно говоря присвоить Strategy.Position=BrokerPosition ? Может уже сущевтвуют какие то методы или пример кода ? Если нет возможности обновлять сразу набор свойст Position, то собственно – как это делать по одному тоже не понятно, они все readonly. Provider основной- SmartCom, для Quik2Quant - тоже интересно, я им временно пользуюсь.

Кроме того вопрос, обновляет ли OpenQuant самостоятельно Strategy.Postition корректно при возникновении таких событий как OnOrderCancelled, OnOrderPartiallyFilled, OnOrderRejected, или надо саму это как то кодить ?

Спасибо.

Author:  newDave [ Tue Mar 15, 2011 5:54 pm ]
Post subject:  Re: Обновление Strategy.Position

Ну что есть какие то идеи, рекомендации ?
У меня это пожалуй самый важный кусок остался в стратегии из белых пятен до выхода в реальный Live.

Спасибо

Author:  newDave [ Tue Mar 15, 2011 7:10 pm ]
Post subject:  Re: Обновление Strategy.Position

В данной ветке http://www.smartquant.com/forums/viewtopic.php?f=60&t=6635&hilit=OnOrderRejected+Position отыскал такой код:
Code:
         BrokerAccountList Accounts = DataManager.GetBrokerInfo("IB").Accounts;
         foreach (BrokerAccount A in Accounts)
            if(A.Name==Account)
            {
               Console.WriteLine(A.Name + " BuyingPower=" + A.BuyingPower);
               foreach(BrokerPosition P in A.Positions)
               {
                  Console.WriteLine(A.Name + "\tSymbol= " + P.Symbol + "\tLongQty=" + P.LongQty +

"\tShortQty=" + P.ShortQty);
                  if(P.LongQty>0) {
                     Portfolio.Add(Clock.Now,TransactionSide.Buy,P.LongQty,Instruments[P.Symbol],0);
                  }
                  if(P.ShortQty>0) {
                     Portfolio.Add(Clock.Now,TransactionSide.Sell,P.ShortQty,Instruments[P.Symbol],0);
                  }
               }
            }

Полагаю он делает ровно то что мне нужно.
И ключевые строки которые синхронизируют Strategy.Position c тем что реально обранужено на моем счете
Portfolio.Add(Clock.Now,TransactionSide.Buy,P.LongQty,Instruments[P.Symbol],0)
Portfolio.Add(Clock.Now,TransactionSide.Sell,P.ShortQty,Instruments[P.Symbol],0)
Я прав ?
Единственное совершенно не понятно что за свойство BuyingPower ?

Author:  newDave [ Wed Mar 16, 2011 12:40 pm ]
Post subject:  Re: Обновление Strategy.Position

В итоге с Quik не работает у меня данная строчка :(

BrokerAccountList Accounts = DataManager.GetBrokerInfo("Quik").Accounts
У кого нибудь есть положительный опыт работы с Квиковским "BrokerInfo" ?

Author:  Dr. Anton Fokin [ Wed Mar 16, 2011 3:30 pm ]
Post subject:  Re: Обновление Strategy.Position

Так а чего бы вам не спросить разработчиков квик адаптера? Другое дело что у нас в UserProvider в OpenQuant не всунуть никуда BrokerInfo, поэтому нам сначала надо доработать этот момент, а потом надо чтобы разработчики квика добавили этот запрос к себе.

Author:  newDave [ Wed Mar 16, 2011 6:19 pm ]
Post subject:  Re: Обновление Strategy.Position

Ну, смотрите, наверно стоит вам доработать. Имхо без такой возможности серьезную стрратегию в Лив выпускать страшновато. А OQ все же серьезный инструмент :)

Page 1 of 1 All times are UTC + 3 hours
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/