I created a sample strategy and a sample indicator.
I would like to know what's the correct way so that I can share data from the strategy to the indicator
Can someone please point me in the right direction.
Thanks
using System; namespace NinjaTrader.NinjaScript.Strategies { public class MyCustomStrategy : Strategy { public DateTime myDate; protected override void OnStateChange() { if (State == State.SetDefaults) { Description = @"Enter the description for your new custom Strategy here."; Name = "MyCustomStrategy"; Calculate = Calculate.OnEachTick; } else if (State == State.Configure) { } } public void EnableThis() { this.IsEnabled = true; } public DateTime getMyTime() { return myDate; } protected override void OnBarUpdate() { myDate = DateTime.UtcNow; } } }
using NinjaTrader.NinjaScript.Strategies; namespace NinjaTrader.NinjaScript.Indicators { public class MyCustomIndicator : Indicator { private MyCustomStrategy testStrategy; protected override void OnStateChange() { if (State == State.SetDefaults) { Description = @"Enter the description for your new custom Indicator here."; Name = "MyCustomIndicator"; Calculate = Calculate.OnBarClose; } else if (State == State.Configure) { testStrategy = new MyCustomStrategy(); testStrategy.EnableThis(); } } protected override void OnBarUpdate() { testStrategy.Update(); Print("Date: " + testStrategy.getMyTime().ToString()); } } } #region NinjaScript generated code. Neither change nor remove. namespace NinjaTrader.NinjaScript.Indicators { public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase { private MyCustomIndicator[] cacheMyCustomIndicator; public MyCustomIndicator MyCustomIndicator() { return MyCustomIndicator(Input); } public MyCustomIndicator MyCustomIndicator(ISeries<double> input) { if (cacheMyCustomIndicator != null) for (int idx = 0; idx < cacheMyCustomIndicator.Length; idx++) if (cacheMyCustomIndicator[idx] != null && cacheMyCustomIndicator[idx].EqualsInput(input)) return cacheMyCustomIndicator[idx]; return CacheIndicator<MyCustomIndicator>(new MyCustomIndicator(), input, ref cacheMyCustomIndicator); } } } namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns { public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase { public Indicators.MyCustomIndicator MyCustomIndicator() { return indicator.MyCustomIndicator(Input); } public Indicators.MyCustomIndicator MyCustomIndicator(ISeries<double> input ) { return indicator.MyCustomIndicator(input); } } } namespace NinjaTrader.NinjaScript.Strategies { public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase { public Indicators.MyCustomIndicator MyCustomIndicator() { return indicator.MyCustomIndicator(Input); } public Indicators.MyCustomIndicator MyCustomIndicator(ISeries<double> input ) { return indicator.MyCustomIndicator(input); } } } #endregion
Comment