/// <summary> /// Instantiates a new instance. /// </summary> /// <param name="bars">The list of Bar instances to use during the backtest.</param> public StrategyBacktester(IEnumerable <Bar> bars) { var orderCreator = new OrderCreator(); orderCreator.OrderSent += (order) => OrderSent.SafeTrigger(order); var manager = new StrategyManager(orderCreator); StrategyInfo = manager.StrategyInfo; playableBars = new PlayableBars(bars); runner = new StrategyRunner <T>( playableBars.ToSingleDataStream(), orderCreator: orderCreator, strategyInfo: StrategyInfo); Strategy = runner.Strategy; }
/// <summary> /// Instantiates a new runner. /// </summary> /// <param name="barsData">Optional IList<IInstrument> instance to use. If not /// provided then the StrategyRunner will be loaded with an empty chart.</param> /// <param name="orderCreator">Optional IOrderCreator instance to use. If not /// provided a new OrderCreator instance will be created.</param> /// <param name="output">Optional IOutput instance to use. If not provided a new /// ConsoleOutput instance will be created.</param> /// <param name="strategyInfo">Optional IStrategyPerformance instance to use. If /// not provided a new StrategyPerformance instance will be created.</param> public StrategyRunner( IEnumerable <IInstrument> barsData = null, IOrderCreator orderCreator = null, IOutput output = null, IStrategyPerformance strategyInfo = null) { Strategy = (T)Activator.CreateInstance(type, ""); if (barsData is null) { SetProtectedProperty("BarsData", new List <IInstrument>()); } else { SetProtectedProperty("BarsData", new List <IInstrument>(barsData)); } if (orderCreator is null) { orderCreator = new OrderCreator(); } if (output is null) { output = new ConsoleOutput(); } if (strategyInfo is null) { strategyInfo = new StrategyPerformance(); } SetProtectedProperty("OrderCreator", orderCreator); SetProtectedProperty("Output", output); SetProtectedProperty("StrategyInfo", strategyInfo); }