Beispiel #1
0
        private void btnGetHistoricPrices_Click(object sender, EventArgs e)
        {
            try
            {
                m_datetimestart = monthCalendarStart.SelectionRange.Start.Date;
                m_datetimeend   = monthCalendarEnd.SelectionRange.Start.Date;
                m_instrument    = cbInstrument.SelectedItem.ToString();
                m_interval      = cbInterval.SelectedItem.ToString();

                ResponseListener responseListener = new ResponseListener(m_session);
                m_session.subscribeResponse(responseListener);

                O2GRequestFactory factory = m_session.getRequestFactory();

                O2GTimeframeCollection timeframecollection = factory.Timeframes;
                O2GTimeframe           stimeframe          = timeframecollection[m_interval];

                GetHistoryPrices(m_session, m_instrument, m_interval, m_datetimestart, m_datetimeend, responseListener);

                MessageBox.Show("Historic Data Received", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                LogDirector.DoAction(2, ex);
                MessageBox.Show("Unable to connect to server", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        /// <summary>
        /// Sends a request for the history
        /// </summary>
        public string RequestHistory(TransportHistoryRequest request)
        {
            O2GRequestFactory      factory    = mSession.getRequestFactory();
            O2GTimeframeCollection timeframes = factory.Timeframes;
            O2GTimeframe           timeframe  = timeframes[request.Timeframe];
            int        count = request.Count > 300 ? 300 : request.Count;
            O2GRequest rq    = factory.createMarketDataSnapshotRequestInstrument(request.Instrument, timeframe, count);

            if (request.From != factory.ZERODATE || request.To != factory.ZERODATE)
            {
                DateTime from, to;
                from = request.From;
                to   = request.To;

                /*
                 * if (request.From != factory.ZERODATE)
                 *  from = mTimeConverter.convert(request.From, O2GTimeConverterTimeZone.EST, O2GTimeConverterTimeZone.UTC);
                 * else
                 *  from = factory.ZERODATE;
                 *
                 * if (request.To != factory.ZERODATE)
                 *  to = mTimeConverter.convert(request.To, O2GTimeConverterTimeZone.EST, O2GTimeConverterTimeZone.UTC);
                 * else
                 *  to = factory.ZERODATE;
                 */

                factory.fillMarketDataSnapshotRequestTime(rq, from, to, false);
            }
            mHistoryRequests[rq.RequestID] = request;
            mSession.sendRequest(rq);
            return(rq.RequestID);
        }
Beispiel #3
0
        // Request
        public void GetHistoryPrices(DateTime timeFrom, DateTime timeTo)
        {
            O2GRequestFactory      factory    = mSession.getRequestFactory();
            O2GTimeframeCollection timeframes = factory.Timeframes;
            O2GTimeframe           tfo        = timeframes["D1"];
            O2GRequest             request    = factory.createMarketDataSnapshotRequestInstrument("GBP/NZD", tfo, 7);

            timeFrom = today;
            timeTo   = DateTime.Today;

            factory.fillMarketDataSnapshotRequestTime(request, timeFrom, timeTo, false);
            mSession.sendRequest(request);
            Thread.Sleep(5000);
        }
        /// <summary>
        /// Get list of the supported time frames
        /// </summary>
        public IEnumerable <string> GetTimeframes()
        {
            if (!mReady)
            {
                return(null);
            }

            O2GRequestFactory      factory    = mSession.getRequestFactory();
            O2GTimeframeCollection timeframes = factory.Timeframes;
            List <string>          list       = new List <string>();

            for (int i = 0; i < timeframes.Count; i++)
            {
                list.Add(timeframes[i].ID);
            }
            return(list);
        }
        public void GetLongHistoricPrices(string symbol, string timeframe, int ticks)
        {
            _mktData = new Quantum();
            Symbol   = new Symbol(symbol);
            session.AttachHandler(mHandler);

            DateTime dateNow = DateTime.Now;
            TimeSpan time    = Timeframe.StringToTimeSpan(timeframe);

            DateTime startDate = dateNow.AddMinutes(-ticks * Timeframe.TimeframeToMinutes(timeframe));

            O2GRequestFactory      factory    = session.Session.getRequestFactory();
            O2GTimeframeCollection timeframes = factory.Timeframes;
            O2GTimeframe           tfo        = timeframes[timeframe];

            int counter = ticks;

            lock (locker)
            {
                while (counter > 0)
                {
                    _completeCounter++;
                    int subticks = (counter >= QSConstants.MAX_FXCM_API_TICKS)
                        ? QSConstants.MAX_FXCM_API_TICKS
                        : counter;
                    O2GRequest request = factory.createMarketDataSnapshotRequestInstrument(symbol, tfo, subticks);
                    factory.fillMarketDataSnapshotRequestTime(request, startDate,
                                                              startDate.AddMinutes(2 * subticks * Timeframe.TimeframeToMinutes(timeframe)));
                    session.Session.sendRequest(request);

                    startDate = startDate.AddMinutes(subticks * Timeframe.TimeframeToMinutes(timeframe));
                    counter  -= (counter >= QSConstants.MAX_FXCM_API_TICKS) ? QSConstants.MAX_FXCM_API_TICKS : counter;
                }
            }

            int timeCounter = 0;

            while (!Complete || timeCounter++ < 3000) //max timeout 30 seconds
            {
                Thread.Sleep(100);
            }
        }
Beispiel #6
0
        /// <summary>
        /// Send request to API for data
        /// </summary>
        /// <param name="adjustedStartDate"></param>
        /// <param name="endDate"></param>
        /// <param name="dataSetup"></param>
        public void sendRequest(DateTime adjustedStartDate, DateTime endDate, DataSetup dataSetup)
        {
            try
            {
                O2GRequestFactory      factory    = tss.Session.getRequestFactory();
                O2GTimeframeCollection timeframes = factory.Timeframes;
                O2GTimeframe           tfo        = timeframes[timeInterval];
                O2GRequest             request    = factory.createMarketDataSnapshotRequestInstrument(currency, tfo, 300);
                factory.fillMarketDataSnapshotRequestTime(request, adjustedStartDate, endDate, true);
                Console.WriteLine("Requesting from " + adjustedStartDate.ToString("MM/dd/yyyy HH:mm:ss") + " to " + endDate.ToString("MM/dd/yyyy HH:mm:ss"));
                logger.Debug("Requesting from " + adjustedStartDate.ToString("MM/dd/yyyy HH:mm:ss") + " to " + endDate.ToString("MM/dd/yyyy HH:mm:ss"));

                tss.Session.sendRequest(request);
                threadDictionary.Add(request.RequestID, dataSetup);
            }
            catch (Exception e)
            {
                MessageBox.Show("Error: " + e.Message);
            }
        }
Beispiel #7
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="controller">PriceHistory API controller</param>
        internal RequestHistoryForm(PriceAPIController controller)
        {
            InitializeComponent();

            // Fills the list of the offers available
            for (int i = 0; i < controller.Offers.Count; i++)
            {
                comboBoxInstrument.Items.Add(controller.Offers[i].Instrument);
            }
            if (comboBoxInstrument.Items.Count > 0)
            {
                comboBoxInstrument.SelectedIndex = 0;
            }

            // Fills the list of the timeframes available except tick timeframes (as
            // ticks are not supported by PriceHistory API)
            O2GTimeframeCollection timeframes = controller.Timeframes;

            for (int i = 0; i < timeframes.Count; i++)
            {
                O2GTimeframe tf = timeframes[i];
                if (tf.Unit == O2GTimeframeUnit.Tick)
                {
                    continue;
                }
                TimeframeItem item = new TimeframeItem(tf);
                comboBoxTimeframe.Items.Add(item);
            }

            if (comboBoxTimeframe.Items.Count > 0)
            {
                comboBoxTimeframe.SelectedIndex = 0;
            }

            // Initialize the range for date/time controls
            dateTimePickerFrom.MinDate = new DateTime(1980, 1, 1);
            dateTimePickerFrom.MaxDate = DateTime.Now;
            dateTimePickerTo.MinDate   = new DateTime(1980, 1, 1);
        }
Beispiel #8
0
        private void GetHistoryPrices(O2GSession O2GSession, string Instrument, string Interval, DateTime DtFrom, DateTime DtTo)
        {
            m_responseListener = new ResponseListener(O2GSession);
            O2GSession.subscribeResponse(m_responseListener);

            O2GRequestFactory factory = O2GSession.getRequestFactory();

            O2GTimeframeCollection timeframecollection = factory.Timeframes;
            O2GTimeframe           Timeframe           = timeframecollection[Interval];

            if (Timeframe == null)
            {
                throw new Exception(string.Format("Timeframe '{0}' is incorrect!", Timeframe));
            }

            O2GRequest request  = factory.createMarketDataSnapshotRequestInstrument(Instrument, Timeframe, 300);
            DateTime   DtFirst  = DtTo;
            DateTime   DatePrec = System.DateTime.MinValue;

            //TimeSpan PricesTimeSpan = System.TimeSpan.MinValue;

            //if (Interval == "m5")
            //{
            //    PricesTimeSpan = new TimeSpan(0, 0, 5, 0, 0);
            //}

            do // cause there is limit for returned candles amount
            {
                factory.fillMarketDataSnapshotRequestTime(request, DtFrom, DtFirst, false);
                m_responseListener.SetRequestID(request.RequestID);
                O2GSession.sendRequest(request);

                if (!m_responseListener.WaitEvents())
                {
                    throw new Exception("Response waiting timeout expired");
                }
                // shift "to" bound to oldest datetime of returned data
                O2GResponse response = m_responseListener.GetResponse();
                if (response != null && response.Type == O2GResponseType.MarketDataSnapshot)
                {
                    O2GResponseReaderFactory readerFactory = O2GSession.getResponseReaderFactory();
                    if (readerFactory != null)
                    {
                        O2GMarketDataSnapshotResponseReader reader = readerFactory.createMarketDataSnapshotReader(response);
                        if (reader.Count > 0)
                        {
                            if (DateTime.Compare(DtFirst, reader.getDate(0)) != 0)
                            {
                                DtFirst = reader.getDate(0); // earliest datetime of returned data

                                for (int nData = reader.Count - 1; nData > -1; nData--)
                                {
                                    if (reader.getDate(nData) != DatePrec)
                                    {
                                        m_datetime.Add(reader.getDate(nData));

                                        m_ask.Add(reader.getAsk(nData));
                                        m_askopen.Add(reader.getAskOpen(nData));
                                        m_askclose.Add(reader.getAskClose(nData));
                                        m_askhigh.Add(reader.getAskHigh(nData));
                                        m_asklow.Add(reader.getAskLow(nData));

                                        m_bid.Add(reader.getBid(nData));
                                        m_bidopen.Add(reader.getBidOpen(nData));
                                        m_bidclose.Add(reader.getBidClose(nData));
                                        m_bidhigh.Add(reader.getBidHigh(nData));
                                        m_bidlow.Add(reader.getBidLow(nData));
                                    }
                                    //else
                                    //{
                                    //    break;
                                    //}

                                    DatePrec = reader.getDate(nData);
                                }
                            }
                            else
                            {
                                break;
                            }
                        }
                        else
                        {
                            Console.WriteLine("0 rows received");
                            break;
                        }
                    }
                    // PrintPrices(session, response);
                }
                else
                {
                    break;
                }
            } while (DtFirst > DtFrom);

            m_datetime.Reverse();

            m_ask.Reverse();
            m_askopen.Reverse();
            m_askclose.Reverse();
            m_askhigh.Reverse();
            m_asklow.Reverse();

            m_bid.Reverse();
            m_bidopen.Reverse();
            m_bidclose.Reverse();
            m_bidhigh.Reverse();
            m_bidlow.Reverse();
        }