示例#1
0
        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);
        }
示例#2
0
 static private void LoadDataFeeds()
 {
     if (dcbs == null)
     {
         dcbs = DataClientBase.GetAllDataFeeds();
     }
 }
示例#3
0
        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();
        }
示例#4
0
 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;
         }
     }
 }
示例#5
0
 public void GetSymbolList(DataClientBase DataClient, string Exchanges)
 {
     this.DataClient = DataClient;
     this.Exchanges  = Exchanges;
     Msg             = "";
     ProgressValue   = 0;
     DownloadThread  = new Thread(new ThreadStart(BackgroundSymbolList));
     DownloadThread.Start();
 }
示例#6
0
 public void GetDataProvider(DataClientBase DataClient, string Symbol)
 {
     this.DataClient = DataClient;
     this.Symbol     = Symbol;
     Msg             = "";
     ProgressValue   = 0;
     DownloadThread  = new Thread(new ThreadStart(BackgroundHistory));
     DownloadThread.Start();
 }
示例#7
0
 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();
 }
示例#8
0
        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();
        }
示例#9
0
        /// <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);
            }
        }
示例#10
0
        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;
        }
示例#11
0
        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);
        }
示例#12
0
        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);
        }
示例#13
0
 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;
         }
     }
 }
示例#14
0
 public DataClientDataManager(DataClientBase DataClient, bool Intraday)
 {
     this.DataClient = DataClient;
     this.Intraday   = Intraday;
 }
示例#15
0
 /// <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());
 }
示例#16
0
        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);
        }
示例#17
0
        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);
        }