public void SerializerTest() { var stock1 = new ValuatedStock(); var stock2 = new ValuatedStock(); ValuatedStock[] stocks = { stock1, stock2 }; string date1 = "1990-02-20"; MarketDay day1 = new MarketDay(date1, stocks); var recentHistory = new MarketSegment { day1 }; var stockStreamResponse = new StockHistoryResponseMessage { RecentHistory = recentHistory }; var serializedMessage = stockStreamResponse.Encode(); var deserializedMessage = MessageFactory.GetMessage(serializedMessage, false) as StockHistoryResponseMessage; Assert.AreEqual(stockStreamResponse.RecentHistory[0].TradedCompanies.Count, deserializedMessage.RecentHistory[0].TradedCompanies.Count); Assert.AreEqual(stockStreamResponse.RecentHistory[0].TradedCompanies[0].Close, deserializedMessage.RecentHistory[0].TradedCompanies[0].Close); Assert.AreEqual(stockStreamResponse.RecentHistory[0].Date, deserializedMessage.RecentHistory[0].Date); }
public void InitializerTest() { var stock1 = new ValuatedStock(); var stock2 = new ValuatedStock(); ValuatedStock[] stocks = { stock1, stock2 }; string date1 = "1990-02-20"; string date2 = "1990-03-20"; MarketDay day1 = new MarketDay(date1, stocks); MarketDay day2 = new MarketDay(date2, stocks);//not important that has same valuated stocks var recentHistory = new MarketSegment { day1, day2 }; var stockStreamResponse = new StockHistoryResponseMessage { RecentHistory = recentHistory }; Assert.AreEqual(stockStreamResponse.RecentHistory[0].Date, date1); Assert.AreEqual(stockStreamResponse.RecentHistory[1].Date, date2); Assert.AreEqual(stockStreamResponse.RecentHistory.Count, 2); Assert.AreEqual(3, stockStreamResponse.RecentHistory[0].TradedCompanies.Count); Assert.AreEqual(3, stockStreamResponse.RecentHistory[1].TradedCompanies.Count); }
public static MarketSegment GetRecentHistory(int numDays) { int currentIndex = CurrentDayNumber - numDays;; if (currentIndex < 0) { currentIndex = (currentIndex + GetSize() + 1) % GetSize();//account for rollover } var segment = new MarketSegment(); for (int i = 0; i < numDays; i++) { segment.Add(FullHistory[currentIndex]); currentIndex = (++currentIndex) % GetSize(); } return(segment); }
public static MarketSegment makeupMarketSegment(int stocks, int days) { MarketSegment returns = new MarketSegment(); List <Stock> madeupStocks = new List <Stock>(stocks); for (int i = 0; i < stocks; i++) { madeupStocks.Add(makeupStock()); } for (int i = 0; i < days; i++) { List <ValuatedStock> dayList = new List <ValuatedStock>(stocks); for (int j = 0; j < madeupStocks.Count; j++) { var symbol = madeupStocks[j].Symbol; if (symbol.Equals("$")) { continue; } float previousClose; if (i > 0) { previousClose = returns[i - 1].TradedCompanies.Where(s => s.Symbol.Equals(symbol)).FirstOrDefault().Close; } else { previousClose = random.Next(100, 500); } var vStock = MakeupValuatedStock(madeupStocks[j].Symbol, madeupStocks[j].Name, previousClose); dayList.Add(vStock); } MarketDay dayHolder = new MarketDay("3-26-2019", dayList.ToArray()); returns.Add(dayHolder); } return(returns); }
private void GenMar() { DataTable marTable = _ds.Tables["Mar"]; mar = new Market() { AggRo = new List <TimeValue>() }; mar.Ro = x => { if (mar.AggRo.Count == 1) { return(mar.AggRo[0].value); } for (int i = 1; i < mar.AggRo.Count; i++) { if (x < mar.AggRo[i].Time) { return(mar.AggRo[i - 1].value); } } return(mar.AggRo[mar.AggRo.Count - 1].value); }; foreach (DataRow dr in marTable.Rows) { MarketSegment ms = new MarketSegment() { MSID = Convert.ToInt32(dr["ID"]), Description = dr["Des"].ToString(), Retreat = Convert.ToDouble(dr["Retreat"]), AggLamada = new List <TimeValue>() }; ms.Lamada = x => { if (ms.AggLamada.Count == 1) { return(ms.AggLamada[0].value); } for (int i = 1; i < ms.AggLamada.Count; i++) { if (x < ms.AggLamada[i].Time) { return(ms.AggLamada[i - 1].value); } } return(ms.AggLamada[ms.AggLamada.Count - 1].value); }; string c = dr["ConSet"].ToString(); string p = dr["PreVec"].ToString(); string[] cc = c.Split(','); string[] pp = p.Split(','); for (int i = 0; i < cc.Length; i++) { Route temp = pathList.Find(r => r.RouteID == Convert.ToInt32(cc[i])); double tempvalue = Convert.ToDouble(pp[i]); if (temp != null) { ms.ConsiderationDic.Add(temp, tempvalue); } } mar.Add(ms); } }
public StockHistoryResponseMessage() { RecentHistory = new MarketSegment(); }
public void GenMarket() { mar = new Market() { AggRo = new List <TimeValue>() }; mar.Ro = x => { if (mar.AggRo.Count == 1) { return(mar.AggRo[0].value); } for (int i = 1; i < mar.AggRo.Count; i++) { if (x < mar.AggRo[i].Time) { return(mar.AggRo[i - 1].value); } } return(mar.AggRo[mar.AggRo.Count - 1].value); }; DataTable dt = _ds.Tables["Market"]; foreach (DataRow dr in dt.Rows) { MarketSegment ms = new MarketSegment() { MSID = Convert.ToInt32(dr["ID"]), OriSta = dr["O"].ToString(), DesSta = dr["D"].ToString(), Retreat = Convert.ToDouble(dr["Retreat"]), Transfer = Convert.ToInt32(dr["TRANSFER"]), AggLamada = new List <TimeValue>() }; ms.Lamada = x => { if (ms.AggLamada.Count == 1) { return(ms.AggLamada[0].value); } for (int i = 1; i < ms.AggLamada.Count; i++) { if (x < ms.AggLamada[i].Time) { return(ms.AggLamada[i - 1].value); } } return(ms.AggLamada[ms.AggLamada.Count - 1].value); }; for (int s = 6; s < dt.Columns.Count; s++) { ms.AggLamada.Add(new TimeValue() { value = Convert.ToDouble(dr[s]) }); } mar.Add(ms); } int ss = 0; for (int i = 0; i < dt.Columns.Count - 6; i++) { double total = (mar as List <MarketSegment>).Sum(s => s.AggLamada[i].value); int d = number_of_intervals((Int32)Math.Ceiling(total), 0.1); double Lamada = total / d; mar.AggRo.Add(new TimeValue() { Time = ss, value = Lamada }); foreach (MarketSegment ms in mar) { ms.AggLamada[i].Time = ss; ms.AggLamada[i].value = ((ms.AggLamada[i].value / d) * Math.Exp(-ms.AggLamada[i].value / d)) / Lamada; } ss += d; } TimeHorizon = ss; }
private static void LoadStocksFromFile() { if (_fullHistory != null) { throw new Exception("Cannot LoadStocksFromFile more than once."); } _fullHistory = new MarketSegment(); var random = new Random(); int range = 15 * 365; DateTime coverDate = DateTime.Today.AddDays(random.Next(range)); coverDate = NextWeekday(coverDate); float mult = (float)Math.Pow(2, (random.NextDouble() * 4 - 2));//gives nice range for multiplier //Import all .csv files into companiesRaw var companiesRaw = new List <CompanyDataRaw>(); foreach (string filename in Directory.EnumerateFiles("HistoricData", "*.csv")) { using (var fileReader = new StreamReader(filename)) { var currentCompany = new CompanyDataRaw(); var symbol = fileReader.ReadLine().Trim('"'); var name = fileReader.ReadLine().Trim('"'); currentCompany.MetaData = new Stock(symbol, name); //Prepare filestream fileReader.ReadLine(); fileReader.ReadLine(); fileReader.ReadLine(); while (!fileReader.EndOfStream) { currentCompany.DailyValue.Add(fileReader.ReadLine()); } companiesRaw.Add(currentCompany); } } //Cache stock data (only when all files have data for the given day) var keepParsing = true; for (int dayIndex = 0; dayIndex < companiesRaw[0].DailyValue.Count - 1 && keepParsing; dayIndex++) { DateTime currentDate = companiesRaw[0].CurrentDate; foreach (var company in companiesRaw) { if (!company.AdvanceTo(currentDate)) { //company data ended before currentDate keepParsing = false; break; } } if (keepParsing) { //See if all days are the same var isSynced = true; foreach (var company in companiesRaw) { if (!company.CurrentDate.Equals(currentDate)) { isSynced = false; break; } } if (isSynced) { //all files are at the current date, add to history var marketDay = new MarketDay(coverDate.ToString()); coverDate = NextWeekday(coverDate); foreach (var company in companiesRaw) { var vStock = new ValuatedStock(company.CurrentDayData().Split(','), company.MetaData); vStock.Close = (float)Math.Round((vStock.Close * mult), 2); vStock.Open = (float)Math.Round((vStock.Open * mult), 2); vStock.High = (float)Math.Round((vStock.High * mult), 2); vStock.Low = (float)Math.Round((vStock.Low * mult), 2); vStock.Volume = (int)(vStock.Volume / mult); marketDay.TradedCompanies.Add(vStock); } _fullHistory.Add(marketDay); } companiesRaw[0].AdvanceDay(); } } }
protected void Page_Load(object sender, EventArgs e) { thisBookMark = new IndexBLL().GetSingBook(Request.RawUrl, LoginUserId); var company_id = Convert.ToInt64(Request.QueryString["id"]); if (AuthBLL.GetUserCompanyAuth(LoginUserId, LoginUser.security_Level_id, company_id).CanEdit == false) // 权限验证 { Response.End(); return; } try { company_udfList = new UserDefinedFieldsBLL().GetUdf(DicEnum.UDF_CATE.COMPANY); company_udfValueList = new UserDefinedFieldsBLL().GetUdfValue(DicEnum.UDF_CATE.COMPANY, company_id, company_udfList); site_udfList = new UserDefinedFieldsBLL().GetUdf(DicEnum.UDF_CATE.SITE); site_udfValueList = new UserDefinedFieldsBLL().GetUdfValue(DicEnum.UDF_CATE.SITE, company_id, site_udfList); account = new CompanyBLL().GetCompany(company_id); location_list = new LocationBLL().GetLocationByCompany(company_id); // defaultLocation = new LocationBLL().GetLocationByAccountId(company_id); //if (!IsPostBack) //{ // var company_id = Convert.ToInt64(Request.QueryString["id"]); if (account != null) { subCompanyList = new crm_account_dal().GetMyCompany(account.id); //searchCompany = new crm_account_dal().GetSubCompanys(); #region 为下拉框获取数据源 dic = new CompanyBLL().GetField(); // 分类类别 classification.DataTextField = "show"; classification.DataValueField = "val"; classification.DataSource = dic.FirstOrDefault(_ => _.Key == "classification").Value; classification.DataBind(); classification.Items.Insert(0, new ListItem() { Value = "0", Text = " ", Selected = true }); // 公司类型 CompanyType.DataTextField = "show"; CompanyType.DataValueField = "val"; CompanyType.DataSource = dic.FirstOrDefault(_ => _.Key == "company_type").Value; CompanyType.DataBind(); CompanyType.Items.Insert(0, new ListItem() { Value = "0", Text = " ", Selected = true }); // 市场领域 MarketSegment.DataTextField = "show"; MarketSegment.DataValueField = "val"; MarketSegment.DataSource = dic.FirstOrDefault(_ => _.Key == "market_segment").Value; MarketSegment.DataBind(); MarketSegment.Items.Insert(0, new ListItem() { Value = "0", Text = " ", Selected = true }); // 销售区域 TerritoryName.DataTextField = "show"; TerritoryName.DataValueField = "val"; TerritoryName.DataSource = dic.FirstOrDefault(_ => _.Key == "territory").Value; TerritoryName.DataBind(); TerritoryName.Items.Insert(0, new ListItem() { Value = "0", Text = " ", Selected = true }); // 客户经理 AccountManger.DataTextField = "show"; AccountManger.DataValueField = "val"; AccountManger.DataSource = dic.FirstOrDefault(_ => _.Key == "sys_resource").Value; AccountManger.DataBind(); AccountManger.Items.Insert(0, new ListItem() { Value = "0", Text = " ", Selected = true }); // 税区 TaxRegion.DataTextField = "show"; TaxRegion.DataValueField = "val"; TaxRegion.DataSource = dic.FirstOrDefault(_ => _.Key == "taxRegion").Value; TaxRegion.DataBind(); TaxRegion.Items.Insert(0, new ListItem() { Value = "0", Text = " ", Selected = true }); // 竞争对手 Competitor.DataTextField = "show"; Competitor.DataValueField = "val"; Competitor.DataSource = dic.FirstOrDefault(_ => _.Key == "competition").Value; Competitor.DataBind(); Competitor.Items.Insert(0, new ListItem() { Value = "0", Text = " ", Selected = true }); #endregion company_name.Text = account.name; //isactive.Checked = account.is_active == 1; CompanyNumber.Text = account.no; Phone.Text = account.phone; AlternatePhone1.Text = account.alternate_phone1; AlternatePhone2.Text = account.alternate_phone2; Fax.Text = account.fax; WebSite.Text = account.web_site; is_optoutSurvey.Checked = account.is_optout_survey == 1; mileage.Text = account.mileage == null ? "" : account.mileage.ToString();// todo decmail? 保留两位小数点?? stock_symbol.Text = account.stock_symbol; sic_code.Text = account.sic_code; stock_market.Text = account.stock_market; weibo_url.Text = account.weibo_url; wechat_mp_service.Text = account.wechat_mp_service; wechat_mp_subscription.Text = account.wechat_mp_subscription; CompanyType.SelectedValue = account.type_id == null ? "0" : account.type_id.ToString(); AccountManger.SelectedValue = account.resource_id == null ? "0" : account.resource_id.ToString(); TerritoryName.SelectedValue = account.territory_id == null ? "0" : account.territory_id.ToString(); MarketSegment.SelectedValue = account.market_segment_id == null ? "0" : account.market_segment_id.ToString(); Competitor.SelectedValue = account.competitor_id == null ? "0" : account.competitor_id.ToString(); Tax_Exempt.Checked = account.is_tax_exempt == 1; TaxRegion.SelectedValue = account.tax_region_id == null ? "0" : account.tax_region_id.ToString(); classification.SelectedValue = account.classification_id == null ? "0" : account.classification_id.ToString(); if (Tax_Exempt.Checked) { TaxRegion.Enabled = true; } TaxId.Text = account.tax_identification; if (account.parent_id != null) { var parCompany = new CompanyBLL().GetCompany((long)this.account.parent_id); ParentComoanyName.Text = parCompany == null ? "" : parCompany.name; //父客户 } asset_value.Text = account.asset_value.ToString(); location = new LocationBLL().GetLocationByAccountId(account.id); if (location != null) // 如果该客户的地址是默认地址,不可更改为非默认,只能通过添加别的地址设置为默认这种方式去更改默认地址 { country_idInit.Value = location.country_id.ToString(); province_idInit.Value = location.province_id.ToString(); city_idInit.Value = location.city_id.ToString(); district_idInit.Value = location.district_id.ToString(); address.Text = location.address; AdditionalAddress.Text = location.additional_address; } var company_detail_alert = new EMT.DoneNOW.DAL.crm_account_alert_dal().FindAlert(account.id, EMT.DoneNOW.DTO.DicEnum.ACCOUNT_ALERT_TYPE.COMPANY_DETAIL_ALERT); var new_ticket_alert = new EMT.DoneNOW.DAL.crm_account_alert_dal().FindAlert(account.id, EMT.DoneNOW.DTO.DicEnum.ACCOUNT_ALERT_TYPE.NEW_TICKET_ALERT); var ticket_detail_alert = new EMT.DoneNOW.DAL.crm_account_alert_dal().FindAlert(account.id, EMT.DoneNOW.DTO.DicEnum.ACCOUNT_ALERT_TYPE.TICKET_DETAIL_ALERT); if (company_detail_alert != null) { Company_Detail_Alert.Text = company_detail_alert.alert_text; } if (new_ticket_alert != null) { New_Ticket_Alert.Text = new_ticket_alert.alert_text; } if (ticket_detail_alert != null) { Ticket_Detail_Alert.Text = ticket_detail_alert.alert_text; } } else { Response.End(); } //} } catch (Exception) { Response.End(); } }
public static SelectedMarketSegment CreateSelectedMarketSegmentFromMarketSegment(MarketSegment segment) { var model = new SelectedMarketSegment() { Id = segment.Id, Name = segment.Name, Checked = false, Percent = 0, EId = 0 }; return(model); }
public void DefaultConstructorTest() { var marketSegment = new MarketSegment(); Assert.AreEqual(marketSegment.Count, 0); }