static public bool ImportEod(string DataClientName, string Username, string Password, string Exchanges) { try { LoadDataFeeds(); if (dcbs != null) { DataClientBase dcb = null; foreach (DataClientBase d in dcbs) { if (d.GetType().ToString() == DataClientName) { dcb = d; } } dcb.Proxy = Config.WebProxy; DateTime D = DateTime.UtcNow.AddHours(-4).Date; return(ImportEod(dcb, Username, Password, D, D, Exchanges)); } } catch (Exception e) { Tools.Log("Import Eod:" + e.ToString()); } return(false); }
static private void LoadDataFeeds() { if (dcbs == null) { dcbs = DataClientBase.GetAllDataFeeds(); } }
public frmMainForm() { //// Download data and update to DB //string sDir = @"D:\Stock\Data\iStock", sDownload = @"D:\Stock\Data\Download"; //string sDate = DateTime.Today.Year.ToString() + "-" // + (DateTime.Today.Month.ToString().Length==1 ? "0" + DateTime.Today.Month.ToString():DateTime.Today.Month.ToString()) // + "-" + (DateTime.Today.Day.ToString().Length==1 ? "0" + DateTime.Today.Day.ToString():DateTime.Today.Day.ToString()); ////string sUrl = @"http://istock.vn/GDDDownloader.aspx?id=istock_" + sDate +".zip"; //string sUrl = @"http://istock.vn/GDDDownloader.aspx?id=istock_2009-11-10.zip"; //LibWeb.DownloadWebPage(sUrl,sDownload + @"\test.zip"); //LibTools.Extract("istock_" + sDate +".zip",sDir); //WebLib.iStockPrice(sDir); //Directory.Delete(sDir); // // Required for Windows Form Designer support // PluginManager.Load(Environment.CurrentDirectory + "\\Plugins\\"); PluginManager.OnPluginChanged += new FileSystemEventHandler(OnPluginChange); InitializeComponent(); KeyMessageFilter.AddMessageFilter(ChartControl); DataClient = new EasyChartDataClient(); //new YahooDataClient(); }
static public void ImportHistoricalData(DataClientBase dcb, string Username, string Password, DateTime StartTime, DateTime EndTime, DownloadMode DownloadMode) { if (FuncMsg == null) { FuncMsg = "Importing historical data, Data Feed = " + dcb + ";Mode=" + DownloadMode + ";Start date=" + StartTime.ToString("yyyy-MM-dd"); FuncStartTime = DateTime.Now; try { if (DataFeedAvailable(dcb, Username, Password)) { DataManagerBase dmb = Utils.GetDataManager(Config.DefaultDataManager); int i = 1; string[] ss = dmb.GetSymbolStrings(null, null, null); int succ = 0; int failed = 0; string LastError = ""; if (ss.Length == 0) { Msg = "No symbols in current database"; } foreach (string s in ss) { try { CommonDataProvider cdp; bool b = true; if (DownloadMode == DownloadMode.DownloadIfNoData) { cdp = (CommonDataProvider)dmb[s, 1]; b = cdp.Count == 0; } if (b) { Msg = "Importing historical data " + i + "/" + ss.Length + ";" + s + ";succ=" + succ + ";failed=" + failed + ";LastError=" + LastError; cdp = dcb.GetHistoricalData(s, StartTime, EndTime); if (cdp.Count != 0) { dmb.SaveData(s, cdp, false); } } succ++; i++; } catch (Exception e) { LastError = e.Message; failed++; } } } } finally { FuncMsg = null; } } }
public void GetSymbolList(DataClientBase DataClient, string Exchanges) { this.DataClient = DataClient; this.Exchanges = Exchanges; Msg = ""; ProgressValue = 0; DownloadThread = new Thread(new ThreadStart(BackgroundSymbolList)); DownloadThread.Start(); }
public void GetDataProvider(DataClientBase DataClient, string Symbol) { this.DataClient = DataClient; this.Symbol = Symbol; Msg = ""; ProgressValue = 0; DownloadThread = new Thread(new ThreadStart(BackgroundHistory)); DownloadThread.Start(); }
public void GetEodData(DataClientBase DataClient, string Exchanges, DateTime StartTime, DateTime EndTime) { this.DataClient = DataClient; this.Exchanges = Exchanges; this.StartTime = StartTime; this.EndTime = EndTime; Msg = ""; ProgressValue = 0; DownloadThread = new Thread(new ThreadStart(BackgroundEodData)); DownloadThread.Start(); }
public DemoForm() { // // Required for Windows Form Designer support // PluginManager.Load(Environment.CurrentDirectory + "\\Plugins\\"); PluginManager.OnPluginChanged += new FileSystemEventHandler(OnPluginChange); InitializeComponent(); KeyMessageFilter.AddMessageFilter(ChartControl); DataClient = new EasyChartDataClient(); //new YahooDataClient(); }
/// <summary> /// Load data from yahoo, and start a streaming data thread to update current price. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miLoadFromYahooStreaming_Click(object sender, System.EventArgs e) { //Use yahoo data manager as inner data manager YahooDataManager ydm = new YahooDataManager(); ydm.CacheRoot = FormulaHelper.Root + "Cache"; //MemoryDataManager manage stock data in memory, //Use AddNewPacket to add streaming data packet to it. //Use RemoveSymbol to remove data from memory. //It takes an inner data manager, all historical data is from the inner data manager MemoryDataManager mdm = new MemoryDataManager(ydm); //Assign memory data manager to the chart control. string s = LoadDataManager(mdm, "MSFT", DataCycle.Day, 200); //Avoid flicker when refresh the chart ChartControl.MemoryCrossCursor = true; //Show 15 days future bar. ChartControl.EndTime = DateTime.Today.AddDays(15); //Show chart from 8 months ago. ChartControl.StartTime = DateTime.Today.AddMonths(-8); //You can use mdm.AddNewPacket to add a single bar //mdm.AddNewPacket(new DataPacket("MSFT",DateTime.Now,25,28,24,26,100000,26)); //dcbStream is a DataClientBase class, //It will let you add streaming data to MemoryDataManager in a thread. if (dcbStream == null) { dcbStream = new YahooDataClient(); //You can use other data client, //dcbStream = new ProphetDataClient(); //dcbStream.Login("...","..."); //When streaming packet arrive, call dcb_OnStreamingData dcbStream.OnStreamingData += new StreamingDataChanged(dcb_OnStreamingData); dcbStream.UtcStreamingTime = false; //Start the download thread dcbStream.StartStreaming(s); } else { //SetStreamingSymbol will set symbol for downloading //You can use AddSymbol for multi-symbols downloading dcbStream.SetStreamingSymbol(s); } }
static private void dcb_OnStreamingStopped(object sender, EventArgs e) { DataClientBase dcb = sender as DataClientBase; if (dcb.LastError != null) { Tools.Log("Streaming service error:" + dcb.LastError); if (dcb.LastError is ThreadAbortException) { tUpdateStreaming = null; } dcb.ClearLastError(); } StreamingStopped = true; }
override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); DataClientBase[] dcbs = DataClientBase.GetAllDataFeeds(); foreach (DataClientBase dcb in dcbs) { ddlDataFeed.Items.Add(dcb.ToString()); } base.OnInit(e); }
static private bool DataFeedAvailable(DataClientBase dcb, string Username, string Password) { if (dcb == null) { Msg = "No selected data feed"; return(false); } if (!dcb.Logined) { dcb.Login(Username, Password); } bool b = dcb.Logined || !dcb.NeedLogin; if (!b) { Msg = "Invalid username/password"; } return(b); }
static public void ImportSymbol(DataClientBase dcb, string Username, string Password, string Exchanges) { if (FuncMsg == null) { FuncMsg = "Importing symbols, Data Feed = " + dcb + ";Exchanges=" + Exchanges; FuncStartTime = DateTime.Now; try { if (DataFeedAvailable(dcb, Username, Password)) { string[] ss = dcb.LookupSymbols("", Exchanges, "", ""); DataManagerBase dmb = Utils.GetDataManager(Config.DefaultDataManager); int succ; int failed; dmb.SaveSymbolList(ss, out succ, out failed); Msg = "Import symbols:exchanges=" + Exchanges + ";succ=" + succ + ";failed=" + failed; } } finally { FuncMsg = null; } } }
public DataClientDataManager(DataClientBase DataClient, bool Intraday) { this.DataClient = DataClient; this.Intraday = Intraday; }
/// <summary> /// Show the login dialog /// </summary> /// <param name="DataClient">Data client</param> /// <returns></returns> static public DialogResult Login(DataClientBase DataClient) { Current.DataClient = DataClient; return(Current.ShowDialog()); }
static public bool ImportEod(DataClientBase dcb, string Username, string Password, DateTime StartTime, DateTime EndTime, string Exchanges) { if (FuncMsg == null) { FuncMsg = "Importing end of day data, Data Feed = " + dcb + ";StartTime=" + StartTime.ToString("yyyy-MM-dd") + ";EndTime=" + EndTime.ToString("yyyy-MM-dd") + ";Exchanges=" + Exchanges; FuncStartTime = DateTime.Now; try { int Days = 0; int Records = 0; DataManagerBase dmb = Utils.GetDataManager(Config.DefaultDataManager); Hashtable ht = new Hashtable(); if (DataFeedAvailable(dcb, Username, Password)) { int LocalMergeMax = 100000; int LocalMerge = 0; for (DateTime D = StartTime; D <= EndTime; D = D.AddDays(1)) { Msg = "Downloading end of day data " + D.ToString("yyyy-MM-dd"); DataPacket[] dps = dcb.GetEodData(Exchanges, null, D); Days++; if (dps != null) { foreach (DataPacket dp in dps) { CommonDataProvider cdp = (CommonDataProvider)ht[dp.Symbol]; if (cdp == null) { cdp = CommonDataProvider.Empty; ht[dp.Symbol] = cdp; } LocalMerge++; Records++; cdp.Merge(dp); } } if (LocalMerge < LocalMergeMax && D != EndTime) { continue; } if (ht.Count != 0) { int i = 0; foreach (string s in ht.Keys) { try { Msg = "Importing end of day data " + (++i) + "/" + ht.Count; CommonDataProvider cdp = (CommonDataProvider)ht[s]; dmb.UpdateEod(s, cdp); if ((i % 10) == 0) { GC.Collect(); //avoid hosting recolloect the web application } } catch (Exception e) { Msg = e.ToString(); Tools.Log("ImportEod:" + s + ":" + e.Message); } } ht.Clear(); LocalMerge = 0; } } Msg = "Update success , total " + Days + " days , and " + Records + " records"; return(Records != 0); } } finally { FuncMsg = null; } } return(false); }
override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); LoadDataFeeds(); dcbSelected = null; string SelectedFeed = ReadParam(ddlDataFeed.ID); if (dcbs != null) { foreach (DataClientBase dcb in dcbs) { if (SelectedFeed == dcb.GetType().ToString()) { dcbSelected = dcb; } } } ddlDataFeed.Items.Clear(); foreach (DataClientBase dcb in dcbs) { ListItem li = new ListItem(dcb.ToString(), dcb.GetType().ToString()); li.Selected = dcb == dcbSelected; ddlDataFeed.Items.Add(li); } ddlExchange.Items.Clear(); if (dcbSelected == null && dcbs.Length > 0) { dcbSelected = dcbs[0]; } if (dcbSelected != null) { Response.SetCookie(new HttpCookie(ddlDataFeed.ID, dcbSelected.GetType().ToString())); string[] ssExchanges = dcbSelected.GetExchanges(); ddlExchange.Visible = ssExchanges != null; btnImportSymbol.Enabled = ssExchanges != null; btnDeleteExchange.Enabled = ssExchanges != null; if (ssExchanges != null) { foreach (string s in ssExchanges) { int i = s.IndexOf('='); string r1 = s; string r2 = s; if (i >= 0) { r1 = s.Substring(0, i); r2 = s.Substring(i + 1); } ddlExchange.Items.Add(new ListItem(r2, r1)); } } lDescription.Text = dcbSelected.Description; hlUrl.NavigateUrl = dcbSelected.RegURL; hlUrl.Text = dcbSelected.RegURL; } ddlDownloadMode.Items.Clear(); string[] ss = Enum.GetNames(typeof(DownloadMode)); for (int i = 0; i < ss.Length; i++) { ddlDownloadMode.Items.Add(new ListItem(ss[i], i.ToString())); } tbUsername.Text = ReadParam(tbUsername.ID); tbPassword.Text = ReadParam(tbPassword.ID); SetControlCookie(tbUsername); SetControlCookie(tbPassword); base.OnInit(e); }