В стратегии ArbitrageStrategy проверка открытых позиций по паре осуществляется вот так:
private bool NoPositions
{
get { return PositionManager.Positions.All(p => p.CurrentValue == 0); }
}
Это перебор по всем открытым позициям в quik или по всем позициям по каким то конкретным инструментам? Из какой таблицы берутся данные?
Что если по счету будут открыты другие позиции, не относящиеся к этой стратегии? Или если будут параллельно работать другие стратегии по другим инструментам? Как в данном случае корректно получить наличие позиций?
Вот так будет правильнее или то же самое?
private bool NoPositions
{
get {
return (PositionManager.Positions.FirstOrDefault(p => p.Security == Security1).CurrentValue == 0 &&
PositionManager.Positions.FirstOrDefault(p => p.Security == Security2).CurrentValue == 0);
}
}
评论 (5)
登录 或 创建账户, 登录或注册以发表评论
Strategy.Security конечно же. Дочерние позиции "на верх" не пробрасываются по понятным причинам.
Расчет по заявка (баланс).
Пользовательские действия игнорируются стратегией.
Стратегии работают независимо друг от друга.
То же самое.
А как быть, если в стратегии используется 2 инструмента и нужно учитывать изменения позиций по ним?
Правильно ли я понял, что в стратегии учитываются все позиции, ордера которых были сгенерированы с помощью это стратегии? То есть, не важно какой инструмент выбран в Strategy.Security, если я буду из этой стратегии проводить сделки и по другим инструментам, они тоже будут учитываться?
Надо использовать дочернии стратегии, и из родительской стратегии выдавать сигналы.
Никак не получается получить трейды для второго инструмента. У меня дочерняя стратегия pairOrderStrategy, которая сама содержит 2 дочерних стратегии, каждая их которых посылает ордер для своего инструмента. После остановки стратегий получаю трейды вот так:
Второй инструмент всегда возвращает 0 в MyTrades, хотя там есть и ордера и позиции. Я пробую вручную задавать Strategy.Security при инициализации стратегии, но это не помогает. Подозреваю, что так как эти стратегии дочерние, то Security у них такой же как и у родительской и поэтому трейды для второго инструмента игнорируются.
Можно ли получить как то трейды для второго инструмента?
Скорее всего стратегия останавливается до того, как получает всю инфомрацию. Надо использовать Strategy.WaitAllTrades