How do I display the data for the second dataseries in the strategy analyzer instead of the primary dataseries?
Here is a simplified version showing my most recent attempt to get this to work.
#region Using declarations using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; using System.Windows.Media; using System.Xml.Serialization; using NinjaTrader.Cbi; using NinjaTrader.Gui; using NinjaTrader.Gui.Chart; using NinjaTrader.Gui.SuperDom; using NinjaTrader.Gui.Tools; using NinjaTrader.Data; using NinjaTrader.NinjaScript; using NinjaTrader.Core.FloatingPoint; using NinjaTrader.NinjaScript.Indicators; using NinjaTrader.NinjaScript.Indicators.BCM_Indicators; using NinjaTrader.NinjaScript.DrawingTools; #endregion //This namespace holds Strategies in this folder and is required. Do not change it. namespace NinjaTrader.NinjaScript.Strategies { public class MultiMulti : Strategy { private SMA sma; private MACD macd; protected override void OnStateChange() { if (State == State.SetDefaults) { Description = @"Multi"; Name = "MultiMulti"; Calculate = Calculate.OnBarClose; IsOverlay = true; IsExitOnSessionCloseStrategy = false; TraceOrders = false; BarsRequiredToTrade = 200; IsInstantiatedOnEachOptimizationIteration = false; AddPlot(Brushes.DarkCyan, "SMA"); AddPlot(Brushes.Orchid, "MACD"); } else if (State == State.Configure) { AddDataSeries("SPY", new BarsPeriod { BarsPeriodType = BarsPeriodType.Minute, Value = 1440 }, "US Equities RTH"); } else if (State == State.DataLoaded) { sma = SMA(BarsArray[1], 200); AddChartIndicator(sma); sma.Plots[0].Width = 2; sma.IsOverlay = true; sma.Panel = 1; macd = MACD(BarsArray[1], 4, 18, 2); AddChartIndicator(macd); macd.DrawOnPricePanel = false; macd.IsOverlay = false; macd.Panel = 2; ClearOutputWindow(); } } protected override void OnBarUpdate() { if (CurrentBars[0] < BarsRequiredToTrade || CurrentBars[1] < BarsRequiredToTrade) return; if (BarsInProgress == 1) { Values[0][0] = sma[0]; Values[1][0] = macd[0]; if (macd[0] > 0) EnterLong(0, 1, "B" + CurrentBar); else if (macd[0] < 0) EnterShort(0, 1, "S" + CurrentBar); } } } }
Comment