Example #1
0
        public void DataManager_Execute_InsertOneRecord_WithParams()
        {
            // arrange
            SeedData();
            var dataManager = new DataManagerBase();

            string sql = $"INSERT INTO Airline (Name, DateFounded, TotalEmployees) VALUES (@Name, '01/01/2000', 30000)";

            string name = Guid.NewGuid().ToString().Substring(0, 5);

            var parameters = new Dictionary <string, string>
            {
                { "Name", name }
            };

            // act
            int rowsAffected = dataManager.Execute(sql, _connectionString, CommandType.Text, parameters);
            var result       = dataManager.QuerySingle <Airline>($"SELECT * FROM Airline WHERE Name = '{name}'", _connectionString);

            // assert
            Assert.True(rowsAffected > 0);
            Assert.True(result.Name == name);

            // cleanup
            Teardown();
        }
Example #2
0
        private bool CheckSecretKey(DataManagerBase manager, string secretKey)
        {
            try
            {
                var encryptedData  = manager.Read(CheckKeyFileKey);
                var decryptedHash  = DecryptBytesInternal(encryptedData, secretKey);
                var secretKeyBytes = Encoding.UTF8.GetBytes(secretKey);

                using (var blake2 = new HMACBlake2B(512))
                {
                    var currentHash = blake2.ComputeHash(secretKeyBytes);
                    return(Enumerable.SequenceEqual(currentHash, decryptedHash));
                }
            }
#if DEBUG
            catch (Exception e)
            {
                Debug.WriteLine("Error while checking secret key. " + e.Message);
                return(false);
            }
#else
            catch
            {
                return(false);
            }
#endif
        }
Example #3
0
        protected void Page_Load(object sender, System.EventArgs e)
        {
            // Bind Data
            DataManagerBase dmb = Utils.GetDataManager(Config.DefaultDataManager);

            // Create Chart
            Chart = FormulaChart.CreateChart(
                "Main(3);VOLMA", "MA(14);MA(28)",
                dmb[tbSymbol.Text], ddlSkin.SelectedItem.Value);

            // Set Custom Event Handler
            Chart.NativePaint += new NativePaintHandler(fc_NativePaint);

            int Width  = 800;
            int Height = 600;

            if (lWidth != null)
            {
                Width = Tools.ToIntDef(lWidth.Text, Width);
            }
            if (lHeight != null)
            {
                Height = Tools.ToIntDef(lHeight.Text, Height);
            }

            // Show Chart
            hlChart.ImageUrl = Chart.SaveToWeb(Width, Height, new Rectangle(0, 18, Width, Height - 18 * 2), ImageFormat.Png);
        }
Example #4
0
        private void btnExport_Click(object sender, System.EventArgs e)
        {
            DataManagerBase dmb = Utils.GetDefaultDataManager();

            try
            {
                int      DateIndex   = 0;
                int      TickerIndex = -1;
                string[] ssHeader;
                string   DateFormat = ddlDateFormat.SelectedValue;
                string   DataFormat = ddlFormat.SelectedValue;

                GetFormatInfo(DataFormat, ref DateIndex, ref TickerIndex, out ssHeader, ref DateFormat);

                CommonDataProvider cdp = (CommonDataProvider)dmb[tbSymbol.Text];
                StringBuilder      sb  = new StringBuilder();
                if (cbHasHeader.Checked)
                {
                    sb.Append(ddlFormat.SelectedItem.Text + "\r\n");
                }
                char r = GetSeperator();
                for (int i = 0; i < cdp.Count; i++)
                {
                    for (int j = 0; j < ssHeader.Length; j++)
                    {
                        if (j == DateIndex)
                        {
                            sb.Append(DateTime.FromOADate(cdp["DATE"][i]).ToString(DateFormat, DateTimeFormatInfo.InvariantInfo));
                        }
                        else if (j == TickerIndex)
                        {
                            sb.Append(cdp.GetStringData("Code"));
                        }
                        else
                        {
                            try
                            {
                                double[] dd = cdp[ssHeader[j]];
                                if (dd != null)
                                {
                                    sb.Append(dd[i].ToString("f2"));
                                }
                            }
                            catch
                            {
                            }
                        }
                        sb.Append(r);
                    }
                    sb.Remove(sb.Length - 1, 1);
                    sb.Append("\r\n");
                }
                tbCSVData.Text = sb.ToString();
            }
            catch (Exception ex)
            {
                lMsg.Text = ex.Message;
            }
        }
        public ScenariosRepository()
        {
            _encryptor   = Singleton.Resolve <DataEncryptor>();
            _dataManager = Singleton.Resolve <DataManagerBase>();
            _log         = Singleton.Resolve <ILogger>();

            _encryptor.SecretKeyChanged += ScenariosRepository_SecretKeyChanged;
        }
