public override bool Start()
        {
            if (!base.Start())
            {
                return(false);
            }

            StrategyInputInfo inputInfo = CreateInputInfo();
            bool res = true;

            if (inputInfo != null)
            {
                res = DataProvider.Connect(inputInfo);
                if (res)
                {
                    if (inputInfo.Tickers.Count > 0)
                    {
                        Ticker = inputInfo.Tickers[0].Ticker;
                    }
                }
            }
            if (MaxActualBuyDeposit == -1)
            {
                MaxActualBuyDeposit = MaxActualDeposit;
            }

            return(res);
        }
        public override StrategyInputInfo CreateInputInfo()
        {
            StrategyInputInfo s = new StrategyInputInfo();
            TickerInputInfo   t = CreateTickerInputInfo();

            t.Ticker = Ticker;
            s.Tickers.Add(t);
            return(s);
        }
        public void Assign(StrategyInputInfo info)
        {
            Exchanges.Clear();
            Tickers.Clear();

            foreach (ExchangeInputInfo e in info.Exchanges)
            {
                Exchanges.Add((ExchangeInputInfo)e.Clone());
            }
            for (int i = 0; i < info.Tickers.Count; i++)
            {
                TickerInputInfo t = info.Tickers[i];
                Tickers.Add((TickerInputInfo)t.Clone());
            }
        }
        bool IStrategyDataProvider.Connect(StrategyInputInfo info)
        {
            StartTime = DateTime.MinValue;
            EndTime   = DateTime.MaxValue;
            if (info.Strategy is ISimulationDataProvider)
            {
                ((ISimulationDataProvider)info.Strategy).Connect();

                StrategySimulationData data = GetSimulationData(info.Strategy);
                if (data != null)
                {
                    data.Connected = true;
                    StartTime      = MaxTime(StartTime, data.GetStartTime());
                    EndTime        = MinTime(EndTime, data.GetEndTime());
                }
                return(true);
            }
            for (int i = 0; i < info.Tickers.Count; i++)
            {
                TickerInputInfo ti = info.Tickers[i];

                if (ti.Ticker.CandleStickData != null)
                {
                    ti.Ticker.CandleStickData.Clear();
                }
                if (ti.Ticker.TradeHistory != null)
                {
                    ti.Ticker.TradeHistory.Clear();
                }

                ti.Ticker.Exchange.EnterSimulationMode();
                ti.Ticker.Exchange.StartListenTickerStream(ti.Ticker);
                //ti.Ticker.Exchange.StartListenOrderBook(ti.Ticker);
                //ti.Ticker.Exchange.StartListenTradeHistory(ti.Ticker);
                //ti.Ticker.Exchange.StartListenTickerStream(ti.Ticker);

                StrategySimulationData data = GetSimulationData(ti.Ticker);
                if (data == null)
                {
                    return(false);
                }
                data.Connected = true;
                StartTime      = MaxTime(StartTime, data.GetStartTime());
                EndTime        = MinTime(EndTime, data.GetEndTime());
            }
            LastTime = StartTime;
            return(true);
        }
Ejemplo n.º 5
0
        bool IStrategyDataProvider.Disconnect(StrategyInputInfo info)
        {
            if (info == null)
            {
                return(true);
            }
            bool res = true;

            for (int i = 0; i < info.Tickers.Count; i++)
            {
                TickerInputInfo ti = info.Tickers[i];
                Exchange        e  = ((IStrategyDataProvider)this).GetExchange(ti.Exchange);
                ti.Ticker = e.GetTicker(ti.TickerName);
                res      &= e.Disconnect(ti);
            }
            return(res);
        }
Ejemplo n.º 6
0
        bool IStrategyDataProvider.Connect(StrategyInputInfo info)
        {
            bool res = true;

            for (int i = 0; i < info.Tickers.Count; i++)
            {
                TickerInputInfo ti = info.Tickers[i];
                Exchange        e  = ((IStrategyDataProvider)this).GetExchange(ti.Exchange);
                if (!e.Connect())
                {
                    return(false);
                }
                ti.Ticker = e.GetTicker(ti.TickerName);
                res      &= e.Connect(ti);
            }
            return(res);
        }
 bool IStrategyDataProvider.Disconnect(StrategyInputInfo info)
 {
     if (info.Strategy is ISimulationDataProvider)
     {
         ((ISimulationDataProvider)info.Strategy).Disconnect();
         StrategySimulationData data = GetSimulationData(info.Strategy);
         if (data != null)
         {
             data.Connected = false;
         }
         return(true);
     }
     for (int i = 0; i < info.Tickers.Count; i++)
     {
         TickerInputInfo ti = info.Tickers[i];
         ti.Ticker.Exchange.ExitSimulationMode();
         StrategySimulationData data = GetSimulationData(ti.Ticker);
         if (data != null)
         {
             data.Connected = false;
         }
     }
     return(true);
 }
        protected bool LoadDataForTickers(StrategyBase s)
        {
            StrategyInputInfo info = s.CreateInputInfo();

            for (int i = 0; i < info.Tickers.Count; i++)
            {
                TickerInputInfo ti = info.Tickers[i];
                Exchange        e  = ((IStrategyDataProvider)this).GetExchange(ti.Exchange);
                if (e == null)
                {
                    return(false);
                }
                ti.Ticker = e.GetTicker(ti.TickerName);
                if (ti.Ticker == null)
                {
                    return(false);
                }
                StrategySimulationData data = null;
                SimulationData.TryGetValue(ti.Ticker, out data);
                if (data == null)
                {
                    data = new StrategySimulationData()
                    {
                        Ticker = ti.Ticker, Exchange = e, Strategy = s, TickerInfo = ti
                    }
                }
                ;
                if (!string.IsNullOrEmpty(ti.TickerSimulationDataFile))
                {
                    data.UseTickerSimulationDataFile = true;
                    if (!ti.Ticker.CaptureDataHistory.Load(ti.TickerSimulationDataFile))
                    {
                        return(false);
                    }
                    data.CaptureDataHistory = ti.Ticker.CaptureDataHistory;
                }
                else
                {
                    if (ti.UseKline)
                    {
                        if (data.CandleStickData == null)
                        {
                            data.CandleStickData = DownloadCandleStickData(ti);
                        }
                        data.CopyCandleSticksFromLoaded();
                        if (data.CandleStickData.Count == 0)
                        {
                            return(false);
                        }
                    }
                    data.OrderBook = DownloadOrderBook(ti);
                    if (data.OrderBook == null)
                    {
                        return(false);
                    }
                }
                if (!SimulationData.ContainsKey(ti.Ticker))
                {
                    SimulationData.Add(ti.Ticker, data);
                }
            }
            return(true);
        }