static void _cel_TicksResolved(CQGTicks cqgTicks, CQGError cqgError) { ChangeTimeoutState(false, false); if (_isStoped) { return; } var symbol = cqgTicks.Request.Symbol; StoreTickData(cqgTicks, cqgError, _userName); }
private void SessionOnTicksAdded(CQGTicks cqgTicks, int addedTicksCount) { for (var i = 0; i < addedTicksCount; i++) { var tick = cqgTicks[cqgTicks.Count - i - 1]; SendOutMessage(new ExecutionMessage { // TODO TradePrice = (decimal)tick.Price, Volume = tick.Volume, ExecutionType = ExecutionTypes.Tick, }); } }
private static void TickRequest(string symbolName) { try { if (!Cel.IsStarted) { FinishCollectingSymbol(symbolName, false, 0, "CQG not started"); return; } if (_rangeDateStart < DateTime.Now.AddDays(-Settings.Default.MaxTickDays)) { _rangeDateStart = DateTime.Now.AddDays(-Settings.Default.MaxTickDays); } if (DateTime.Today.DayOfWeek == DayOfWeek.Monday) { _rangeDateStart = _rangeDateStart.AddDays(-2); } _historicalPeriod = "tick"; var tickRequest = Cel.CreateTicksRequest(); //LineTime = CEL.Environment.LineTime; tickRequest.RangeStart = _rangeDateStart; tickRequest.RangeEnd = _rangeDateEnd; tickRequest.Type = eTicksRequestType.trtSinceTimeNotify; tickRequest.Symbol = symbolName; tickRequest.SessionsFilter = _sessionFilter; CQGTicks ticks = Cel.RequestTicks(tickRequest); if (ticks.Status == eRequestStatus.rsInProgress) { } } catch (Exception ex) { Console.WriteLine(ex); } }
public void TicksAdd(CQGTicks cqg_ticks, CQGError cqgError, string userName) { if (_shouldStop) return; try { _logger.LogAdd("Tick data resolved for symbol:" + cqg_ticks.Request.Symbol, Category.Information, true); var ss = _aSymbolStates[cqg_ticks.Request.Symbol]; ss.IsCollected = true; if (cqgError != null && cqgError.Code != 0) { ss.IsSuccess = false; } else { DatabaseManager.CreateTickTable(cqg_ticks.Request.Symbol); DateTime runDateTime = DateTime.Now; int groupId = 0; if (cqg_ticks.Count != 0) { DatabaseManager.DeleteTicks(cqg_ticks.Request.Symbol, cqg_ticks[0].Timestamp, cqg_ticks[cqg_ticks.Count - 1].Timestamp); for (int i = cqg_ticks.Count - 1; i >= 0; i--) { if (_shouldStop) break; AddTick(cqg_ticks[i], cqg_ticks.Request.Symbol, runDateTime, ++groupId, userName); } } DatabaseManager.CommitQueueTick(); ss.IsSuccess = true; } _aSymbolStates[cqg_ticks.Request.Symbol] = ss; OnSymbolCollectEnd(cqg_ticks.Request.Symbol, ss.IsSuccess, _historicalPeriod); if (SymbolsCollected == _aSymbolStates.Count) { OnFinished(); } } catch (Exception ex) { Console.WriteLine(ex.Message); _logger.LogAdd("TicksAdd. " + ex, Category.Error); } }
public static void TicksAdd(CQGTicks cqgTicks, CQGError cqgError, string userName) { try { if (cqgError != null && cqgError.Code != 0) { FinishCollectingSymbol(cqgTicks.Request.Symbol, false); } else { DatabaseManager.CreateTickTable(cqgTicks.Request.Symbol); DateTime runDateTime = DateTime.Now; int groupId = 0; if (cqgTicks.Count != 0) { new Thread(() => { lock (_lockHistInsert) { OnTickInsertingStarted(cqgTicks.Request.Symbol, cqgTicks.Count); DateTime _tmpTime=new DateTime(); int end; if (_rangeDateEnd == _tmpTime) { end = cqgTicks.Count - 1; } else end = CqgGetId(cqgTicks, _rangeDateEnd); Console.WriteLine(DatabaseManager.GetMinTime(cqgTicks.Request.Symbol)); Console.WriteLine(DatabaseManager.GetMaxTime(cqgTicks.Request.Symbol)); Console.WriteLine(cqgTicks.StartTimestamp); Console.WriteLine(cqgTicks[end].Timestamp); if (_tmpTime == DatabaseManager.GetMinTime(cqgTicks.Request.Symbol))//todo if empty { var progr = 0; var rowsMaxCount = end; var rowsInserted = 0; OnProgressBarChanged(progr); Console.WriteLine(cqgTicks[end].Timestamp); Console.WriteLine(cqgTicks[0].Timestamp); for (int i = 0; i <=end; i++) { rowsInserted++; //Console.WriteLine(cqgTicks[i].Timestamp); if (_isStoped) break; AddTick(cqgTicks[i], cqgTicks.Request.Symbol, runDateTime, ++groupId, userName); var cto = (double)rowsMaxCount; var newProgr = (int)Math.Round((rowsInserted / cto) * 100f); if (newProgr > progr) { progr = newProgr; OnProgressBarChanged(progr); } //OnProgressBarChanged(progress); } } else if (DatabaseManager.GetMinTime(cqgTicks.Request.Symbol) > cqgTicks.StartTimestamp &&//todo ned test//6 DatabaseManager.GetMaxTime(cqgTicks.Request.Symbol) < cqgTicks[end].Timestamp) { int first_start = 0; int first_end = CqgGetId(cqgTicks,DatabaseManager.GetMinTime(cqgTicks.Request.Symbol)); Console.WriteLine(cqgTicks[first_start].Timestamp + " " + cqgTicks[first_end].Timestamp); int last_start = CqgGetId(cqgTicks, DatabaseManager.GetMaxTime(cqgTicks.Request.Symbol)); int last_end = end; Console.WriteLine(cqgTicks[last_start].Timestamp + " " + cqgTicks[last_end].Timestamp); for (int i = first_start; i <= first_end; i++) { if (_isStoped) break; AddTick(cqgTicks[i], cqgTicks.Request.Symbol, runDateTime, ++groupId, userName); } for (int i = last_start; i <= last_end; i++) { if (_isStoped) break; AddTick(cqgTicks[i], cqgTicks.Request.Symbol, runDateTime, ++groupId, userName); } } else if ( DatabaseManager.GetMaxTime(cqgTicks.Request.Symbol) < cqgTicks[end].Timestamp && DatabaseManager.GetMaxTime(cqgTicks.Request.Symbol) > cqgTicks.StartTimestamp)//todo ned test//4 { int StartTimestamp = CqgGetId(cqgTicks, DatabaseManager.GetMaxTime(cqgTicks.Request.Symbol)); Console.WriteLine(cqgTicks[StartTimestamp].Timestamp); Console.WriteLine(cqgTicks[end].Timestamp); var progr = 0; OnProgressBarChanged(progr); var rowsMaxCount = end - StartTimestamp; var rowsInserted=0; for (int i = StartTimestamp; i <= end; i++) { rowsInserted++; if (_isStoped) break; AddTick(cqgTicks[i], cqgTicks.Request.Symbol, runDateTime, ++groupId, userName); var cto = (double)rowsMaxCount; var newProgr = (int)Math.Round((rowsInserted / cto) * 100f); if (newProgr > progr) { progr = newProgr; OnProgressBarChanged(progr); } } //Console.WriteLine(cqgTicks.StartTimestamp); } else if (DatabaseManager.GetMinTime(cqgTicks.Request.Symbol) < cqgTicks[end].Timestamp && DatabaseManager.GetMinTime(cqgTicks.Request.Symbol) > cqgTicks.StartTimestamp)//todo ned test//5 { end = CqgGetId(cqgTicks,DatabaseManager.GetMinTime(cqgTicks.Request.Symbol)); Console.WriteLine(cqgTicks[end].Timestamp); Console.WriteLine(cqgTicks[0].Timestamp); var progr = 0; OnProgressBarChanged(progr); var rowsInserted = 0; var rowsMaxCount = end; for (int i = 0; i <= end; i++) { rowsInserted++; if (_isStoped) break; AddTick(cqgTicks[i], cqgTicks.Request.Symbol, runDateTime, ++groupId, userName); var cto = (double)rowsMaxCount; var newProgr = (int)Math.Round((rowsInserted / cto) * 100f); if (newProgr > progr) { progr = newProgr; OnProgressBarChanged(progr); } } } else if (DatabaseManager.GetMinTime(cqgTicks.Request.Symbol) > cqgTicks[end].Timestamp)//todo test 2 { var progr = 0; OnProgressBarChanged(progr); var rowsInserted = 0; var rowsMaxCount = end; for (int i = 0; i <= end; i++) { if (_isStoped) break; AddTick(cqgTicks[i], cqgTicks.Request.Symbol, runDateTime, ++groupId, userName); var cto = (double)rowsMaxCount; var newProgr = (int)Math.Round((rowsInserted / cto) * 100f); if (newProgr > progr) { progr = newProgr; OnProgressBarChanged(progr); } } } else if (DatabaseManager.GetMaxTime(cqgTicks.Request.Symbol) < cqgTicks.StartTimestamp)//todo test 1 { var progr = 0; OnProgressBarChanged(progr); var rowsInserted = 0; var rowsMaxCount = end; for (int i = 0; i <= end; i++) { if (_isStoped) break; AddTick(cqgTicks[i], cqgTicks.Request.Symbol, runDateTime, ++groupId, userName); var cto = (double)rowsMaxCount; var newProgr = (int)Math.Round((rowsInserted / cto) * 100f); if (newProgr > progr) { progr = newProgr; OnProgressBarChanged(progr); } } } DatabaseManager.CommitQueueTick(); FinishCollectingSymbol(cqgTicks.Request.Symbol, true); OnProgressBarChanged(100); } }) { Name ="InsertingHistoricalThread"}.Start(); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public static int CqgGetId(CQGTicks ticks, DateTime date) { int l = 0; // нижняя граница int u = ticks.Count - 1; // верхняя граница int m = -1; while (l <= u) { m = (l + u) / 2; if (ticks[m].Timestamp== date)//todo test serch { ////Console.WriteLine((ticks[m].Timestamp)); //if (ticks[m].Timestamp > date) //{ // l = 0; // u = m; // while (l <= u) // { // m = (l + u) / 2; // if (ticks[m].Timestamp.Hour==date.Hour) // return m; // //Console.WriteLine(ticks[m].Timestamp); // if (ticks[m].Timestamp.Hour < date.Hour) l = m + 1; // if (ticks[m].Timestamp.Hour > date.Hour) u = m - 1; // } //} //if (ticks[m].Timestamp < date) //{ // l = m; // u = ticks.Count-1; // while (l <= u) // { // int tmp = m; // m = (l + u) / 2; // if (ticks[m].Timestamp.Hour==date.Hour) // return m; // if (ticks[m].Timestamp.Day > date.Day) // return tmp; // //Console.WriteLine(ticks[m].Timestamp); // if (ticks[m].Timestamp.Hour < date.Hour) l = m + 1; // if (ticks[m].Timestamp.Hour > date.Hour) u = m - 1; // } //} //if (l >= u) return m; return m; } if (ticks[m].Timestamp < date) l = m + 1; if (ticks[m].Timestamp > date) u = m - 1; } return m; }
static void _cel_TicksResolved(CQGTicks cqgTicks, CQGError cqgError) { ChangeTimeoutState(false, false); if (_isStoped) return; var symbol = cqgTicks.Request.Symbol; TicksAdd(cqgTicks, cqgError, _userName); }
public static int CqgGetId(CQGTicks ticks, DateTime date) { int l = 0; // нижняя граница int u = ticks.Count - 1; // верхняя граница int m = -1; while (l <= u) { m = (l + u) / 2; if (ticks[m].Timestamp == date)//todo test serch { ////Console.WriteLine((ticks[m].Timestamp)); //if (ticks[m].Timestamp > date) //{ // l = 0; // u = m; // while (l <= u) // { // m = (l + u) / 2; // if (ticks[m].Timestamp.Hour==date.Hour) // return m; // //Console.WriteLine(ticks[m].Timestamp); // if (ticks[m].Timestamp.Hour < date.Hour) l = m + 1; // if (ticks[m].Timestamp.Hour > date.Hour) u = m - 1; // } //} //if (ticks[m].Timestamp < date) //{ // l = m; // u = ticks.Count-1; // while (l <= u) // { // int tmp = m; // m = (l + u) / 2; // if (ticks[m].Timestamp.Hour==date.Hour) // return m; // if (ticks[m].Timestamp.Day > date.Day) // return tmp; // //Console.WriteLine(ticks[m].Timestamp); // if (ticks[m].Timestamp.Hour < date.Hour) l = m + 1; // if (ticks[m].Timestamp.Hour > date.Hour) u = m - 1; // } //} //if (l >= u) return m; return(m); } if (ticks[m].Timestamp < date) { l = m + 1; } if (ticks[m].Timestamp > date) { u = m - 1; } } return(m); }
//** public static void StoreTickData(CQGTicks cqgTicks, CQGError cqgError, string userName) { //try //{ if ((cqgError != null && cqgError.Code != 0)) { FinishCollectingSymbol(cqgTicks.Request.Symbol, false, 0, "Expired! Error code: " + cqgError.Code + ". Description:" + cqgError.Description); return; } if (cqgTicks.Count == 0) { FinishCollectingSymbol(cqgTicks.Request.Symbol, false, 0, "No data recived"); return; } new Thread(() => { lock (_lockHistInsert) { int groupId = 0; OnTickInsertingStarted(cqgTicks.Request.Symbol, cqgTicks.Count); DateTime _tmpTime = new DateTime(); int first_start = 0; int first_end = _rangeDateEnd == _tmpTime ? cqgTicks.Count - 1 : CqgGetId(cqgTicks, _rangeDateEnd); ///****************************************// //inserting OnProgressBarChanged(0); var progr = 0; var rowsMaxCount = (first_end - first_start); var rowsInserted = 0; var cto = (double)rowsMaxCount; var realyInsertedCount = 0; for (int i = first_start; i <= first_end; i++) { if (_isStoped) { break; } ClientDatabaseManager.CreateTickTable(cqgTicks.Request.Symbol, cqgTicks[i].Timestamp); if (!ClientDatabaseManager.IsThisHourExistsInTable(cqgTicks.Request.Symbol, cqgTicks[i].Timestamp)) { AddTick(cqgTicks[i], cqgTicks.Request.Symbol, DateTime.Now, ++groupId, userName); realyInsertedCount++; } rowsInserted++; var newProgr = (int)Math.Round((rowsInserted / cto) * 100f); if (newProgr > progr) { progr = newProgr; OnProgressBarChanged(progr); } } ClientDatabaseManager.CommitQueueTick(); if (!_isStoped) { FinishCollectingSymbol(cqgTicks.Request.Symbol, true, realyInsertedCount, ""); } OnProgressBarChanged(100); } }) { Name = "InsertingHistoricalThread" }.Start(); //} //catch (Exception ex) //{ // Console.WriteLine("TicksAdd"+ex.Message); //} }
//** public static void StoreTickData(CQGTicks cqgTicks, CQGError cqgError, string userName) { //try //{ if ((cqgError != null && cqgError.Code != 0)) { FinishCollectingSymbol("T",cqgTicks.Request.Symbol, false, 0, "Expired! Error code: " + cqgError.Code + ". Description:" + cqgError.Description); return; } if (cqgTicks.Count == 0) { FinishCollectingSymbol("T",cqgTicks.Request.Symbol, false, 0, "No data recived"); return; } new Thread(() => { lock (_lockHistInsert) { int groupId = 0; OnTickInsertingStarted(cqgTicks.Request.Symbol, cqgTicks.Count); DateTime _tmpTime = new DateTime(); int first_start = 0; int first_end = _rangeDateEnd == _tmpTime ? cqgTicks.Count - 1 : CqgGetId(cqgTicks, _rangeDateEnd); ///****************************************// //inserting OnProgressBarChanged(0); var progr = 0; var rowsMaxCount = (first_end - first_start); var rowsInserted = 0; var cto = (double)rowsMaxCount; var realyInsertedCount = 0; for (int i = first_start; i <= first_end; i++) { if (_isStoped) break; ClientDatabaseManager.CreateTickTable(cqgTicks.Request.Symbol, cqgTicks[i].Timestamp); if (!ClientDatabaseManager.IsThisHourExistsInTable(cqgTicks.Request.Symbol, cqgTicks[i].Timestamp)) { AddTick(cqgTicks[i], cqgTicks.Request.Symbol, DateTime.Now, ++groupId, userName); realyInsertedCount++; } rowsInserted++; var newProgr = (int)Math.Round((rowsInserted / cto) * 100f); if (newProgr > progr) { progr = newProgr; OnProgressBarChanged(progr); } } ClientDatabaseManager.CommitQueueTick(); if (!_isStoped) FinishCollectingSymbol("T",cqgTicks.Request.Symbol, true, realyInsertedCount, ""); OnProgressBarChanged(100); } }) { Name = "InsertingHistoricalThread" }.Start(); //} //catch (Exception ex) //{ // Console.WriteLine("TicksAdd"+ex.Message); //} }
public static void TicksAdd(CQGTicks cqgTicks, CQGError cqgError, string userName) { try { if (cqgError != null && cqgError.Code != 0) { } else { DataNetClientDataManager.CreateTickTable(cqgTicks.Request.Symbol); DateTime runDateTime = DateTime.Now; int groupId = 0; if (cqgTicks.Count != 0) { DataNetClientDataManager.DeleteTicks(cqgTicks.Request.Symbol, cqgTicks[0].Timestamp, cqgTicks[cqgTicks.Count - 1].Timestamp); for (int i = cqgTicks.Count - 1; i >= 0; i--) { AddTick(cqgTicks[i], cqgTicks.Request.Symbol, runDateTime, ++groupId, userName); } } DataNetClientDataManager.CommitQueueTick(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
static void _cel_TicksResolved(CQGTicks cqgTicks, CQGError cqgError) { if (_isStoped) return; var symbol = cqgTicks.Request.Symbol; TicksAdd(cqgTicks, cqgError, _userName); FinishCollectingSymbol(symbol); }
void CQG_TicksResolved(CQGTicks cqg_ticks, CQGError cqg_error) { _dataCollector.TicksAdd(cqg_ticks, cqg_error, _client.UserName); }