StrategyPositionManager
Gerencia posições de estratégia (por instrumento financeiro + Portfólio) e calcula a quantidade de posição, preço médio, realizada PnL e comissão incrementalmente a partir de execuções de ordem. Além disso, mantém agregados cached por posição (volume bloqueado e contagem de ordens de compra / venda ativa) através de atualizações incrementais (O(1) por atualização de ordem, sem reescaners).
Construtores
public StrategyPositionManager(Func<string> strategyIdGetter)
strategyPositionManager = StrategyPositionManager(strategyIdGetter)
Gerencia posições de estratégia (por instrumento financeiro + Portfólio) e calcula a quantidade de posição, preço médio, realizada PnL e comissão incrementalmente a partir de execuções de ordem. Além disso, mantém agregados cached por posição (volume bloqueado e contagem de ordens de compra / venda ativa) através de atualizações incrementais (O(1) por atualização de ordem, sem reescaners).
- strategyIdGetter
- Delegar o identificador de estratégia de retorno para carimbar em StrategyIdrecém-criado.
Propriedades
public Position[] Positions { get; }
value = strategyPositionManager.Positions
Array de instantâneo de posições gerenciadas (recópia segura de thread).
public Func<string> StrategyIdGetter { get; }
value = strategyPositionManager.StrategyIdGetter
Delegar o ID de estratégia de retorno para atribuir em novas posições.
public int TrackedAggsCount { get; }
value = strategyPositionManager.TrackedAggsCount
public int TrackedOrderExecInfosCount { get; }
value = strategyPositionManager.TrackedOrderExecInfosCount
public int TrackedOrderTracksCount { get; }
value = strategyPositionManager.TrackedOrderTracksCount
Métodos
public OrderResults ProcessOrder(Order order)
result = strategyPositionManager.ProcessOrder(order)
Mudança de estado da ordem de processo (registo, mudança de saldo, execução parcial/total, cancelamento, feito).
- order
- Ordem para processar.
Retorna: OrderResults
public void Reset()
strategyPositionManager.Reset()
Reinicie todas as caches internas (posições, informações de execução, agregados, faixas de ordem).
public void SetPosition(Security security, Portfolio portfolio, decimal value, DateTime time)
strategyPositionManager.SetPosition(security, portfolio, value, time)
Defina o valor da posição atual explicitamente (utilidade para restauração manual / sobreposições).
- security
- Instrumento financeiro.
- portfolio
- Portfólio.
- value
- Nova quantidade assinada.
- time
- Timetamp para atribuir em LocalTime e ServerTime se a posição for criada de novo.
public Position TryGetPosition(Security security, Portfolio portfolio)
result = strategyPositionManager.TryGetPosition(security, portfolio)
Tente obter a instância de posição existente para e .
- security
- Instrumento financeiro.
- portfolio
- Portfólio.
Retorna: Posição existente ou .
private void UpdateAggregates(Order order, Position position)
strategyPositionManager.UpdateAggregates(order, position)
Atualizar agregados incrementalmente para a ordem (volume bloqueado e contagens) e empurrá-los para o .
public void UpdateCurrentPrice(SecurityId secId, decimal price, DateTime serverTime, DateTime localTime)
strategyPositionManager.UpdateCurrentPrice(secId, price, serverTime, localTime)
Actualizar o preço actual ( de mercado ) para todas as posições das posições especificadas .
- secId
- Identificador do instrumento financeiro cujas posições necessitam de actualização dos preços.
- price
- Novo preço de mercado.
- serverTime
- Hora do servidor da foto do preço.
- localTime
- Hora local em que o preço foi processado.
Eventos
public event Action<Position, bool> PositionProcessed
strategyPositionManager.PositionProcessed += handler
Ocorre após a posição ser processada (criada ou atualizada por uma execução de ordem ou mudança de estado de ordem que afeta agregados).