Example #6
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;
         }
     }
 }
        private void btnAdd_Click(object sender, System.EventArgs e)
        {
            string[]        ss  = tbAddSymbol.Text.Split('\n');
            DataManagerBase dmb = Utils.GetDefaultDataManager();
            int             succ;
            int             failed;

            dmb.SaveSymbolList(ss, out succ, out failed);
            lAddMsg.Text = "succ:" + succ + " failed:" + failed;
            ClearCache();
        }
Example #8
0
 /// <summary>
 /// Default constructor
 /// </summary>
 public BindingListBase(DataManagerBase <T> data_manager)
 {
     if (data_manager == null)
     {
         throw new ArgumentNullException("data_manager", "Invalid data manager");
     }
     this.dataManager = data_manager;
     this.dataManager.DataUpdateFinished += this.ChampionDataManager_DataUpdateFinished;
     this.Source = new SortableBindingList <T>(this.dataManager.GetList());
     return;
 }
Example #9
0
        public static void DeleteWrongData(object sender)
        {
            string          s   = DB.GetCommaValues("select a.QuoteCode from ScanedQuote a,StockData b where ConditionId=-1 and a.QuoteCode=b.QuoteCode and b.Exchange<>'Economic'", ",");
            DataManagerBase dmb = Utils.GetDefaultDataManager();

            string[] ss = s.Split(',');
            dmb.DeleteSymbols(null, ss, false, false, false);
            if (s.Trim() != "")
            {
                DB.DoCommand("delete from ScanedQuote where QuoteCode in ('" + string.Join("','", ss) + "') and ConditionId=-1");
            }
        }
        private void btnExport_Click(object sender, System.EventArgs e)
        {
            DataManagerBase dmb = Utils.GetDefaultDataManager();
            DataTable       dt  = dmb.GetStockList();
            StringBuilder   sb  = new StringBuilder();

            foreach (DataRow dr in dt.Rows)
            {
                sb.Append(dr[0] + ";" + dr[1] + ";" + dr["Exchange"] + "\r");
            }
            tbExport.Text = sb.ToString();
        }
Example #11
0
        override protected void OnInit(EventArgs e)
        {
            if (ddlExchange.Items.Count == 0)
            {
                DataManagerBase ddm = (DataManagerBase)Utils.GetDataManager(Config.DefaultDataManager);
                ddlExchange.DataSource = ddm.Exchanges;
                ddlExchange.DataBind();
            }

            InitializeComponent();
            base.OnInit(e);
        }
Example #12
0
 private void btnClear_Click(object sender, System.EventArgs e)
 {
     try
     {
         DataManagerBase dmb = Utils.GetDefaultDataManager();
         dmb.DeleteSymbols(null, new string[] { tbSymbol.Text }, false, true, true);
     }
     catch (Exception ex)
     {
         lMsg.Text = ex.Message;
     }
 }
