protected async Task Sends() { //var servicesSelected = string.Join(',', values.Select(i => valuesName[i])); serviceRequestText = await TDAStreamerData.getServiceRequest(values, symbol); await TDAStreamerJs.InvokeAsync <string>("tdaSendRequest", serviceRequestText); }
protected async Task Logout() { string request = TDAStreamerData.getLoginRequest(isLogout: true); var dud = await TDAStreamerJs.InvokeAsync <string>("tdaSendRequest", request); StateHasChanged(); }
protected void serviceRequestChanged(RadzenSplitButtonItem item) { if (item == null) { return; } serviceSelection = item.Value; TDAStreamerData.chain = "102120C337,102120P337"; serviceRequestText = TDAStreamerData.getServiceRequestOld(serviceSelection, symbol); //LogText(serviceRequestText); }
private async Task TDA_Process_Data(string jsonResponse) { var dataJsonSvcArray = JObject.Parse(jsonResponse)["data"]; foreach (var svcJsonObject in dataJsonSvcArray) { var svcName = svcJsonObject["service"].ToString(); //if (simulatorSettings!=null && simulatorSettings.isSimulated) svcDateTime = GetServiceTime(svcJsonObject); var svcJson = svcJsonObject.ToString(); var svcFieldedJson = svcJson; /// Decode /// Get field names corresponding to field numbers List <string> svcFields = TDAConstants.TDAResponseFields[svcName]; /// Replace field numbers with field names for (int i = 1; i < svcFields.Count; i++) { string sIndex = $"\"{i}\":"; svcFieldedJson = svcFieldedJson.Replace(sIndex, $" \"{svcFields[i]}\":"); } if (TDAStreamerData.simulatorSettings != null && !TDAStreamerData.simulatorSettings.buildDatabaseDuringSimulate) { LogText("DECODED: " + svcFieldedJson); } var svcJsonObjectDecoded = JObject.Parse(svcFieldedJson); //var contents = svcJsonObjectDecoded["content"].ToString(); /// Send to connected hub /// await TDAStreamerData.captureTdaServiceData(svcFieldedJson); clock = TDAChart.svcDateTime.ToString(clockFormat); /// Send to message queue /// We can replay these messages later from simulator /// Need to NOT reswnd dictTopicCounts[svcName] += 1; if (!simulate) { await FilesManager.SendToMessageQueue(symbol, svcName, svcDateTime, svcFieldedJson); } //await Send(svcName, svcFieldedJson); StateHasChanged(); } }
private async Task RunOnClick() { try { var filsList = dirInput.GetFiles().OrderBy(f => f.LastWriteTime); foreach (var file in filsList) { /// Read earliest file from the TIMESALE_EQUITY folder var json = File.ReadAllText(file.FullName); /// Decode the json TDAStreamerData.captureTdaServiceData(json); //if (file.Name.StartsWith(CONSTANTS.TIMESALE_EQUITY)) // TDAStreamerData.Decode_TimeSales(CONSTANTS.TIMESALE_EQUITY, json); //else if (file.Name.StartsWith(CONSTANTS.QUOTE)) // await TDAStreamerData.Decode_Quote(json); /// Move file to Archive var archiveFolder = CONSTANTS.messageQarchiveFolder + CONSTANTS.TIMESALE_EQUITY + @"\"; File.Move(file.FullName, archiveFolder + file.Name); /// Create the output /// Save Output to Output folder file /// Send output to SignalR /// if (TDAStreamerData.timeSales.ContainsKey("QQQ")) { Count = TDAStreamerData.timeSales["QQQ"].Count; } await Task.Yield(); StateHasChanged(); } await Task.CompletedTask; } catch (Exception e) { snackBarIsOpen = true; msg = e.ToString(); //StateHasChanged(); } }
void ResetArchive() { try { var destinationDirectory = CONSTANTS.messageQinputFolder + CONSTANTS.TIMESALE_EQUITY; var sourceDirectory = CONSTANTS.messageQarchiveFolder + CONSTANTS.TIMESALE_EQUITY; Directory.Delete(destinationDirectory); Directory.Move(sourceDirectory, destinationDirectory); Directory.CreateDirectory(sourceDirectory); TDAStreamerData.Reset(); } catch (Exception e) { snackBarIsOpen = true; msg = e.ToString(); //StateHasChanged(); } }
public void getPrintsData() { TDAStreamerData.getPrintsData(ref printsData, seconds, isPrintsSize, symbol); total = printsData.Sum(t => t.Revenue).ToString("n0"); long oneMinuteAgo = (long)(DateTime.Now.ToUniversalTime().AddSeconds(-seconds) - new DateTime(1970, 1, 1)).TotalMilliseconds; var reds = TDAStreamerData.timeSales[symbol].Where(t => t.level == 1 && t.time >= oneMinuteAgo).Sum(t => t.size) + TDAStreamerData.timeSales[symbol].Where(t => t.level == 2 && t.time >= oneMinuteAgo).Sum(t => t.size); var greens = TDAStreamerData.timeSales[symbol].Where(t => t.level == 4 && t.time >= oneMinuteAgo).Sum(t => t.size) + TDAStreamerData.timeSales[symbol].Where(t => t.level == 5 && t.time >= oneMinuteAgo).Sum(t => t.size); float nBids = 1; if (reds == 0 && greens == 0) { nBids = 0; } if (reds == 0) { reds = (1 / 11) * greens; } nBids = 100 * ((greens / reds) - 1); bids = nBids.ToString("n0"); if (nBids < -10) { badgeClass = "btn-danger btn btn-circle"; } else if (nBids > 10) { badgeClass = "btn-success btn btn-circle"; } else { badgeClass = " btn btn-circle"; } StateHasChanged(); }
public static async Task Decode(string symbol, string content) { //if (TDABookManager.lstBookEntry.Count == 0) return; TDAStreamerData.jSRuntime.warn(System.Reflection.MethodBase.GetCurrentMethod().Name); /// Get current time and sales from streamer content var timeAndSales = JsonSerializer.Deserialize <TimeSales_Content>(content); TDAChart.svcDateTime = timeAndSales.TimeDate; var prevTimeAndSales = timeAndSales; if (TDAStreamerData.timeSales.ContainsKey(symbol) && TDAStreamerData.timeSales[symbol].Count > 0) { prevTimeAndSales = TDAStreamerData.timeSales[symbol].Last(); } /// Combine bid/ask with time & sales and write to database /// Need to match time of print and time of quote to get accuarate buys/sells //Debugger.Break(); try { /// t.Key is Quote date and time, we want last quote before t&s time /// var book = TDABookManager.lstALLBookEntry.Where(be => be.time < timeAndSales.time).Last(); //browserService._js.GroupTable(book,"book"); // JsConsole.JsConsole.GroupTable(jSRuntime, book, "bbok"); timeAndSales.bid = book.bid; timeAndSales.ask = book.ask; timeAndSales.askSize = book.askSize; timeAndSales.bidSize = book.bidSize; timeAndSales.bookTime = book.time; var timeNow = book.time.FromUnixTime().ToLocalTime(); if (TDAStreamerData.simulatorSettings.isSimulated != null && (bool)TDAStreamerData.simulatorSettings.isSimulated) { //JsConsole.JsConsole.GroupTable(TDAStreamerData.jSRuntime, timeAndSales, "timeAndSales"); TDAStreamerData.simulatorSettings.currentSimulatedTime = TDAChart.svcDateTime.AddSeconds(1); //JsConsole.JsConsole.GroupTable(TDAStreamerData.jSRuntime, TDAStreamerData.simulatorSettings.isSimulated, "TDAStreamerData.simulatorSettings.isSimulated"); //JsConsole.JsConsole.GroupTable(TDAStreamerData.jSRuntime, TDAStreamerData.simulatorSettings.runDate, "TDAStreamerData.simulatorSettings.runDate"); //JsConsole.JsConsole.GroupTable(TDAStreamerData.jSRuntime, TDAStreamerData.simulatorSettings.startTime, "TDAStreamerData.simulatorSettings.startTime"); //JsConsole.JsConsole.GroupTable(TDAStreamerData.jSRuntime, TDAStreamerData.simulatorSettings.endTime, "TDAStreamerData.simulatorSettings.endTime"); //JsConsole.JsConsole.GroupTable(TDAStreamerData.jSRuntime, TDAStreamerData.simulatorSettings.currentSimulatedTime, "TDAStreamerData.simulatorSettings.currentSimulatedTime"); /// replace feed time with current time so can match book entries to time and sales if (!TDAStreamerData.simulatorSettings.buildDatabaseDuringSimulate) { long now = (long)DateTime.UtcNow.Subtract(DateTime.UnixEpoch).TotalMilliseconds; timeAndSales.time = now; } } timeAndSales.bidIncr = timeAndSales.bid - prevTimeAndSales.bid; timeAndSales.askIncr = timeAndSales.ask - prevTimeAndSales.ask; timeAndSales.priceIncr = timeAndSales.price - prevTimeAndSales.price; var bid = timeAndSales.bid; var ask = timeAndSales.ask; var price = timeAndSales.price; timeAndSales.level = bid == 0 || ask == 0 || price == 0 ? 0 : price <bid ? 1 : price == bid ? 2 : price> bid && price < ask ? ( price - bid < 0.01 ? 2 : (ask - price < 0.01 ? 4 : 3) ) : price == ask ? 4 : price > ask ? 5 : 0; } catch { } if (!TDAStreamerData.timeSales.ContainsKey(symbol)) { TDAStreamerData.timeSales.Add(symbol, new List <TimeSales_Content>()); ///// TODO √ DB: Add Run table row and set runId static ///// //if (TDAStreamerData.isNotSimulated()) //{ // var runDate = TDAChart.svcDateTime; // DatabaseManager.Runs_Add(symbol, runDate); // /// Save the runId for this symbol // /// //} } // Update the Chart last close value TDAStreamerData.timeSales[symbol].Add(timeAndSales); //TDAStreamerData.timeSales[symbol].Add(timeAndSales); /// TODO √ DB: Add to Streamed table using timeAndSales time and get streamId /// //if (TDAStreamerData.isNotSimulated()) //{ // var dateTime = timeAndSales.TimeDate; // DatabaseManager.Streamed_Add(symbol, dateTime); //} /// TODO √ DB: Add to Buys / Sells table /// 1 & 2 = Sells (sold at bid or below bid) /// 4 & 5 = Buys (bought at ask or above ask) /// 3 = 1/2 Buys and 1/2 Sells (bought or sold between bid and ask) /// if (TDAStreamerData.isNotSimulated()) { switch (timeAndSales.level) { case 1: case 2: var size = (int)timeAndSales.size; DatabaseManager.Sells_Add(timeAndSales, size); break; case 3: var sizeBoth = (int)timeAndSales.size / 2; DatabaseManager.Sells_Add(timeAndSales, sizeBoth); DatabaseManager.Buys_Add(timeAndSales, sizeBoth); break; case 4: case 5: var sizeBuy = (int)timeAndSales.size; DatabaseManager.Buys_Add(timeAndSales, sizeBuy); break; } } // string json = JsonSerializer.Serialize<TimeSales_Content>(timeAndSales); //await FilesManager.SendToMessageQueue("TimeSales", timeAndSales.TimeDate, json); //int value=0; //foreach (var seconds in CONSTANTS.printSeconds) //{ // if (dictPies.ContainsKey(seconds.ToString())) // { // var slices = dictPies[seconds.ToString()]; // var reds = slices[0].Revenue + slices[2].Revenue; // var greens = slices[3].Revenue + slices[4].Revenue; // var it = reds > greens ? -1 // : greens > reds ? 1 // : 0; // value += it; // } // gaugeValues.Add(DateTime.Now, value); //} await Task.CompletedTask; }