Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
 public StockHistoryResponseMessage()
 {
     RecentHistory = new MarketSegment();
 }
Exemple #7
0
        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;
        }
Exemple #8
0
        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();
                }
            }
        }
Exemple #9
0
        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();
            }
        }
Exemple #10
0
        public static SelectedMarketSegment CreateSelectedMarketSegmentFromMarketSegment(MarketSegment segment)
        {
            var model = new SelectedMarketSegment()
            {
                Id      = segment.Id,
                Name    = segment.Name,
                Checked = false,
                Percent = 0,
                EId     = 0
            };

            return(model);
        }
Exemple #11
0
        public void DefaultConstructorTest()
        {
            var marketSegment = new MarketSegment();

            Assert.AreEqual(marketSegment.Count, 0);
        }