Example #1
0
        public static unsafe int GetQuotesEx(string ticker, Periodicity periodicity, int lastValid, int size, Quotation *quotes, GQEContext *context)
        {
            try
            {
                Debug.WriteLine(
                    $"GetQuotesEx(ticker: {ticker}, periodicity: {periodicity}, lastValid: {lastValid}, size: {size} ..."
                    );

                Quotation[] newQuotes = { };
                try
                {
                    newQuotes = DataSource.GetQuotes(ticker, periodicity, size);
                }
                catch (Exception)
                {
                    if (DataSource.Mode == Mode.Online)
                    {
                        Status          = StatusCode.Offline;
                        DataSource.Mode = Mode.Offline;
                        newQuotes       = DataSource.GetQuotes(ticker, periodicity, size);
                    }
                    else
                    {
                        throw;
                    }
                }

                // return 'lastValid + 1' if no updates are found and you want to keep all existing records
                if (!newQuotes.Any())
                {
                    return(lastValid + 1);
                }

                for (var i = 0; i < newQuotes.Length; i++)
                {
                    Copy(quotes, newQuotes, i);
                }

                return(newQuotes.Length);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message + Environment.NewLine + e);
                Debug.WriteLine(e.Message + Environment.NewLine + e);
            }

            return(-1);
        }
Example #2
0
        public static unsafe int GetQuotesEx(string ticker, Periodicity periodicity, int lastValid, int size, Quotation *quotes, GQEContext *context)
        {
            Debug.WriteLine("GetQuotesEx(ticker: " + ticker + ", periodicity: " + periodicity + ", lastValid: " + lastValid + ", size: " + size + ", ...)");

            var existingQuotes = new Quotation[0];

            if (lastValid > 2)
            {
                Array.Resize <Quotation>(ref existingQuotes, lastValid + 1);

                for (var i = 0; i <= lastValid; i++)
                {
                    existingQuotes[i] = new Quotation
                    {
                        DateTime     = quotes[i].DateTime,
                        Open         = quotes[i].Open,
                        High         = quotes[i].High,
                        Low          = quotes[i].Low,
                        Price        = quotes[i].Price,
                        Volume       = quotes[i].Volume,
                        OpenInterest = quotes[i].OpenInterest,
                        AuxData1     = quotes[i].AuxData1,
                        AuxData2     = quotes[i].AuxData2
                    };
                }

                Array.Sort <Quotation>(existingQuotes, new Comparison <Quotation>((q1, q2) => q1.DateTime.CompareTo(q2.DateTime)));
            }

            var newQuotes = DataSource.GetQuotes(ticker, periodicity, size, existingQuotes);

            if (newQuotes.Any())
            {
                lastValid = 0;
                for (var i = 0; i < newQuotes.Length; i++)
                {
                    quotes[i].DateTime     = newQuotes[i].DateTime;
                    quotes[i].Price        = newQuotes[i].Price;
                    quotes[i].Open         = newQuotes[i].Open;
                    quotes[i].High         = newQuotes[i].High;
                    quotes[i].Low          = newQuotes[i].Low;
                    quotes[i].Volume       = newQuotes[i].Volume;
                    quotes[i].OpenInterest = newQuotes[i].OpenInterest;
                    quotes[i].AuxData1     = newQuotes[i].AuxData1;
                    quotes[i].AuxData2     = newQuotes[i].AuxData2;
                    lastValid++;
                }

                return(lastValid);
            }

            // return 'lastValid + 1' if no updates are found and you want to keep all existing records
            return(lastValid + 1);
        }