Example #1
0
        public decimal GetQuoteRateForBaseAsset(string accountAssetId, string assetPairId, string legalEntity,
                                                bool useAsk)
        {
            var assetPair = _assetPairsCache.GetAssetPairById(assetPairId);

            // two step transform: base -> quote from QuoteCache, quote -> account from FxCache
            // if accountAssetId == assetPair.BaseAssetId, rate != 1, because trading and fx rates can be different

            var assetPairQuote = _quoteCacheService.GetQuote(assetPairId);
            var tradingRate    = useAsk ? assetPairQuote.Ask : assetPairQuote.Bid;

            if (assetPair.QuoteAssetId == accountAssetId)
            {
                return(tradingRate);
            }

            var fxPair =
                _assetPairsCache.FindAssetPair(assetPair.QuoteAssetId, accountAssetId, legalEntity);
            var fxQuote = _fxRateCacheService.GetQuote(fxPair.Id);

            var rate = fxPair.BaseAssetId == assetPair.QuoteAssetId
                ? fxQuote.Ask * tradingRate
                : 1 / fxQuote.Bid * tradingRate;

            return(rate);
        }
Example #2
0
        public decimal GetQuoteRateForBaseAsset(string accountAssetId, string instrument)
        {
            var asset = _assetPairsCache.GetAssetPairById(instrument);

            var baseAssetId = asset.BaseAssetId;

            if (accountAssetId == baseAssetId)
            {
                return(1);
            }

            var inst  = _assetPairsCache.FindAssetPair(baseAssetId, accountAssetId);
            var quote = _quoteCacheService.GetQuote(inst.Id);

            if (inst.BaseAssetId == baseAssetId)
            {
                return(quote.Ask);
            }

            return(1.0M / quote.Bid);
        }
Example #3
0
        public decimal GetQuoteRateForBaseAsset(string accountAssetId, string assetPairId, string legalEntity,
                                                bool metricIsPositive = true)
        {
            var assetPair = _assetPairsCache.GetAssetPairById(assetPairId);

            if (accountAssetId == assetPair.BaseAssetId)
            {
                return(1);
            }

            var assetPairSubst = _assetPairsCache.FindAssetPair(assetPair.BaseAssetId, accountAssetId, legalEntity);

            var rate = metricIsPositive
                ? assetPairSubst.BaseAssetId == assetPair.BaseAssetId
                    ? _quoteCacheService.GetQuote(assetPairSubst.Id).Ask
                    : 1 / _quoteCacheService.GetQuote(assetPairSubst.Id).Bid
                : assetPairSubst.BaseAssetId == assetPair.BaseAssetId
                    ? _quoteCacheService.GetQuote(assetPairSubst.Id).Bid
                    : 1 / _quoteCacheService.GetQuote(assetPairSubst.Id).Ask;

            return(rate);
        }