public override void Run() { Instrument spreadInsturment = InstrumentManager.Get("AAPL vs MSFT"); // Add spread instrument if needed. if (spreadInsturment == null) { spreadInsturment = new Instrument(InstrumentType.Stock, "AAPL vs MSFT"); InstrumentManager.Add(spreadInsturment); } spreadInsturment.Legs.Clear(); // Add legs for spread instrument if needed. if (spreadInsturment.Legs.Count == 0) { spreadInsturment.Legs.Add(new Leg(InstrumentManager.Get("AAPL"), 1)); spreadInsturment.Legs.Add(new Leg(InstrumentManager.Get("MSFT"), -12)); } // Main strategy. strategy = new Strategy(framework, "SpreadTrading"); // Create BuySide strategy and add trading instrument. MyStrategy buySide = new MyStrategy(framework, "BuySide"); buySide.Instruments.Add(spreadInsturment); // Create SellSide strategy. SpreadSellSide sellSide = new SpreadSellSide(framework, "SellSide"); sellSide.Global[SpreadSellSide.barSizeCode] = barSize; // Set SellSide as data and execution provider for BuySide strategy. buySide.DataProvider = sellSide; buySide.ExecutionProvider = sellSide; // Add strategies to main. strategy.AddStrategy(buySide); strategy.AddStrategy(sellSide); // Set DataSimulator's dates. DataSimulator.DateTime1 = new DateTime(2013, 01, 01); DataSimulator.DateTime2 = new DateTime(2013, 12, 31); // Add 1 minute bars (60 seconds) for spread instrument. BarFactory.Add(spreadInsturment, BarType.Time, barSize); // Run. StartStrategy(); }
public OrderProcessor(SpreadSellSide strategy, ExecutionCommand command) { // Add current processor to SellSide processor's list. strategy.processors.AddLast(this); // Init OrderProcessor fields. this.strategy = strategy; this.command = command; order = command.Order; spreadInstrument = order.Instrument; orders = new Dictionary <Order, Leg>(); // Send leg orders if order type is market. if (order.Type == OrderType.Market) { SendLegOrders(); } }
public override void Run() { // Prepare running. Console.WriteLine("Prepare running in {0} mode...", StrategyManager.Mode); // Get spread instrument. Instrument spreadInsturment = InstrumentManager.Get("AAPL vs MSFT"); // Add spread instrument if needed. if (spreadInsturment == null) { spreadInsturment = new Instrument(InstrumentType.Stock, "AAPL vs MSFT"); InstrumentManager.Add(spreadInsturment); } // Add legs for spread instrument if needed. if (spreadInsturment.Legs.Count == 0) { spreadInsturment.Legs.Add(new Leg(InstrumentManager.Get("AAPL"), 1)); spreadInsturment.Legs.Add(new Leg(InstrumentManager.Get("MSFT"), -1)); } // Main strategy. strategy = new Strategy(framework, "SpreadTrading"); // Create BuySide strategy and add trading instrument. MyStrategy buySide = new MyStrategy(framework, "BuySide"); buySide.Instruments.Add(spreadInsturment); // Create SellSide strategy. SpreadSellSide sellSide = new SpreadSellSide(framework, "SellSide"); sellSide.Global[SpreadSellSide.barSizeCode] = barSize; // Set SellSide as data and execution provider for BuySide strategy. buySide.DataProvider = sellSide; buySide.ExecutionProvider = sellSide; // Add strategies to main. strategy.AddStrategy(buySide); strategy.AddStrategy(sellSide); // Get provider for realtime. Provider quantRouter = ProviderManager.Providers["QuantRouter"] as Provider; if (quantRouter.Status == ProviderStatus.Disconnected) { quantRouter.Connect(); } if (StrategyManager.Mode == StrategyMode.Paper) { // Set QuantRouter as data provider. sellSide.DataProvider = quantRouter as IDataProvider; } else if (StrategyManager.Mode == StrategyMode.Live) { // Set QuantRouter as data and execution provider. sellSide.DataProvider = quantRouter as IDataProvider; sellSide.ExecutionProvider = quantRouter as IExecutionProvider; } // Set null for event filter. EventManager.Filter = null; // Add 1 minute bars (60 seconds) for spread instrument. BarFactory.Add(spreadInsturment, BarType.Time, barSize); // Run. Console.WriteLine("Run in {0} mode.", StrategyManager.Mode); StartStrategy(StrategyManager.Mode); }
public OrderProcessor(SpreadSellSide strategy, ExecutionCommand command) { // Add current processor to SellSide processor's list. strategy.processors.AddLast(this); // Init OrderProcessor fields. this.strategy = strategy; this.command = command; order = command.Order; spreadInstrument = order.Instrument; orders = new Dictionary<Order, Leg>(); // Send leg orders if order type is market. if (order.Type == OrderType.Market) SendLegOrders(); }
public override void Run() { // Prepare running. Console.WriteLine("Prepare running in {0} mode...", StrategyManager.Mode); // Get spread instrument. Instrument spreadInsturment = InstrumentManager.Get("AAPL vs MSFT"); // Add spread instrument if needed. if (spreadInsturment == null) { spreadInsturment = new Instrument(InstrumentType.Stock, "AAPL vs MSFT"); InstrumentManager.Add(spreadInsturment); } // Add legs for spread instrument if needed. if (spreadInsturment.Legs.Count == 0) { spreadInsturment.Legs.Add(new Leg(InstrumentManager.Get("AAPL"), 1)); spreadInsturment.Legs.Add(new Leg(InstrumentManager.Get("MSFT"), -1)); } // Main strategy. strategy = new Strategy(framework, "SpreadTrading"); // Create BuySide strategy and add trading instrument. MyStrategy buySide = new MyStrategy(framework, "BuySide"); buySide.Instruments.Add(spreadInsturment); // Create SellSide strategy. SpreadSellSide sellSide = new SpreadSellSide(framework, "SellSide"); sellSide.Global[SpreadSellSide.barSizeCode] = barSize; // Set SellSide as data and execution provider for BuySide strategy. buySide.DataProvider = sellSide; buySide.ExecutionProvider = sellSide; // Add strategies to main. strategy.AddStrategy(buySide); strategy.AddStrategy(sellSide); // Get provider for realtime. Provider quantRouter = ProviderManager.Providers["QuantRouter"] as Provider; if (quantRouter.Status == ProviderStatus.Disconnected) quantRouter.Connect(); if (StrategyManager.Mode == StrategyMode.Paper) { // Set QuantRouter as data provider. sellSide.DataProvider = quantRouter as IDataProvider; } else if (StrategyManager.Mode == StrategyMode.Live) { // Set QuantRouter as data and execution provider. sellSide.DataProvider = quantRouter as IDataProvider; sellSide.ExecutionProvider = quantRouter as IExecutionProvider; } // Set null for event filter. EventManager.Filter = null; // Add 1 minute bars (60 seconds) for spread instrument. BarFactory.Add(spreadInsturment, BarType.Time, barSize); // Run. Console.WriteLine("Run in {0} mode.", StrategyManager.Mode); StartStrategy(StrategyManager.Mode); }