/// <summary> /// Quality of Service provides the different rates of data updates per protocol (binary, websocket etc), or per user based. /// </summary> /// <param name="quality">Quality of Service, or the rate the data will be sent to the client.</param> /// <returns></returns> public Task RequestQOS(TDQOSLevels quality) { var request = new TDRealtimeRequestContainer { requests = new TDRealtimeRequest[] { new TDRealtimeRequest { service = "ADMIN", command = "QOS", requestid = Interlocked.Increment(ref _counter), account = _account.accountId, source = _prince.streamerInfo.appId, parameters = new { qoslevel = ((int)quality) } } } }; var data = JsonConvert.SerializeObject(request, _settings); return(SendToServer(data)); }
/// <summary> /// Unsubscribe to the level two order book. Note this stream has no official documentation, and it's not entirely clear what exchange it corresponds to.Use at your own risk. /// </summary> /// <returns></returns> public Task UnsubscribeBook(string symbols, TDBookOptions option) { var request = new TDRealtimeRequestContainer { requests = new TDRealtimeRequest[] { new TDRealtimeRequest { service = option.ToString(), command = "UNSUBS", requestid = Interlocked.Increment(ref _counter), account = _account.accountId, source = _prince.streamerInfo.appId, parameters = new { keys = symbols, } } } }; var data = JsonConvert.SerializeObject(request, _settings); return(SendToServer(data)); }
/// <summary> /// Subscribed to the time&sales event service /// </summary> /// <param name="symbols">spy,qqq,amd</param> /// <param name="service">data service to subscribe to</param> /// <returns></returns> public Task SubscribeTimeSale(string symbols, TDTimeSaleServices service) { var request = new TDRealtimeRequestContainer { requests = new TDRealtimeRequest[] { new TDRealtimeRequest { service = service.ToString(), command = "SUBS", requestid = Interlocked.Increment(ref _counter), account = _account.accountId, source = _prince.streamerInfo.appId, parameters = new { keys = symbols, fields = "0,1,2,3,4" } } } }; var data = JsonConvert.SerializeObject(request, _settings); return(SendToServer(data)); }
/// <summary> /// Subscribeds to the level one quote event service /// </summary> /// <param name="symbols"></param> /// <returns></returns> public Task SubscribeQuote(string symbols) { var request = new TDRealtimeRequestContainer { requests = new TDRealtimeRequest[] { new TDRealtimeRequest { service = "QUOTE", command = "SUBS", requestid = Interlocked.Increment(ref _counter), account = _account.accountId, source = _prince.streamerInfo.appId, parameters = new { keys = symbols, fields = "0,1,2,3,4,5,8,9,10,11,12,13,14,15,24,28" } } } }; var data = JsonConvert.SerializeObject(request, _settings); return(SendToServer(data)); }
public Task Subscribe_Chart(string symbol) { var request = new TDRealtimeRequestContainer { requests = new TDRealtimeRequest[] { new TDRealtimeRequest { service = "CHART_EQUITY", command = "SUBS", requestid = 2, account = _account.accountId, source = _prince.streamerInfo.appId, parameters = new TDRealtimeParams { keys = symbol, fields = "0,1,2,3,4,5,6,7,8" } } } }; var data = JsonSerializer.Serialize(request); return(SendString(data, _cancel.Token)); }
private Task Login() { //Converts ISO-8601 response in snapshot to ms since epoch accepted by Streamer var tokenTimeStampAsDateObj = DateTime.Parse(_prince.streamerInfo.tokenTimestamp); var tokenTimeStampAsMs = tokenTimeStampAsDateObj.ToUniversalTime().ToUnixTimeMilliseconds(); NameValueCollection queryString = HttpUtility.ParseQueryString(string.Empty); queryString.Add("userid", _account.accountId); queryString.Add("company", _account.company); queryString.Add("segment", _account.segment); queryString.Add("cddomain", _account.accountCdDomainId); queryString.Add("token", _prince.streamerInfo.token); queryString.Add("usergroup", _prince.streamerInfo.userGroup); queryString.Add("accessLevel", _prince.streamerInfo.accessLevel); queryString.Add("appId", _prince.streamerInfo.appId); queryString.Add("acl", _prince.streamerInfo.acl); queryString.Add("timestamp", tokenTimeStampAsMs.ToString()); queryString.Add("authorized", "Y"); var credits = queryString.ToString(); var encoded = HttpUtility.UrlEncode(credits); var request = new TDRealtimeRequestContainer { requests = new TDRealtimeRequest[] { new TDRealtimeRequest { service = "ADMIN", command = "LOGIN", requestid = Interlocked.Increment(ref _counter), account = _account.accountId, source = _prince.streamerInfo.appId, parameters = new { token = _prince.streamerInfo.token, version = "1.0", credential = encoded, } } } }; var data = JsonConvert.SerializeObject(request); return(SendToServer(data)); }
private Task LogOut() { var request = new TDRealtimeRequestContainer { requests = new TDRealtimeRequest[] { new TDRealtimeRequest { service = "ADMIN", command = "LOGOUT", requestid = Interlocked.Increment(ref _counter), account = _account.accountId, source = _prince.streamerInfo.appId, parameters = new { } } } }; var data = JsonConvert.SerializeObject(request); return(SendToServer(data)); }