Example #13
0
//		private void miOverlayVolume_Click(object sender, System.EventArgs e)
//		{
//			ChartControl.DefaultFormulas = "MAIN#OverlayV!#MA(14)#MA(60);RSI(14)#RSI(28);MACD";
//		}

        /// <summary>
        /// Assign data manager to current chart control
        /// </summary>
        /// <param name="dmb">Data manager to assign</param>
        /// <param name="DefaultSymbol"></param>
        /// <param name="DefaultCycle"></param>
        /// <param name="DefaultBars"></param>
        /// <returns></returns>
        private string LoadDataManager(DataManagerBase dmb, string DefaultSymbol, DataCycle DefaultCycle, int DefaultBars)
        {
            string s = InputBox.ShowInputBox("Quote:", DefaultSymbol);

            if (s != "")
            {
                ChartControl.DataManager      = dmb;
                ChartControl.Symbol           = s;
                ChartControl.StockBars        = DefaultBars;
                ChartControl.CurrentDataCycle = DefaultCycle;
            }
            return(s);
        }
        static public void UpdateRealtime(object Sender)
        {
            DataManagerBase dmb = Utils.GetDefaultDataManager();
            DataTable       dt  = dmb.GetSymbolList();

            foreach (DataRow dr in dt.Rows)
            {
                string        Code = dr["QuoteCode"].ToString();
                IDataProvider idp  = dmb[Code, 2];
                Utils.UpdateRealtime(Code, idp);
                Thread.Sleep(1);
            }
        }
Example #15
0
        static public void BindExchange(DropDownList ddlExchange)
        {
            DataManagerBase dmb = Utils.GetDefaultDataManager();

            ddlExchange.DataSource = dmb.Exchanges;
            ddlExchange.DataBind();
            try
            {
                ddlExchange.SelectedValue = Config.DefaultExchange;
            }
            catch
            {
            }
        }
Example #16
0
        public void DataManager_GetAirlines()
        {
            // arrange
            SeedData();

            var    dataManager = new DataManagerBase();
            string sql         = "SELECT * FROM Airline;";

            // act
            var airlines = dataManager.Query <Airline>(sql, _connectionString, CommandType.Text);

            // assert
            Assert.NotNull(airlines);

            // cleanup
            Teardown();
        }
Example #17
0
        public void DataManager_GetEmployees_NotAllColumnsSelected()
        {
            // arrange
            SeedData();

            var    dataManager = new DataManagerBase();
            string sql         = "SELECT Name, DateFounded FROM Airline;";

            // act
            var airlines = dataManager.Query <Airline>(sql, _connectionString, CommandType.Text);

            // assert
            Assert.NotNull(airlines);

            // cleanup
            Teardown();
        }
Example #18
0
        private void btnDelete_Click(object sender, System.EventArgs e)
        {
            DataManagerBase dmb = Utils.GetDefaultDataManager();

            try
            {
                CommonDataProvider cdp = (CommonDataProvider)dmb[tbSymbol.Text];
                lMsg.Text = "Original data count :" + cdp.Count + "<br>";
                cdp.DeleteData(dpStart.Date, dpEnd.Date);
                lMsg.Text += "New data count : " + cdp.Count;
                dmb.SaveData(tbSymbol.Text, cdp, false);
            }
            catch (Exception ex)
            {
                lMsg.Text = ex.Message;
            }
        }
