示例#1
0
        void RequestBars(BarRequest br)
        {
            string command;
            long   id = _idt.AssignId;

            if (br.Interval == (int)BarInterval.Day)
            {
                command = String.Format("HDT,{0},{1},,1,{2}\r\n", br.Symbol, br.StartDateTime.ToLongDateString(), br.EndDateTime.ToLongDateString(), id);
            }
            else
            {
                command = String.Format("HIT,{0},{1},{2} {3},{4} {5},,000000,235959,1,{6}\r\n", br.Symbol, br.Interval, br.StartDateTime.ToString("yyyyMMdd"), br.StartDateTime.ToString("HHmmss"), br.EndDateTime.ToString("yyyyMMdd"), br.EndDateTime.ToString("HHmmss"), id);
            }
            reqid2req.Add(id, br);
            // we form a watch command in the form of wSYMBOL\r\n
            byte[] watchCommand = new byte[command.Length];
            watchCommand = Encoding.ASCII.GetBytes(command);
            try
            {
                m_hist.Send(watchCommand, watchCommand.Length, SocketFlags.None);
                debug("Requested historical bars for: " + br.Symbol);
            }
            catch (Exception ex)
            {
                debug("Exception sending barrequest: " + br.ToString());
                debug(ex.Message + ex.StackTrace);
            }
        }
示例#2
0
        public void CallMethodBar()
        {
            MockRepository mocks       = new MockRepository();
            BarRequest     barRequest  = BarRequest.CreateBuilder().Build();
            BarResponse    barResponse = BarResponse.CreateBuilder().Build();
            IRpcController controller  = mocks.StrictMock <IRpcController>();

            bool barCalled = false;

            TestService service = new TestServiceImpl(null, (request, responseAction) => {
                Assert.AreSame(barRequest, request);
                barCalled = true;
                responseAction(barResponse);
            }, controller);

            bool doneHandlerCalled        = false;
            Action <IMessage> doneHandler = (response => {
                Assert.AreSame(barResponse, response);
                doneHandlerCalled = true;
            });

            using (mocks.Record()) {
                // No mock interactions to record
            }

            service.CallMethod(BarDescriptor, controller, barRequest, doneHandler);

            Assert.IsTrue(doneHandlerCalled);
            Assert.IsTrue(barCalled);
            mocks.VerifyAll();
        }
示例#3
0
 public void ReqHistoricalData(BarRequest br)
 {
     if (_client != null)
     {
         _client.RequestHistoricalData(br, true);
     }
 }
        public void CallMethodBar()
        {
            BarRequest     barRequest  = BarRequest.CreateBuilder().Build();
            BarResponse    barResponse = BarResponse.CreateBuilder().Build();
            IRpcController controller  = new RpcTestController();

            bool barCalled = false;

            TestGenericService service = new TestServiceImpl(null, (request, responseAction) =>
            {
                Assert.AreSame(barRequest, request);
                barCalled = true;
                responseAction(barResponse);
            }, controller);

            bool doneHandlerCalled        = false;
            Action <IMessage> doneHandler = (response =>
            {
                Assert.AreSame(barResponse, response);
                doneHandlerCalled = true;
            });

            service.CallMethod(BarDescriptor, controller, barRequest, doneHandler);

            Assert.IsTrue(doneHandlerCalled);
            Assert.IsTrue(barCalled);
        }
 public void BarTest()
 {
     // verify no bars
     Assert.AreEqual(0, barcount, "bars received early");
     // request bars
     c.TLSend(MessageTypes.BARREQUEST, BarRequest.BuildBarRequest(SYM, BarInterval.FiveMin));
     // verify we received it
     Assert.Greater(barcount, 30, "no bar received");
 }
示例#6
0
        public BarResponse Execute(BarRequest request)
        {
            var result = _taskRunner.Run();

            return(new BarResponse()
            {
                Code = result ? "Ok" : "Error"
            });
        }
