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); }
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); }
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); }