Beispiel #1
0
        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 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,
				});
			}
		}
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        //**

        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);
        }
Beispiel #14
0
 void CQG_TicksResolved(CQGTicks cqg_ticks, CQGError cqg_error)
 {
     _dataCollector.TicksAdd(cqg_ticks, cqg_error, _client.UserName);
 }