Example #19
0
        public void DataManager_Execute_InsertOneRecord()
        {
            // arrange
            SeedData();
            var dataManager = new DataManagerBase();

            string sql = "INSERT INTO Airline (Name, DateFounded, TotalEmployees) VALUES ('JetBlue', '01/01/2000', 30000)";

            // act
            int rowsAffected = dataManager.Execute(sql, _connectionString, CommandType.Text);
            var result       = dataManager.QuerySingle <Airline>("SELECT * FROM Airline WHERE Name = 'JetBlue'", _connectionString);

            // assert
            Assert.True(rowsAffected > 0);
            Assert.True(result.Name == "JetBlue");

            // cleanup
            Teardown();
        }
        private void btnRemain_Click(object sender, System.EventArgs e)
        {
            string[] ss = tbRemain.Text.Split('\r');
            for (int i = 0; i < ss.Length; i++)
            {
                string[] sss = ss[i].Split(';');
                if (sss.Length > 0)
                {
                    ss[i] = sss[0].Trim();
                }
                else
                {
                    ss[i] = ss[i].Trim();
                }
            }
            DataManagerBase dmb = Utils.GetDefaultDataManager();

            dmb.DeleteSymbols(null, ss, sender == btnRemain, false, false);
            ClearCache();
        }
        public void TestDataManagerBase()
        {
            DataManagerBase <TestClass, int> tstMgr = new DataManagerBase <TestClass, int>();

            tstMgr.Provider = new LocalDataProvider <TestClass>();
            tstMgr.Clear();
            tstMgr.Add(new TestClass {
                Id = 111, Name = "Myname1", Remark = "My remark1"
            });
            tstMgr.Add(new TestClass {
                Id = 121, Name = "Myname2", Remark = "My remark2"
            });
            tstMgr.Add(new TestClass {
                Id = 21, Name = "Myname3", Remark = "My remark3"
            });

            Assert.AreEqual(tstMgr.GetAll().Count, 3);

            tstMgr.Save();
        }
        private void RegisterModel()
        {
            Assembly assembly;

            assembly = Assembly.Load("Assembly-CSharp");
            Type[] types = assembly.GetExportedTypes();
            foreach (Type t in types)
            {
                ModelRegister modelRegister = t.GetCustomAttribute <ModelRegister>();
                if (modelRegister != null)
                {
                    if (modelRegister.GameName == AppSetting.MineGameName)
                    {
                        DataManagerBase mb = (DataManagerBase)Activator.CreateInstance(t);
                        mb.OnInit();
                        m_DataManagerDic[t] = mb;
                    }
                }
            }
        }
Example #23
0
        public void DataManager_MultipleResultSet()
        {
            // arrange
            SeedData();

            var    dataManager = new DataManagerBase();
            string sql         = "SELECT * FROM Airline; SELECT * FROM Employee;";

            // act
            var result = dataManager.QueryMultiple(sql, _connectionString, CommandType.Text);

            // still a WIP - slow, but this does work
            var airlines  = result.Tables[0].ToList <Airline>();
            var employees = result.Tables[1].ToList <Employee>();

            // assert
            Assert.NotNull(result);

            // cleanup
            Teardown();
        }
        static public IDataProvider GetDataProvider(DataManagerBase dmb, string Symbol, int N)
        {
            IDataProvider idp = null;

            if (Config.PrescanLoadToMemory)
            {
                if ((DateTime.Now - LastCacheTime).TotalDays > 1)
                {
                    ClearCache();
                }
                idp = (IDataProvider)htCache[Symbol];
            }
            if (idp == null)
            {
                idp = dmb[Symbol, N];
                if (Config.PrescanLoadToMemory)
                {
                    htCache[Symbol] = idp;
                }
            }
            return(idp);
        }
