/// <summary> /// Aktywacja odbioru (subskrypcji) informacji o bieżących notowaniach giełdowych. /// Treść tych informacji ustalamy (najlepiej wcześniej) korzystając z metod "MarketDataSubscription*". /// </summary> public void MarketDataStart() { if (mdReqId != null) { MarketDataStop(); } lock (mdResults) { mdResults.Clear(); Debug.WriteLine("\nMarketDataStart..."); using (Socket socket = GetSyncSocket()) { MarketDataRequestMsg request = new MarketDataRequestMsg(); request.Type = SubscriptionRequestType.StartSubscription; request.MarketDepth = 1; request.EntryTypes = mdEntryTypes.ToArray(); request.Instruments = mdInstruments.ToArray(); request.Send(socket); MarketDataFullRefreshMsg response = new MarketDataFullRefreshMsg(socket); if (response.RequestId != request.Id) { throw new FixmlException("Unexpected MktDataFull ReqID."); } mdReqId = request.Id; } Debug.WriteLine("MarketDataStart OK\n"); } }
/// <summary> /// Deaktywacja odbioru (subskrypcji) informacji o bieżących notowaniach giełdowych. /// To, co się udało do tej pory zebrać, pozostaje nadal w pamięci - dostępne przez "MarketDataResults". /// </summary> public void MarketDataStop() { if (mdReqId == null) { return; } lock (mdResults) { Debug.WriteLine("\nMarketDataStop..."); using (Socket socket = GetSyncSocket()) { MarketDataRequestMsg request = new MarketDataRequestMsg(); request.Type = SubscriptionRequestType.CancelSubscription; request.Send(socket); MarketDataFullRefreshMsg response = new MarketDataFullRefreshMsg(socket); if (response.RequestId != request.Id) { throw new FixmlException("Unexpected MktDataFull ReqID."); } } mdReqId = null; Debug.WriteLine("MarketDataStop OK\n"); } }