示例#7
0
        private void Start(bool toconnect)
        {
            // either not connected and ask for connection
            if ((!_isconnected) && (toconnect))
            {
                _isconnected = toconnect;

                // 0. Initalize sec basket
                List <decimal> closeprices = new List <decimal>();
                for (int i = 0; i < _basket.Count; i++)
                {
                    closeprices.Add(0.0m);
                }
                _quoteupdateservice.InitTickerAndPreClose(_basket.Securities.ToArray(), closeprices.ToArray());

                // 1. brokerservice and initialize globalidservice
                _brokerservice.Start();
                _globalidservice.SetInitialStrategyId(0);

                // 3. QuoteDispatcherService
                _quotedispatcherservice.Start();

                // 4. Request yesterday's close in a separate thread, to avoid IB hist request limit
                if (!_hasconnected)
                {
                    _hasconnected = true;
                    Task.Factory.StartNew(() =>
                    {
                        string broker = _configmanagerservice.DefaultBroker;
                        for (int i = 0; i < _basket.Count; i++)
                        {
                            if (broker == "IB")
                            {
                                Thread.Sleep(10000);     // wait ten sec
                            }
                            else
                            {
                                Thread.Sleep(1000);      // wait one sec
                            }
                            BarRequest br = new BarRequest(_basket[i], 86400, Util.ToIntDate(_preday), 0, Util.ToIntDate(_today), 0, broker);
                            _brokerservice.ReqHistoricalData(br);
                        }
                    });
                }
            }
            //  or connected and ask for disconnection
            else if ((_isconnected) && (!toconnect))
            {
                _isconnected = toconnect;
                Stop();
            }
            else
            {
                _logger.Log("connection/disconnection order messed up", Category.Info, Priority.High);
            }
        }
示例#8
0
        public async Task <BarResponse> Delete(BarRequest request)
        {
            // do some await...

            return(new BarResponse
            {
                StringValue = request.StringValue,
                IntValue = request.IntValue
            });
        }
示例#9
0
 public override void GotTick(Tick k)
 {
     // if we don't have bar data, request historical data
     if (_blt[k.symbol].Count == 0)
     {
         D(k.symbol + " no bars found, requesting...");
         sendmessage(MessageTypes.BARREQUEST, BarRequest.BuildBarRequest(k.symbol, BarInterval.Hour));
     }
     D(k.symbol + " bar count: " + _blt[k.symbol].Count);
     // update whatever data we have with ticks
     _blt.newTick(k);
 }
示例#10
0
        long IQFeedHelper_newUnknownRequest(MessageTypes t, string msg)
        {
            switch (t)
            {
            case MessageTypes.DAYHIGH:
            {
                // get index for request
                int idx = _highs.getindex(msg);
                // ignore if no index
                if (idx == GenericTracker.UNKNOWN)
                {
                    return(0);
                }
                decimal v = _highs[idx];
                // ensure we have a high
                if (v == decimal.MinValue)
                {
                    return(0);
                }
                return(WMUtil.pack(v));
            }

            case MessageTypes.DAYLOW:
            {
                // get index for request
                int idx = _highs.getindex(msg);
                // ignore if no index
                if (idx == GenericTracker.UNKNOWN)
                {
                    return(0);
                }
                decimal v = _highs[idx];
                // ensure we have a high
                if (v == decimal.MaxValue)
                {
                    return(0);
                }
                return(WMUtil.pack(v));
            }

            case MessageTypes.BARREQUEST:
            {
                BarRequest br = BarImpl.ParseBarRequest(msg);
                RequestBars(br);
                return((long)MessageTypes.OK);
            }
            }
            return((long)MessageTypes.FEATURE_NOT_IMPLEMENTED);
        }
示例#11
0
        void processhistory(int lHandle, BarRequest br)
        {
            int numbars = esig.get_GetNumBars(lHandle);

            if (numbars == 0)
            {
                verb("no bars available for reqhandle: " + lHandle);
                return;
            }
            numbars *= -1;
            for (int i = numbars; i <= 0; i++)
            {
                try
                {
                    BarData bd = esig.get_GetBar(lHandle, i);
                    if (VerboseDebugging)
                    {
                        verb(br.Symbol + " " + bd.dtTime.ToString() + " " + bd.dOpen + " " + bd.dHigh + " " + bd.dLow + " " + bd.dClose + " " + bd.dVolume);
                    }
                    Bar    b   = new BarImpl((decimal)bd.dOpen, (decimal)bd.dHigh, (decimal)bd.dLow, (decimal)bd.dClose, (long)bd.dVolume, Util.ToTLDate(bd.dtTime), Util.ToTLTime(bd.dtTime), br.Symbol, br.Interval);
                    string msg = BarImpl.Serialize(b);
                    if (!b.isValid && !AllowSendInvalidBars)
                    {
                        debug("Not sending invalid bar: " + b.ToString() + " raw: " + msg);
                        continue;
                    }
                    tl.TLSend(msg, MessageTypes.BARRESPONSE, br.Client);
                }
                catch (Exception ex)
                {
                    verb("error obtaining bar: " + i + " from: " + lHandle);
                    verb(ex.Message + ex.StackTrace);
                }
            }
            if (ReleaseBarHistoryAfteRequest)
            {
                try
                {
                    esig.ReleaseHistory(lHandle);
                    _barhandle2barrequest.Remove(lHandle);
                }
                catch { }
            }
        }
