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(); }
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 }
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); }
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; }
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(); }
/// <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; }
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(); }
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); }
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; } }
// 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); } }
static public void BindExchange(DropDownList ddlExchange) { DataManagerBase dmb = Utils.GetDefaultDataManager(); ddlExchange.DataSource = dmb.Exchanges; ddlExchange.DataBind(); try { ddlExchange.SelectedValue = Config.DefaultExchange; } catch { } }
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(); }
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(); }
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; } }
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; } } } }
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); }
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 = ""; } }
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) }); } } }
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); }
private void btnDeleteExchange_Click(object sender, System.EventArgs e) { DataManagerBase dmb = Utils.GetDefaultDataManager(); Msg = dmb.DeleteSymbols(ddlExchange.SelectedValue, null, false, false, false) + " symbols deleted"; }