Пример #1
0
 public TrendInfo(
     ExchangeIdSymbol targetEis,
     ExchangeIdSymbol referenceEis)
 {
     ReferenceEis = referenceEis;
     TargetEis    = targetEis;
 }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
 public void UpdateTrends(ExchangeIdSymbol eis, ILocalSnapshotService localSnapshotService)
 {
     UpdateTrends(eis, TradeSide.Buy, localSnapshotService);
     UpdateTrends(eis, TradeSide.Sell, localSnapshotService);
 }
Пример #5
0
 public StrategyInfo(ExchangeIdSymbol targetEis, ExchangeIdSymbol referenceEis, decimal referenceDeltaPriceThresholdRate)
 {
     TargetEis    = targetEis;
     ReferenceEis = referenceEis;
     ReferenceDeltaPriceThresholdRate = referenceDeltaPriceThresholdRate;
 }