private int DoSaveBars(SymbolFreq symbol, List<BarData> bars) { if (bars.Count == 0) { return 0; } DateTime firstDate = DateTime.MaxValue; DateTime lastDate = DateTime.MinValue; foreach (BarData bar in bars) { if (bar.BarStartTime < firstDate) { firstDate = bar.BarStartTime; } if (bar.BarStartTime > lastDate) { lastDate = bar.BarStartTime; } } //int symbolId = GetSymbolID(symbol.Symbol, symbol.Frequency); string symbolId = symbol.ToUniqueId(); //int updatedBars = 0; using (OleDbConnection dbConnection = new OleDbConnection(connectionString)) { dbConnection.Open(); OleDbCommand command = new OleDbCommand("DELETE FROM BarData WHERE SymbolID = '" + symbolId + "' AND [BarDateTime] >= @FirstDate AND [BarDateTime] <= @LastDate", dbConnection); OleDbParameter paramFirstDate = new OleDbParameter("@FirstDate", OleDbType.DBTimeStamp); paramFirstDate.Value = firstDate; command.Parameters.Add(paramFirstDate); OleDbParameter paramLastDate = new OleDbParameter("@LastDate", OleDbType.DBTimeStamp); paramLastDate.Value = lastDate; command.Parameters.Add(paramLastDate); command.ExecuteNonQuery(); OleDbTransaction transaction; transaction = dbConnection.BeginTransaction(IsolationLevel.ReadUncommitted); foreach (BarData bar in bars) { InsertBar(dbConnection, transaction, bar, symbol.ToUniqueId()); } transaction.Commit(); return bars.Count; } }
public bool DeleteBars(SymbolFreq symbol) { DoDeleteBars(symbol.ToUniqueId()); return true; }
public int SaveBars(SymbolFreq symbol, List<BarData> bars) { // Moving the guts to a private member for obfuscation purposes return DoSaveBars(symbol, bars); }
private List<BarData> DoLoadBars(SymbolFreq symbol, DateTime startDateTime, DateTime endDateTime, int barCount, bool loadFromEnd) { List<BarData> bars = new List<BarData>(); OleDbConnection dbConnection = new OleDbConnection(connectionString); dbConnection.Open(); string query = "SELECT "; if (barCount > 0) { query += "TOP " + barCount + " "; } query += "* FROM BarData WHERE SymbolID = '" + symbol.ToUniqueId() + "'"; if (startDateTime != DateTime.MinValue) { query += " AND BarDateTime >= " + DBDateTime(startDateTime); } if (endDateTime != DateTime.MaxValue) { query += " AND BarDateTime <= " + DBDateTime(endDateTime); } query += " ORDER BY BarDateTime "; if (loadFromEnd) { query += "DESC"; } else { query += "ASC"; } OleDbCommand command = new OleDbCommand(query, dbConnection); OleDbDataReader reader = command.ExecuteReader(); while (reader.Read()) { BarData bar = new BarData(); bar.EmptyBar = Convert.ToBoolean(reader["EmptyBar"]); if (!bar.EmptyBar) { bar.BarStartTime = Convert.ToDateTime(reader["BarDateTime"]); bar.Open = Convert.ToDouble(reader["Open"]); bar.Close = Convert.ToDouble(reader["Close"]); bar.High = Convert.ToDouble(reader["High"]); bar.Low = Convert.ToDouble(reader["Low"]); bar.Bid = Convert.ToDouble(reader["Bid"]); bar.Ask = Convert.ToDouble(reader["Ask"]); bar.Volume = Convert.ToUInt64(reader["Volume"]); bar.OpenInterest = Convert.ToInt32(reader["OpenInterest"]); } bars.Add(bar); } if (dbConnection.State == ConnectionState.Open) { dbConnection.Close(); } if (loadFromEnd) { bars.Reverse(); } return bars; }
public List<BarData> LoadBars(SymbolFreq symbol, DateTime startDateTime, DateTime endDateTime, int barCount, bool loadFromEnd) { // Moved guts to a private for obfuscation purposes return DoLoadBars(symbol, startDateTime, endDateTime, barCount, loadFromEnd); }
public long GetBarCount(SymbolFreq symbol, DateTime startDateTime, DateTime endDateTime) { // Moving the guts to a private member for obfuscation purposes return DoGetBarCount(symbol.ToUniqueId(), startDateTime, endDateTime); }
public int SaveBars(SymbolFreq symbol, List<BarData> bars) { //SqlConnection dbConnection = new SqlConnection(connectionString); //Guid symbol = new Guid(symbolId); return DoSaveBars(symbol.ToUniqueId(), bars); }
public List<BarData> LoadBars(SymbolFreq symbol, DateTime startDateTime, DateTime endDateTime, int maxLoadBars, bool loadFromEnd) { return DoLoadBars(symbol.ToUniqueId(), startDateTime, endDateTime, maxLoadBars, loadFromEnd); }
public long GetBarCount(SymbolFreq symbol, DateTime startDateTime, DateTime endDateTime) { return DoGetBarCount(symbol.ToUniqueId(), startDateTime, endDateTime); }