Всем привет!
Попробовал создать стратегию и вроде все получилось, но не могу получить размер позиции Стратегия обрабатывается по приходу новых сделок
protected override void OnStarting()
{
this
.When(Security.SecurityNewTrades())
.Do(MakePosition);
base.OnStarting();
}
В процедуре MakePosition такой код
...
var _myPosition = Trader.GetPosition(Portfolio, Security);
if (_myPosition != null)
{
Console.WriteLine("Position current value: {0}", _myPosition.CurrentValue);
Console.WriteLine("Position begin value: {0}", _myPosition.BeginValue);
Console.WriteLine("Position blocked value: {0}", _myPosition.BlockedValue);
}
if (lastTrade.Volume > 3)
{
var condition = true;
var conditionDirection = (first > last);
if (condition && !_gotPosition)
{
var direction = conditionDirection ? OrderDirections.Buy : OrderDirections.Sell;
var order = this.CreateOrder(direction, Security.GetMarketPrice(direction), Volume);
RegisterOrder(order);
_gotPosition = true;
}
}
PositionManager.Position всегда показывает 0. Покопавшись на форуме нашел что можно получить позицию из трейдера, но Trader.GetPosition() у меня всегда возвращает null, даже когда проходит не одна сделка, а несколько. Пришлось заводить переменную _gotPosition чтобы понять что позиция есть. Чуть не забыл, проверял на фьюче сбера.
Комментарии (4)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Какой шлюз? Покажите скриншот квика если это квик где будет видно что позиция != 0 и при этом распечатайте для какого конкретно инструмента пытаетесь взять позу.
Да, это QuikTrader. Версия стокшарпа 4.1 из дев ветки, на 4.0.23 пробовал, тоже самое.
И еще момент, может это поможет решению, когда пытался регистрировать через MarketQuotingStrategy то в логах не проходило состояние State=Done, хотя до этого приходили состояния None и Active.
у вас и GetPosition возвращает null и PositionManager возвращает 0? Что говорит verifier? Скиньте скриншот всего квика тогда
Пардон, это мой косяк, не экспортировал таблицу позиций по деривативам. Посыпаю голову пеплом...