public TrendInfo( ExchangeIdSymbol targetEis, ExchangeIdSymbol referenceEis) { ReferenceEis = referenceEis; TargetEis = targetEis; }
private void UpdateTrends(ExchangeIdSymbol eventEis, TradeSide side, ILocalSnapshotService localSnapshotService) { if (!_relatedTrends.TryGetValue(eventEis.ToTradePlace(), out var trendInfoList)) { return; } foreach (var trendInfo in trendInfoList) { UpdateTrendState(trendInfo, side, localSnapshotService); } }
private (decimal TargetPrice, decimal TargetSpread, decimal ReferencePrice)? CalculatePrices( ExchangeIdSymbol targetEis, ExchangeIdSymbol referenceEis, TradeSide side, ILocalSnapshotService localSnapshotService) { if (!localSnapshotService.TryGetSnapshot(targetEis.ExchangeNameSymbol, out var targetSnapshot)) { _log.Warning($"Can't get target snapshot {{eis}} in {nameof(TrendService)}", targetEis); return(null); } var filteredTargetTopPrices = PriceTrendCalculator.CalculateFilteredTopPrices(targetEis, _exchangesById, targetSnapshot); var targetPriceOpt = filteredTargetTopPrices.GetPrice(side); var targetPriceReverseOpt = filteredTargetTopPrices.GetPrice(side.ChangeSide()); if (targetPriceOpt == null) { return(null); } if (targetPriceReverseOpt == null) { return(null); } var referencePriceBySide = PriceTrendCalculator.CalculateReferencePrice( referenceEis, side, localSnapshotService, _log, out _); if (referencePriceBySide == null) { return(null); } return(targetPriceOpt.Value, Math.Abs(targetPriceReverseOpt.Value - targetPriceOpt.Value), referencePriceBySide.Value); }
public void UpdateTrends(ExchangeIdSymbol eis, ILocalSnapshotService localSnapshotService) { UpdateTrends(eis, TradeSide.Buy, localSnapshotService); UpdateTrends(eis, TradeSide.Sell, localSnapshotService); }
public StrategyInfo(ExchangeIdSymbol targetEis, ExchangeIdSymbol referenceEis, decimal referenceDeltaPriceThresholdRate) { TargetEis = targetEis; ReferenceEis = referenceEis; ReferenceDeltaPriceThresholdRate = referenceDeltaPriceThresholdRate; }