示例#12
0
 long s_newUnknownRequest(MessageTypes t, string msg)
 {
     if (t == MessageTypes.BARREQUEST)
     {
         var br = BarRequest.Deserialize(msg);
         var MAXBARPERREQUEST = br.BarsBack;
         if (br.isValid)
         {
             for (int i = 0; i < MAXBARPERREQUEST; i++)
             {
                 var bar = GetRandomBar(br.symbol, br.Interval);
                 s.TLSend(BarImpl.Serialize(bar), MessageTypes.BARRESPONSE, c.Name);
             }
         }
     }
     if (t == MessageTypes.LOOPBACKSERVER)
     {
         return(SPECIAL);
     }
     return(0);
 }
示例#13
0
 long EsignalServer_newUnknownRequest(MessageTypes t, string msg)
 {
     switch (t)
     {
     case MessageTypes.BARREQUEST:
     {
         verb("got barrequest: " + msg);
         try
         {
             BarRequest br = BarImpl.ParseBarRequest(msg);
             _barrequests.Write(br);
         }
         catch (Exception ex)
         {
             debug("error parsing bar request: " + msg);
             debug(ex.Message + ex.StackTrace);
         }
         return(0);
     }
     }
     return((long)MessageTypes.FEATURE_NOT_IMPLEMENTED);
 }
示例#14
0
        void client_gotUnknownMessage(MessageTypes type, long source, long dest, long msgid, string request, ref string response)
        {
            if (type == MessageTypes.BARRESPONSE)
            {
                lastbarraw = response;
                var b         = BarImpl.Deserialize(response);
                var label     = b.Symbol + b.Interval.ToString() + b.CustomInterval.ToString();
                var symintidx = symintcount.getindex(label);
                if (symintidx < 0)
                {
                    symintidx = symintcount.addindex(label, new List <Bar>());
                    g.d("got new symbol/interval: " + b.Symbol + " " + b.Interval + b.CustomInterval + " bar:" + b.ToString());
                }

                symintcount[symintidx].Add(b);
                if (!recvsyms.Contains(b.Symbol))
                {
                    recvsyms.Add(b.Symbol);
                }
                recvbarcount++;
            }
            else if (type == MessageTypes.BARRESPONSE_FINAL)
            {
                var br = BarRequest.Deserialize(response);
                reccomplete++;
                g.d("completed: " + br.symbol + " " + br.Interval + " " + br.ID);
            }
            else
            {
                g.d("got unknown message: " + type + request + response);
            }
            var ok = mt.GotMessage(type, source, dest, msgid, request, ref response);

            if (!ok)
            {
                g.d("error processing: " + type + " request: " + request + " response: " + response);
            }
            msgok &= ok;
        }
示例#15
0
        public void BarsBackSerializeDeSerialize()
        {
            // build request
            var br = new BarRequest(sym, 300, 300, 100, string.Empty);

            // verify it
            Assert.IsTrue(br.isValid, "original not valid");
            Assert.AreEqual(300, br.Interval, "interval missing");
            Assert.AreEqual(sym, br.symbol, "symbol missing");
            Assert.AreEqual(100, br.BarsBack, "bars back missing");
            // serialize request
            var msg = br.Serialize();
            // deserialize
            var copy = BarRequest.Deserialize(msg);

            // verify valid
            Assert.IsTrue(copy.isValid, "copy not valid");
            // verify same
            Assert.AreEqual(br.symbol, copy.symbol, "symbol mismatch");
            Assert.AreEqual(br.BarsBack, copy.BarsBack, "symbol mismatch");
            Assert.AreEqual(br.Interval, copy.Interval, "symbol mismatch");
        }
示例#16
0
 public override void Bar(IRpcController controller, BarRequest request, Action <BarResponse> done)
 {
     Assert.AreSame(expectedController, controller);
     barHandler(request, done);
 }
