public void TestCreate() { var runner = new StrategyRunner <MyStrategy>(); Assert.False(runner.Strategy.CreateCalled); runner.Create(); Assert.True(runner.Strategy.CreateCalled); }
/// <summary> /// Subscribes to the given chart and starts trading. /// </summary> /// <param name="bars">The chart to subscribe to.</param> public void Start(IEnumerable <IMonitoredInstrument> bars) { if (Runner is object) { throw new InvalidOperationException("AutoTrader is already running."); } Manager.OrderValidated += OnOrderValidated; Manager.OrderCanceled += OnOrderCanceled; Bars = new List <IMonitoredInstrument>(bars); Runner = new StrategyRunner <T>(Bars, OrderCreator, Output, StrategyInfo); Runner.Create(); Runner.StartCalc(); // We only send orders based on the primary chart. The secondary charts are // used for reference within the strategy. PrimaryChart.Updated += OnBarsUpdated; }