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