示例#17
0
        void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            if (!_valid)
            {
                return;
            }
            while (_go)
            {
                try
                {
                    if (qc > qr)
                    {
                        // get requested symbols
                        string[] syms = _tmpregister.Split(',');
                        // go through each one
                        foreach (string sym in syms)
                        {
                            // if we don't have subscription already
                            if (!contains(sym))
                            {
                                // add it to list
                                _mb.Add(sym);
                                // request subscription
                                esig.RequestSymbol(sym, 1);
                            }
                        }
                        if (ReleaseDeadSymbols)
                        {
                            // clone requested basket
                            Basket newbasket = new BasketImpl(syms);
                            // clone existing basket as deadbasket
                            Basket deadbasket = new BasketImpl(_mb);
                            // existing - new = deadsymbols
                            deadbasket.Remove(newbasket);
                            // release dead symbols
                            string symsreleased = string.Empty;
                            foreach (Security dead in deadbasket)
                            {
                                try
                                {
                                    esig.ReleaseSymbol(dead.Symbol);
                                    symsreleased += dead.Symbol + " ";
                                }
                                catch { }
                            }
                            if (symsreleased != string.Empty)
                            {
                                verb("released unused symbols: " + symsreleased);
                            }
                        }
                        qr = qc;
                    }
                    while (_barrequests.hasItems)
                    {
                        BarRequest br = new BarRequest();
                        try
                        {
                            br = _barrequests.Read();
                            BarInterval bi       = (BarInterval)br.Interval;
                            string      interval = string.Empty;
                            int         barsback = DefaultBarsBack;
                            if (bi == BarInterval.CustomTicks)
                            {
                                interval = br.CustomInterval + "T";
                            }
                            else if (bi == BarInterval.CustomTime)
                            {
                                interval = br.CustomInterval + "S";
                            }
                            else if (bi == BarInterval.CustomVol)
                            {
                                interval = br.CustomInterval + "V";
                            }
                            else
                            {
                                if (br.Interval == (int)BarInterval.Day)
                                {
                                    interval = "D";
                                }
                                else
                                {
                                    interval = (br.Interval / 60).ToString();
                                }

                                barsback = BarImpl.BarsBackFromDate(bi, br.StartDateTime, br.EndDateTime);
                            }
                            int alldata = BarRequestsGetAllData ? -1 : 0;
                            int hnd     = esig.get_RequestHistory(br.Symbol, interval, (bi == BarInterval.Day) ? barType.btDAYS : barType.btBARS, barsback, alldata, alldata);
                            verb("requested bar data for " + br.Symbol + " on: " + br.Interval.ToString() + " " + br.CustomInterval.ToString() + " reqhandle: " + hnd);
                            // cache request
                            if (!_barhandle2barrequest.ContainsKey(hnd))
                            {
                                _barhandle2barrequest.Add(hnd, br);
                            }
                            else
                            {
                                verb("already had bar request: " + hnd + " " + _barhandle2barrequest[hnd].ToString());
                            }
                            if (esig.get_IsHistoryReady(hnd) != 0)
                            {
                                processhistory(hnd, br);
                            }
                        }
                        catch (Exception ex)
                        {
                            debug("error on historical bar request: " + br.ToString());
                            debug(ex.Message + ex.StackTrace);
                        }
                    }
                }
                catch (Exception ex)
                {
                    if (GotDebug != null)
                    {
                        GotDebug(DebugImpl.Create(ex.Message + ex.StackTrace, DebugLevel.Debug));
                    }
                }
                if (e.Cancel || !_go)
                {
                    break;
                }
                System.Threading.Thread.Sleep(WaitBetweenEvents);
            }
        }
示例#18
0
 public override void Bar(IRpcController controller, BarRequest request, Action<BarResponse> done)
 {
     Assert.AreSame(expectedController, controller);
     barHandler(request, done);
 }
 void _strategy_SendReqHistBar(BarRequest br)
 {
     _eventAggregator.GetEvent <SendHistDataRequestEvent>().Publish(br);
 }
