Всем привет!
Попробовал создать стратегию и вроде все получилось, но не могу получить размер позиции Стратегия обрабатывается по приходу новых сделок
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 чтобы понять что позиция есть. Чуть не забыл, проверял на фьюче сбера.
Comentarios (4)
Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario
Какой шлюз? Покажите скриншот квика если это квик где будет видно что позиция != 0 и при этом распечатайте для какого конкретно инструмента пытаетесь взять позу.
Да, это QuikTrader. Версия стокшарпа 4.1 из дев ветки, на 4.0.23 пробовал, тоже самое.
И еще момент, может это поможет решению, когда пытался регистрировать через MarketQuotingStrategy то в логах не проходило состояние State=Done, хотя до этого приходили состояния None и Active.
у вас и GetPosition возвращает null и PositionManager возвращает 0? Что говорит verifier? Скиньте скриншот всего квика тогда
Пардон, это мой косяк, не экспортировал таблицу позиций по деривативам. Посыпаю голову пеплом...