В стратегии 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