示例#20
0
        public void HistoricalBarRequest()
        {
            Stopwatch sw = new Stopwatch();

            // verify we are ready
            Assert.IsTrue(isconok, "connection not ready");
            // prep test case data
            msgok       &= true;
            recvbarcount = 0;
            reccomplete  = 0;
            recvsyms.Clear();
            symintcount.Clear();
            lastbarraw = string.Empty;
            var syms = new string[] { "IBM", "GOOG", "QQQ" };
            //var syms = new string[] { "IBM"};

            var ints     = new int[] { (int)BarInterval.Day, (int)BarInterval.FiveMin, (int)BarInterval.Hour };
            var barsback = new int[] { 100, 100, 20 };

            // verify we have no data
            foreach (var sym in syms)
            {
                foreach (var bi in ints)
                {
                    Assert.AreEqual(0, barcount(sym, bi), "had bar data: " + sym + " " + bi);
                }
            }
            // request a bunch of data
            sw.Start();
            foreach (var sym in syms)
            {
                for (int i = 0; i < ints.Length; i++)
                {
                    var bint     = ints[i];
                    var bintsize = bint;
                    var bb       = barsback[i];
                    // build request
                    if ((bint < (int)BarInterval.Day) && (bint > 0))
                    {
                        bint = (int)BarInterval.CustomTime;
                    }
                    var br = BarRequest.BuildBarRequestBarsBack(sym, bb, bint, bintsize, client.Name);
                    var ok = client.TLSend(MessageTypes.BARREQUEST, br);
                    Assert.AreEqual((int)MessageTypes.OK, ok, "failed bar request: " + br);
                }
            }
            // wait for it
            g.d("waiting for bars...");
            int  att            = 0;
            bool stillwaiting   = true;
            var  expectbars     = Calc.Sum(barsback) * syms.Length;
            var  expectcomplete = (syms.Length * barsback.Length);

#if DEBUG
            const int waitseconds = 60;
#else
            const int waitseconds = 15;
#endif
            while (stillwaiting && (att++ < (waitseconds * 200)))
            {
                Util.sleep(5);

                System.Windows.Forms.Application.DoEvents();
                stillwaiting = (recvbarcount < expectbars) && (reccomplete < expectcomplete);
            }
            if (!stillwaiting)
            {
                sw.Stop();
                var elap           = sw.Elapsed.TotalSeconds;
                var responsepersec = elap == 0 ? 0 : expectcomplete / elap;
                var barssec        = recvbarcount == 0 ? 0 : recvbarcount / elap;

                g.d("received expected # of bars: " + recvbarcount + "/" + expectbars + "\t" + "rate (req/sec): " + responsepersec.ToString("N2") + " bars/sec: " + barssec.ToString("N2"));
            }
            else
            {
                g.d("wait timeout, got " + recvbarcount + "/" + expectbars);
            }
            //Assert.GreaterOrEqual(recvbarcount, expect, "did not receive enough bars");
            Assert.IsTrue(msgok, "errors processing messages");
            Assert.AreEqual(syms.Length, recvsyms.Count, "unexpected bar symbols: " + Util.join(recvsyms) + Environment.NewLine + lastbar.ToString());
            // verify we got it all
            foreach (var sym in syms)
            {
                for (int i = 0; i < ints.Length; i++)
                {
                    var bi     = ints[i];
                    var bisize = bi;
                    if ((bi < (int)BarInterval.Day) && (bi > 0))
                    {
                        bi = (int)BarInterval.CustomTime;
                    }
                    var count    = barsback[i];
                    var symcount = barcount(sym, bi);
                    var bars     = symintcount[sym + bi + bisize];
                    if (g.ta(bars.Count == count, "error: " + sym + bi + " expected: " + count + " got: " + bars.Count + " raw bars: " + string.Join(Environment.NewLine, bars)))
                    {
                        g.d(sym + " tracking " + bi + " bars, count: " + bars.Count);
                    }
                    else
                    {
                        Assert.AreEqual(count, bars.Count, "wrong bar count: " + sym + bi);
                    }
                }
            }
        }
