Как определить текущую позицию по инструменту?
Atom Ответить
31.03.2010


Даже если мои сделки совершались в другой программе

Теги:


Спасибо:




9 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 31.03.2010
Ответить


SecurityPositionManager

Спасибо:

Ilya Usenko

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


Если были мои сделки внутри дня, то видимо покажет верное значение.
А если купля - вчера, продажа - сегодня, то показывает отрицательную
позицию.
Как быть?

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 31.03.2010
Ответить


Квик не хранит историю. Так что, сохраняйте свои сделки в файл.

Спасибо:

Ilya Usenko

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


При клике по клиентскому портфелю в квике, открывается таблица с
информацией об остатках, лимитам на покупку, продажу.
Вы не работаете с этой таблицей?

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 31.03.2010
Ответить


Нет. Но как экспортировать портфель я показал в примере Sample

Спасибо:

AndreiFX

Фотография
Дата: 31.03.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;
}

да, получается деревянно, но зато работает и не глючит))
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 31.03.2010
Ответить


Заметил, что Квик запоминает сделки и заявки на демо счете. Но там и
сессия длится 23 часа, начиная с 3-ех ночи.

Только все равно не понял, какие проблемы, если баланс все равно 0?

Спасибо:

AndreiFX

Фотография
Дата: 01.04.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
ит.д...тоже могут быть проблемы если отслеживается время открытия
сделок.

...я не прошу решения этого вопроса, я просто поделился наблюдениями и
мыслями какие теоретически могут быть ошибки.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.04.2010
Ответить


Да, теперь понятно, спасибо.

Небольшое замечание по коду. В TraderHelper есть метод GetPosition,
который делает тоже самое, что и Ваш цикл. Только Вы его использовать
сразу не сможете, потому что у Вас собственные типы введены. Как совет
- следуйте Бритве Оккамы.

Спасибо:


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

loading
clippy