Example #25
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;
         }
     }
 }
        static public void PreScan(object Sender)
        {
            Tools.Log("Prescan starting");
            if (StartTime > DateTime.MinValue)
            {
                return;
            }
            StartTime = DateTime.Now;
            try
            {
                string[] PreExchange = Config.PreScanExchange.Split(';');
                for (int i = 0; i < PreExchange.Length; i++)
                {
                    PreExchange[i] = Utils.GetPart1(PreExchange[i]);
                }

                string[]  PreScan          = Config.PreScan.Split(';');
                Hashtable htConditionIdMap = new Hashtable();
                DbParam[] dpPreScan        = new DbParam[] {
                    new DbParam("@Condition", DbType.String, ""),
                    new DbParam("@Exchange", DbType.String, ""),
                    new DbParam("@StartTime", DbType.DateTime, DateTime.Now),
                    new DbParam("@ScanType", DbType.Int32, 1),
                };

                // Insert pre-defined scan to condition
                // Get condition id .
                BaseDb bd = DB.Open(false);
                try
                {
                    string s = bd.GetCommaValues("select ConditionId from Condition " + GetWhere("EndTime"), "");
                    if (s != "")
                    {
                        bd.DoCommand("delete from ScanedQuote where ConditionId in (" + s + ")");
                        bd.DoCommand("delete from Condition " + GetWhere("EndTime"));
                    }

                    Tools.Log("PreScan=" + PreScan.Length + ";PreExchange=" + PreExchange.Length);

                    for (int i = 0; i < PreScan.Length; i++)
                    {
                        for (int j = 0; j < PreExchange.Length; j++)
                        {
                            dpPreScan[0].Value = Utils.GetName(PreScan[i]);
                            dpPreScan[1].Value = PreExchange[j];
                            dpPreScan[3].Value = Utils.GetParam(PreScan[i], "1");
                            bd.DoCommand("insert into Condition (Condition,Exchange,StartTime,Scaned,ScanType) values (?,?,?,0,?)", dpPreScan);
                        }
                    }

                    DataTable dtPreScan =
                        bd.GetDataTable("select ConditionId,Condition,Exchange from Condition " + GetWhere("StartTime"), null, PreScan.Length * PreExchange.Length);
                    foreach (DataRow dr in dtPreScan.Rows)
                    {
                        htConditionIdMap[dr["Condition"].ToString().Trim() + dr["Exchange"].ToString().Trim()] = dr["ConditionId"].ToString();
                    }
                }
                finally
                {
                    bd.Close();
                }

                Tools.Log("Get scan formulas");

                // Get scan formulas
                FormulaBase[] fbs = new FormulaBase[PreScan.Length];
                int[]         Ns  = new int[PreScan.Length];
                int           N   = 0;
                for (int i = 0; i < fbs.Length; i++)
                {
                    fbs[i] = FormulaBase.GetFormulaByName("Scan." + Utils.GetValue(PreScan[i]));
                    Tools.Log(fbs[i].FullName);
                    if (fbs[i] != null)
                    {
                        Ns[i] = fbs[i].DataCountAtLeast();
                        N     = Math.Max(N, Ns[i]);
                    }
                }
                if (Config.PrescanLoadToMemory)
                {
                    N = Config.MaxDataForPull;
                }

                Tools.Log("Pre-Scan- N = " + N);

                DataManagerBase dmb = Utils.GetDataManager(Config.DefaultDataManager);
                DataTable       dt  = dmb.GetStockList();
                if (dt == null)
                {
                    return;
                }
                Tools.Log(dt.Rows.Count.ToString());

                // Scan
                int       Progress      = 0;
                Hashtable htTotal       = new Hashtable();
                Hashtable htResultCount = new Hashtable();
                ArrayList al            = new ArrayList();
                try
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        try
                        {
                            string Symbol = dr[0].ToString();

                            IDataProvider idp = GetDataProvider(dmb, Symbol, N);

                            if (!Utils.VerifyVolumeAndDate(idp))
                            {
                                continue;
                            }
                            string NowExchange = dr["Exchange"].ToString();
                            foreach (string s in PreExchange)
                            {
                                if (s.Length <= NowExchange.Length)
                                {
                                    if (string.Compare(s, NowExchange.Substring(0, s.Length), true) == 0)
                                    {
                                        NowExchange = s;
                                        break;
                                    }
                                }
                            }

                            for (int j = 0; j < fbs.Length; j++)
                            {
                                try
                                {
                                    if (fbs[j] != null)
                                    {
                                        idp.MaxCount = Ns[j];
                                        FormulaPackage fp          = fbs[j].Run(idp);
                                        string         ConditionId = (string)htConditionIdMap[Utils.GetName(PreScan[j]) + NowExchange];
                                        if (ConditionId != null)
                                        {
                                            FormulaData fd = fp[fp.Count - 1];
                                            if (fd.Length > 0)
                                            {
                                                if (fd.LASTDATA > 0)
                                                {
                                                    al.Add(ConditionId + "," + Symbol);
                                                    htResultCount[ConditionId] = Utils.ObjPlusDef(htResultCount[ConditionId], 1);
                                                }
                                            }
                                            htTotal[ConditionId] = Utils.ObjPlusDef(htTotal[ConditionId], 1);
                                        }
                                        Progress++;
                                        if ((Progress % 10) == 0)
                                        {
                                            HttpRuntime.Cache["PreScan"] = Progress;
                                        }
                                    }
                                }
                                catch (Exception e)
                                {
                                    Tools.Log(Symbol + "/" + fbs[j] + "/" + e);
                                }
                            }
                            Thread.Sleep(1);
                        }
                        catch (Exception e)
                        {
                            Tools.Log("Pre-scan symbol loop:" + e.Message);
                        }
                    }
                }
                finally
                {
                    Utils.BulkInsert(al);
                }

                // Update pre-scan conditions
                dpPreScan = new DbParam[] {
                    new DbParam("@Scaned", DbType.Int32, 0),
                    new DbParam("@Total", DbType.Int32, 0),
                    new DbParam("@ResultCount", DbType.Int32, 0),
                    new DbParam("@EndTime", DbType.DateTime, DateTime.Now),
                };
                bd = DB.Open(false);
                try
                {
                    for (int i = 0; i < PreScan.Length; i++)
                    {
                        for (int j = 0; j < PreExchange.Length; j++)
                        {
                            string ConditionId = (string)htConditionIdMap[Utils.GetName(PreScan[i]) + PreExchange[j]];
                            dpPreScan[0].Value = Utils.ObjDef(htTotal[ConditionId], 0);
                            dpPreScan[1].Value = Utils.ObjDef(htTotal[ConditionId], 0);
                            dpPreScan[2].Value = Utils.ObjDef(htResultCount[ConditionId], 0);

                            bd.DoCommand("update Condition set Scaned=?,Total=?,ResultCount=?,EndTime=? where ConditionId=" +
                                         ConditionId, dpPreScan);
                        }
                    }
                }
                finally
                {
                    bd.Close();
                }
            }
            catch (Exception e)
            {
                Tools.Log("Update pre-scan service:" + e.Message);
            }
            finally
            {
                StartTime = DateTime.MinValue;
            }
        }
        public static void UpdateFormula(object sender)
        {
            if (StartTime > DateTime.MinValue)
            {
                return;
            }
            StartTime = DateTime.Now;
            try
            {
                string[]      ss        = Config.AutoPullFormulaData.Split(';');
                string[]      ssName    = new string[ss.Length];
                string[]      ssFormula = new string[ss.Length];
                FormulaBase[] fbs       = new FormulaBase[ss.Length];
                int[]         Ns        = new int[ss.Length];
                int           N         = 0;
                for (int i = 0; i < ss.Length; i++)
                {
                    ssName[i]    = Utils.GetName(ss[i]);
                    ssFormula[i] = Utils.GetValue(ss[i]);
                    fbs[i]       = FormulaBase.GetFormulaByName(ssFormula[i]);
                    Ns[i]        = fbs[i].DataCountAtLeast();
                    Tools.Log(ssName[i] + "=" + Ns[i]);
                    N = Math.Max(N, Ns[i]);
                }

                DataManagerBase dmb = Utils.GetDataManager(Config.DefaultDataManager);
                DataTable       dt  = dmb.GetSymbolList(null, null, null);
                if (dt == null)
                {
                    return;
                }

                DbParam[] dps = new DbParam[] {
                    new DbParam("@QuoteCode", DbType.String, ""),
                    new DbParam("@FormulaName", DbType.String, ""),
                    new DbParam("@FormulaValue", DbType.Double, 0),
                    new DbParam("@CalculateTime", DbType.DateTime, DateTime.Now)
                };

                DB.DoCommand("delete from FormulaValue");
                for (int j = 0; j < dt.Rows.Count; j++)
                {
                    try
                    {
                        DataRow       dr  = dt.Rows[j];
                        IDataProvider idp = dmb[dr[0].ToString(), N];

                        dps[0].Value = dr[0].ToString();
                        for (int i = 0; i < fbs.Length; i++)
                        {
                            idp.MaxCount = Ns[i] + 10;
                            dps[1].Value = ssName[i];
                            if (fbs[i] != null)
                            {
                                FormulaData fd = fbs[i].GetFormulaData(idp, ssFormula[i]);
                                if (fd.Length > 0)
                                {
                                    double d = fd.LASTDATA;
                                    if (!double.IsNaN(d))
                                    {
                                        dps[2].Value = d;
                                        DB.DoCommand("insert into FormulaValue (QuoteCode,FormulaName,FormulaValue,CalculateTime) values (?,?,?,?)", dps);
                                    }
                                    else if (ssFormula[i] != "NAME")
                                    {
                                        Tools.Log("Insert value error:" + fbs[i].Name + ";Data Length=" + fd.Length + ";" + dr[0]);
                                    }
                                }
                            }
                        }
                        Msg = ";" + j + "/" + dt.Rows.Count + ";" + dr[0];
                    }
                    catch (Exception e)
                    {
                        Tools.Log("Update Formula Values: " + dt.Rows[j][0] + "," + e);
                    }
                }
            }
            catch (Exception e)
            {
                Tools.Log("Update Formula Values: " + e);
            }
            finally
            {
                StartTime = DateTime.MinValue;
                tUpdate   = null;
                Msg       = "";
            }
        }