示例#21
0
        /// <summary>
        /// Arguments are GOOG/IB, rundate, basketfile, datapath
        /// </summary>
        static void Main(string[] args)
        {
            #region parameters
            string  _client = "IB";         // IB or GOOG
            IClient _iclient;
            string  _enddate    = DateTime.Today.ToString("yyyyMMdd");
            string  _basketfile = @"c:\QuantTrading\Config\basket.xml";
            string  _datapath   = @"c:\QuantTrading\HistData\";
            Basket  _basket;

            if (args.Length > 0)
            {
                _client = args[0];
            }
            if (args.Length > 1)
            {
                _enddate = args[1];
            }
            if (args.Length > 2)
            {
                _basketfile = args[2];
            }
            if (args.Length > 3)
            {
                _datapath = args[3];
            }
            _datapath = _datapath + _client + @"\";

            _basket = Basket.DeserializeFromXML(_basketfile);
            #endregion

            _sec2bars = new Dictionary <string, List <string> >(_basket.Count);
            Dictionary <string, string> _outfiles  = new Dictionary <string, string>(_basket.Count);
            Dictionary <string, long>   _totalBars = new Dictionary <string, long>(_basket.Count);
            _processedBars = new Dictionary <string, long>(_basket.Count);

            DateTime _startTime = DateTime.SpecifyKind(DateTime.ParseExact(_enddate, "yyyyMMdd", null), DateTimeKind.Local);
            DateTime _endTime   = _startTime + new TimeSpan(1, 0, 0, 0);      // one day later
            double   sec        = _endTime.Subtract(_startTime).TotalSeconds; // should be 24 hours or 86,400 secs

            foreach (string s in _basket.Securities)
            {
                // set up bar counts
                _totalBars.Add(s, (long)sec);                       // one bar is one sec; if one minute, divide it by 60
                _processedBars.Add(s, 0);                           // initialize processed to 0

                // set up out filenames
                string filename = _datapath + s + "_" + _startTime.Date.ToString("yyyyMMdd") + ".csv";
                _outfiles.Add(s, filename);
                List <string> lines = new List <string>(90000);           // set something greater than 86,4000
                lines.Add("DateTime,Open,High,Low,Close,Volume");
                _sec2bars.Add(s, lines);
            }

            if (_client == "IB")
            {
                _iclient = new IBClient();          // currently it uses default ip:port
                _iclient.SendDebugEventDelegate   += _iclient_SendDebugEventDelegate;
                _iclient.GotHistoricalBarDelegate += _iclient_GotHistoricalBarDelegate;
                _iclient.Connect();

                long     totalRequests = (long)sec / 1800;       // one request is 30 min, totalRequests = 48
                TimeSpan thirtyMin     = new TimeSpan(0, 30, 0);

                foreach (string sym in _basket.Securities)
                {
                    DateTime s = _startTime;
                    DateTime t = _startTime + thirtyMin;

                    Console.WriteLine("Requesting historical bars for :" + sym);
                    for (int i = 0; i < totalRequests; i++)
                    {
                        Console.WriteLine("Request #: " + (i + 1).ToString() + "/" + totalRequests);
                        // 1 = 1 second
                        BarRequest br = new BarRequest(sym, 1, Util.ToIntDate(s.Date), Util.ToIntTime(s.Hour, s.Minute, s.Second),
                                                       Util.ToIntDate(t.Date), Util.ToIntTime(t.Hour, t.Minute, t.Second), _client);
                        _iclient.RequestHistoricalData(br, true);

                        // Do not make more than 60 historical data requests in any ten-minute period.
                        // If I have 10 names, each can only make 6 requests in ten minute;
                        // I use 5 minute for a pause; Then 24 hours takes 120 min or 1.5hour
                        // Thread.Sleep(new TimeSpan(0, 5, 0));
                        // wait 10 secs
                        Thread.Sleep(10000);
                        s += thirtyMin;
                        t += thirtyMin;
                    }
                }
            }
            else if (_client == "GOOG")
            {
                _iclient = new GoogleClient(1);
                _iclient.SendDebugEventDelegate   += _iclient_SendDebugEventDelegate;
                _iclient.GotHistoricalBarDelegate += _iclient_GotHistoricalBarDelegate;

                foreach (string sym in _basket.Securities)
                {
                    Console.WriteLine("Requesting historical bars for :" + sym);
                    BarRequest br = new BarRequest(sym, 60, Util.ToIntDate(DateTime.Today), Util.ToIntTime(DateTime.Today),
                                                   Util.ToIntDate(DateTime.Today), Util.ToIntTime(DateTime.Today), _client);
                    _iclient.RequestHistoricalData(br);
                }
            }

            // write to files
            Console.WriteLine("Wait three minutes for bars being processed.....");
            Thread.Sleep(new TimeSpan(0, 3, 0));            // wait three minutes for all hist bar to be processed.

            foreach (string s in _basket.Securities)
            {
                List <string> noDups = _sec2bars[s].Distinct().ToList();
                //_sec2bars[s].Insert(0, _processedBars[s].ToString());
                File.WriteAllLines(_outfiles[s], noDups);
            }
        }
示例#22
0
 public BarResponse Bar(BarRequest request)
 {
     return(new BarResponse {
         BarResponseValue = $"Bar{request.BarRequestValue}"
     });
 }
示例#23
0
        public override bool Equals(object obj)
        {
            BarRequest barRequest = obj as BarRequest;

            return(barRequest != null && barRequest.BarType == this.BarType && barRequest.BarSize == this.BarSize);
        }
示例#24
0
 public void Process(BarRequest request)
 {
 }