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.DrawingTools;
#endregion
//This namespace holds Indicators in this folder and is required. Do not change it.
namespace NinjaTrader.NinjaScript.Indicators.MyIndicators {
public class TestEventArgs : EventArgs {
public TestEventArgs(double p) { Price = p; }
public double Price { get; private set; }
}
public class MyTestIndicator : Indicator {
const int Period = 21;
const int LineWidth = 3;
private EMA _emaDefault;
private EMA _emaTypical;
private EMA _emaOpen;
private EMA _emaHigh;
private EMA _emaLow;
private EMA _emaClose;
protected override void OnStateChange() {
if (State == State.SetDefaults) {
Description = @"Enter the description for your new custom Indicator here.";
Name = "MyTestIndicator";
Calculate = Calculate.OnBarClose;
IsOverlay = true;
AddPlot(new Stroke(Brushes.Black, LineWidth), PlotStyle.Line, "EMA(Default)");
AddPlot(new Stroke(Brushes.Aqua, LineWidth), PlotStyle.Line, "EMA(Typical)");
AddPlot(new Stroke(Brushes.LimeGreen, LineWidth), PlotStyle.Line, "EMA(Open)");
AddPlot(new Stroke(Brushes.DodgerBlue, LineWidth), PlotStyle.Line, "EMA(High)");
AddPlot(new Stroke(Brushes.Coral, LineWidth), PlotStyle.Line, "EMA(Low)");
AddPlot(new Stroke(Brushes.Red, LineWidth), PlotStyle.Line, "EMA(Close)");
}
else if(State == State.Configure) {
_emaDefault = EMA(Period);
_emaTypical = EMA(Typical, Period);
_emaOpen = EMA(Open, Period);
_emaHigh = EMA(High, Period);
_emaLow = EMA(Low, Period);
_emaClose = EMA(Close, Period);
}
}
protected override void OnBarUpdate() {
if (CurrentBar < Period)
return;
Values[0][0] = _emaDefault[0];
Values[1][0] = _emaTypical[0];
Values[2][0] = _emaOpen[0];
Values[3][0] = _emaHigh[0];
Values[4][0] = _emaLow[0];
Values[5][0] = _emaClose[0];
}
}
}
region NinjaScript generated code. Neither change nor remove.
namespace NinjaTrader.NinjaScript.Indicators
{
public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
{
private MyIndicators.MyTestIndicator[] cacheMyTestIndicator;
public MyIndicators.MyTestIndicator MyTestIndicator()
{
return MyTestIndicator(Input);
}
public MyIndicators.MyTestIndicator MyTestIndicator(ISeries<double> input)
{
if (cacheMyTestIndicator != null)
for (int idx = 0; idx < cacheMyTestIndicator.Length; idx++)
if (cacheMyTestIndicator[idx] != null && cacheMyTestIndicator[idx].EqualsInput(input))
return cacheMyTestIndicator[idx];
return CacheIndicator<MyIndicators.MyTestIndicator>(new MyIndicators.MyTestIndicator(), input, ref cacheMyTestIndicator);
}
}
}
namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
{
public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
{
public Indicators.MyIndicators.MyTestIndicator MyTestIndicator()
{
return indicator.MyTestIndicator(Input);
}
public Indicators.MyIndicators.MyTestIndicator MyTestIndicator(ISeries<double> input )
{
return indicator.MyTestIndicator(input);
}
}
}
namespace NinjaTrader.NinjaScript.Strategies
{
public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
{
public Indicators.MyIndicators.MyTestIndicator MyTestIndicator()
{
return indicator.MyTestIndicator(Input);
}
public Indicators.MyIndicators.MyTestIndicator MyTestIndicator(ISeries<double> input )
{
return indicator.MyTestIndicator(input);
}
}
}
#endregion
Comment