virtual protected void AddQuoteToDictionary(IMarketInput imi, double value) { var data = GetData(); data[imi] = value; //_Pairs.Add(imi); SetData(data); }
public double GetQuote(IMarketInput mi) { var miList = _FXData.Where(x => x.Key.Asset1 == mi.Asset1 && x.Key.Ccy2 == mi.Ccy2) .Select(x => x.Key); if (miList.Count() == 1) { return(_FXData[miList.First()]); } else { throw new Exception("ERROR: Asset Market"); } }
public double GetQuote(IMarketInput ccyPair) { if (ccyPair.IsIdentity) { return(1.0); } var data = GetData(); // Find exact CcyPair var presentData = data.Where(x => x.Key.IsEquivalent(ccyPair)) .Select(x => (CurrencyPair)x.Key) .ToList(); if (presentData.Count() == 1) { if (presentData[0].IsEqual(ccyPair)) { return(data[presentData[0]]); } else { return(1 / data[presentData[0]]); } } // Find triangle var ccyPairData = _Data.Where(x => x.Key.Contains(ccyPair.Ccy1) || x.Key.Contains(ccyPair.Ccy2)); var ccyData = ccyPairData.Select(x => x.Key.Ccy1 == ccyPair.Ccy1 || x.Key.Ccy1 == ccyPair.Ccy2 ? x.Key.Ccy2 : x.Key.Ccy1) .ToList(); try { return(Aux_GetQuote(ccyPair.Ccy1, ccyPair.Ccy2, new List <ICcyAsset> { })); } catch (Exception) { throw new Exception($"Issue with Data for {ccyPair.ToString()}"); } }
public void AddQuote(IMarketInput imi, double value) { var data = GetData(); var presentData = data.Where(x => x.Key.IsEquivalent(imi)).Select(x => x.Key).ToList(); if (presentData.Count() == 1) { if (presentData[0].IsEqual(imi)) { data[presentData[0]] = value; } else { data[presentData[0]] = 1 / value; } SetData(data); } else if (presentData.Count() == 0) { AddQuoteToDictionary(imi, value); } }