Example #28
0
        public static void Scanning(object o)
        {
            ScanId          si  = (ScanId)o;
            FormulaBase     fb  = FormulaBase.GetFormulaByName("Scan." + si.Condition);
            DataManagerBase dmb = (DataManagerBase)Utils.GetDataManager(Config.DefaultDataManager);

            if (fb != null)
            {
                int N = fb.DataCountAtLeast();
                int M = N;
                if (Config.PrescanLoadToMemory)
                {
                    N = FormulaBase.MaxForAllScan;
                }

                string Where = "";
                if (si.Exchange != "")
                {
                    Where = " where Exchange = '" + si.Exchange + "'";
                }
                //DataTable dt = DB.GetDataTable("select QuoteCode from StockData"+Where);
                string[] ss = dmb.GetSymbolStrings(si.Exchange, null, null);
                if (ss != null)
                {
                    DB.DoCommand("update condition set Total=?,Scaned=0,StartTime=? where conditionId=?",
                                 new DbParam[] {
                        new DbParam("@Total", DbType.Int32, ss.Length),
                        new DbParam("@StartTime", DbType.DateTime, DateTime.Now),
                        new DbParam("@ConditionId", DbType.Int32, si.ConditionId)
                    });

                    int       i  = 0;
                    ArrayList al = new ArrayList();
                    try
                    {
                        foreach (string s in ss)
                        {
                            try
                            {
                                //ddm.AutoYahooToDB = false;
                                //ddm.DownloadRealTimeQuote = false;
                                IDataProvider idp = Admin.UpdatePreScan.GetDataProvider(dmb, s, N);
                                idp.MaxCount = M;
                                //IDataProvider idp = ddm[s,N];
                                if (Utils.VerifyVolumeAndDate(idp))
                                {
                                    FormulaPackage fp = fb.Run(idp);
                                    FormulaData    fd = fp[fp.Count - 1];
                                    if (fd.Length > 0)
                                    {
                                        if (fd.LASTDATA > 0)
                                        {
                                            al.Add(si.ConditionId + "," + s);
                                        }
                                    }
                                }
                                i++;
                                if ((i % 10) == 0)
                                {
                                    HttpRuntime.Cache[si.ConditionId] = i;
                                    if ((i % 100) == 0)
                                    {
                                        Thread.Sleep(1);
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                Tools.Log("Scanning:" + ex.Message);
                            }
                        }
                    }
                    finally
                    {
                        Utils.BulkInsert(al);
                    }

                    HttpRuntime.Cache[si.ConditionId] = ss.Length;
                    DB.DoCommand("update condition set Scaned=?,ResultCount=?,EndTime=? where ConditionId=" + si.ConditionId,
                                 new DbParam[] {
                        new DbParam("@Total", DbType.Int32, ss.Length),
                        new DbParam("@ResultCount", DbType.Int32, al.Count),
                        new DbParam("@EndDate", DbType.DateTime, DateTime.Now)
                    });
                }
            }
        }
Example #29
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);
        }
Example #30
0
        private void btnDeleteExchange_Click(object sender, System.EventArgs e)
        {
            DataManagerBase dmb = Utils.GetDefaultDataManager();

            Msg = dmb.DeleteSymbols(ddlExchange.SelectedValue, null, false, false, false) + " symbols deleted";
        }