public bool RequestMarketData(IMarketDataRequest mdRequest) { var key = new Tuple <string, string, string>(mdRequest.Symbol, mdRequest.Tier, mdRequest.Tenor); var unsubscribe = false; var requestId = string.Empty; if (mdRequest.IsSubscribe) { if (_marketDataRequests.ContainsKey(key)) { _marketDataRequests[key] = new Tuple <string, int>(_marketDataRequests[key].Item1, _marketDataRequests[key].Item2 + 1); return(true); } _marketDataRequests.Add(key, new Tuple <string, int>(mdRequest.ClientRequestId, 1)); requestId = mdRequest.ClientRequestId; } else { if (!_marketDataRequests.ContainsKey(key)) { return(false); } _marketDataRequests[key] = new Tuple <string, int>(_marketDataRequests[key].Item1, _marketDataRequests[key].Item2 - 1); if (_marketDataRequests[key].Item2 <= 0) { unsubscribe = true; requestId = _marketDataRequests[key].Item1; _marketDataRequests.Remove(key); } } string tag6217 = ""; if (mdRequest.Tenor == "SP") { tag6217 = "0"; // Spot } else { tag6217 = "2"; // FORWARD_POINT } try { var tags = new[] { new Tuple <int, string>(35, "V"), new Tuple <int, string>(34, SequenceId.ToString(CultureInfo.InvariantCulture)), new Tuple <int, string>(49, SenderId), new Tuple <int, string>(50, mdRequest.Tier), new Tuple <int, string>(115, OnBehalfOf), //new Tuple<int, string>(116, "Tan Quach"), new Tuple <int, string>(56, TargetId), new Tuple <int, string>(52, DateTime.Now.ToString("yyyyMMdd-HH:mm:ss.fff")), new Tuple <int, string>(262, requestId), new Tuple <int, string>(263, unsubscribe ? "2" : "1"), new Tuple <int, string>(264, "0"), new Tuple <int, string>(265, "0"), new Tuple <int, string>(146, "1"), new Tuple <int, string>(55, mdRequest.Symbol), // new Tuple<int, string>(167, "FOR"), new Tuple <int, string>(64, mdRequest.SettlementDate.ToString("yyyyMMdd")), new Tuple <int, string>(6215, mdRequest.Tenor), new Tuple <int, string>(6217, tag6217), new Tuple <int, string>(267, "2"), new Tuple <int, string>(269, "0"), new Tuple <int, string>(269, "1") }; SendFixMessage(tags); } catch (Exception ex) { _logger.WriteLine("{0:yyyy-MM-dd HH:mm:ss.fff} - Failed to send market data requests, {1}", DateTime.Now, ex.Message); return(false); } return(true); }
public PricingRequest(IMarketDataRequest request) : this(request.ClientRequestId, request.Symbol, request.Tier) { NearTenor = request.Tenor; NearSettlementDate = request.SettlementDate; Side = "2-Way"; }