/// <summary> /// 呼叫api /// </summary> /// <param name="data">拉取股票資訊</param> /// <param name="SreachDate">拉取日期(沒有則預設今日)</param> /// <returns></returns> private async Task <JObject> StockApi_Call(StockIDModel data, DateTime?SreachDate = null) { string NowSearchDate = ""; if (SreachDate == null) { NowSearchDate = DateTime.Now.ToString("yyyyMMdd"); } else { NowSearchDate = Convert.ToDateTime(SreachDate).ToString("yyyyMMdd"); } _log.Log($"拉取{data.StockID}-{data.StockName}-{NowSearchDate}的股票資訊"); string GetString = $"{_config["StockInfo:APIUrl"].ToString()}?response=json&date={NowSearchDate}&stockNo={data.StockID}"; _log.Log(GetString, ConsoleColor.Green); string ApiResult = await _api.Get_async(GetString); JObject CallResult = null; if (!string.IsNullOrEmpty(ApiResult)) { CallResult = JObject.Parse(ApiResult); } return(CallResult); }
private async Task MainForceInOut_Get(StockIDModel data) { _Log.Log("開始拉取主力買賣資訊"); HtmlDocument MainForceInOutHtmlInfo = await MainForceInOutHtmlInfo_Get(data.StockID); List <MainForceInOutInfo> MainForceInOutInfoList = MainForceInOutData_Analysis(MainForceInOutHtmlInfo, data.StockID); MainForceInOutData_Save(MainForceInOutInfoList); _Log.Log("拉取主力買賣資訊結束"); }
private List <StockInfo> DownloadData_Analysis(JObject APIResult, StockIDModel StockData) { List <StockInfo> StockInfoList = new List <StockInfo>(); if (APIResult.Property("stat") != null && APIResult["stat"].ToString() == "OK") { _Log.Log($"拉取成功,開始拆解json", ConsoleColor.Green); JProperty Data = APIResult.Property("data"); if (Data != null) { //StockInfo StockInfoData; //DateTime dateout; decimal convertout; StockInfoList = Data.Value.AsJEnumerable().Select(x => new StockInfo { StockID = StockData.StockID, Date = DateTime.ParseExact(x[0].ToString(), "yyy/MM/dd", CultureInfo.InvariantCulture).AddYears(1911), TradingVolume = decimal.TryParse(x[1].ToString().Replace(",", ""), out convertout) ? convertout : 0, Turnover = decimal.TryParse(x[2].ToString().Replace(",", ""), out convertout) ? convertout : 0, OpeningPrice = decimal.TryParse(x[3].ToString(), out convertout) ? convertout : 0, HighestPrice = decimal.TryParse(x[4].ToString(), out convertout) ? convertout : 0, LowestPrice = decimal.TryParse(x[5].ToString(), out convertout) ? convertout : 0, ClosingPrice = decimal.TryParse(x[6].ToString(), out convertout) ? convertout : 0, Spreads = decimal.TryParse(x[7].ToString(), out convertout) ? convertout : 0, TransactionAmount = decimal.TryParse(x[8].ToString().Replace(",", ""), out convertout) ? convertout : 0, }).ToList(); //foreach (JArray data in APIResult.Property("data").Value) //{ // StockInfoData = new StockInfo(); // StockInfoData.StockID = StockData.StockID; // DateTime Datec = DateTime.ParseExact(data[0].ToString(), "yyy/MM/dd", CultureInfo.InvariantCulture).AddYears(1911); // StockInfoData.Date = Datec; // //DateTime.TryParse(data[0].ToString(),out dateout)?new DateTime(): dateout; // StockInfoData.TradingVolume = decimal.TryParse(data[1].ToString().Replace(",", ""), out convertout) ? convertout : 0; // StockInfoData.Turnover = decimal.TryParse(data[2].ToString().Replace(",", ""), out convertout) ? convertout : 0; // StockInfoData.OpeningPrice = decimal.TryParse(data[3].ToString(), out convertout) ? convertout : 0; // StockInfoData.HighestPrice = decimal.TryParse(data[4].ToString(), out convertout) ? convertout : 0; // StockInfoData.LowestPrice = decimal.TryParse(data[5].ToString(), out convertout) ? convertout : 0; // StockInfoData.ClosingPrice = decimal.TryParse(data[6].ToString(), out convertout) ? convertout : 0; // StockInfoData.Spreads = decimal.TryParse(data[7].ToString(), out convertout) ? convertout : 0; // StockInfoData.TransactionAmount = decimal.TryParse(data[8].ToString().Replace(",", ""), out convertout) ? convertout : 0; // StockInfoList.Add(StockInfoData); //} } } _Log.Log($"拆解結束,共 {StockInfoList.Count} 筆"); return(StockInfoList); }
private async Task <JObject> StockApi_Call(StockIDModel data, string SreachDate = null) { if (string.IsNullOrEmpty(SreachDate)) { SreachDate = DateTime.Now.ToString("yyyyMMdd"); } _Log.Log($"拉取{data.StockID}-{data.StockName}-{SreachDate}的股票資訊"); string GetString = $"{_Configuration["StockInfo:APIUrl"].ToString()}?response=json&date={SreachDate}&stockNo={data.StockID}"; _Log.Log(GetString, ConsoleColor.Green); string ApiResult = await _api.Get_async(GetString); JObject CallResult = null; if (!string.IsNullOrEmpty(ApiResult)) { CallResult = JObject.Parse(ApiResult); } return(CallResult); }
/// <summary> /// 拆解檔案內容 /// </summary> /// <param name="APIResult">Api呼叫結果</param> /// <param name="StockData">取得股票資訊</param> /// <returns></returns> private async Task <IList <StockInfo> > DownloadData_Analysis(JObject APIResult, StockIDModel StockData) { List <Task <StockInfo> > Result = null; if (APIResult.Property("stat") != null && APIResult["stat"].ToString() == "OK") { Result = new List <Task <StockInfo> >(); _log.Log($"拉取成功,開始拆解json", ConsoleColor.Green); if (APIResult.Property("data") != null) { foreach (JArray data in APIResult.Property("data").Value) { Result.Add(StockInfoData_Proccess(data, StockData.StockID)); } } } //await Task.WhenAll<List<StockInfo>>(); return(await Task.WhenAll(Result)); }