Mikhail Sukhov
|
Date: 3/31/2010
SecurityPositionManager
|
|
Thanks:
|
|
|
|
|
Ilya Usenko
|
Date: 3/31/2010
Если были мои сделки внутри дня, то видимо покажет верное значение. А если купля - вчера, продажа - сегодня, то показывает отрицательную позицию. Как быть?
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/31/2010
Квик не хранит историю. Так что, сохраняйте свои сделки в файл.
|
|
Thanks:
|
|
|
|
|
Ilya Usenko
|
Date: 3/31/2010
При клике по клиентскому портфелю в квике, открывается таблица с информацией об остатках, лимитам на покупку, продажу. Вы не работаете с этой таблицей?
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/31/2010
Нет. Но как экспортировать портфель я показал в примере Sample
|
|
Thanks:
|
|
|
|
|
AndreiFX
|
Date: 3/31/2010
|
|
|
|
тут еще может быть ситуация подобная интересная: например за прошлый день было сделано n покупок=n продаж(т.е. в сумме 0). Иногда квик на следующий день запоминает часть из них и может быть такая ситуация,что на след. день с прошлого дня имеется например как бы несколько покупок или несколько продаж, хотя фактически баланс равен нулю. И из за этого могут быть проблемы. Я это решал вот так: у меня есть public ObservableCollection<MyOrderss> Trades { get; private set; } и в эту коллекцию с небольшими изменениями я заношу трэйды(но это к проблеме не относится) Далее когда трейды с истории получены и занесены в эту коллекцию делаю вот такую сортировку
int k = -1; for (int i = 0; i <= Trades.Count() - 2; i++) if (Trades[i].Time > Trades[i + 1].Time) k = i;
if (k != -1) { for (int i = k; i >=0; i--) Trades.Remove(Trades[i]); }
А потом чтобы получить суммарную позицию считаю вот так count = 0; foreach (MyOrderss x in Trades) { if (x.Direction == OrderDirections.Buy) count += 1 * x.Volume; if (x.Direction == OrderDirections.Sell) count -= 1 * x.Volume; }
да, получается деревянно, но зато работает и не глючит))
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/31/2010
Заметил, что Квик запоминает сделки и заявки на демо счете. Но там и сессия длится 23 часа, начиная с 3-ех ночи.
Только все равно не понял, какие проблемы, если баланс все равно 0?
|
|
Thanks:
|
|
|
|
|
AndreiFX
|
Date: 4/1/2010
|
|
|
|
У меня квик реал, но тоже иногда запоминает часть сделок с прошлого дня Проблемы если фактический баланс равен нулю могут быть следующие. У меня например робот смотрит баланс таким образом count = 0; foreach (MyOrderss x in Trades) { if (x.Direction == OrderDirections.Buy) count += 1 *x.Volume; if (x.Direction == OrderDirections.Sell) count -= 1 *x.Volume; }
И если count!=0 то он ничего не делает, т.е. дальше не торгует. И может возникнуть ситуация, когда фактический баланс равен нулю, но если посмотреть по трейдам вышеописанным образом, то он не будет равен нулю(т.к. тут учитывается часть сделок с прошлой сессии). Также если посмотреть на дату и время этих сделок, то получается что "вчерашние" сделки имеют сегодняшнюю дату, т.е. например текущее время 12 00, а у нас уже есть сделки как бы за сегодня со временем 18 00 ит.д...тоже могут быть проблемы если отслеживается время открытия сделок.
...я не прошу решения этого вопроса, я просто поделился наблюдениями и мыслями какие теоретически могут быть ошибки.
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 4/1/2010
Да, теперь понятно, спасибо.
Небольшое замечание по коду. В TraderHelper есть метод GetPosition, который делает тоже самое, что и Ваш цикл. Только Вы его использовать сразу не сможете, потому что у Вас собственные типы введены. Как совет - следуйте Бритве Оккамы.
|
|
Thanks:
|
|
|
|