#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
{
public class TEST2 : Indicator
{
private int BarCounter;
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Description = @"Enter the description for your new custom Indicator here.";
Name = "TEST2";
Calculate = Calculate.OnEachTick;
IsOverlay = true;
DisplayInDataBox = true;
DrawOnPricePanel = true;
DrawHorizontalGridLines = true;
DrawVerticalGridLines = true;
PaintPriceMarkers = true;
ScaleJustification = NinjaTrader.Gui.Chart.ScaleJustification.Right;
//Disable this property if your indicator requires custom values that cumulate with each new market data event.
//See Help Guide for additional information.
IsSuspendedWhileInactive = true;
MinuteBar = 1;
}
else if (State == State.Configure)
{
AddVolumetric(null,BarsPeriodType.Minute,MinuteBar,VolumetricDeltaType.BidAsk,1);
}
}
protected override void OnBarUpdate()
{
if(CurrentBar < 2)
return;
NinjaTrader.NinjaScript.BarsTypes.VolumetricBarsType barsType = BarsArray[1].BarsType as
NinjaTrader.NinjaScript.BarsTypes.VolumetricBarsType;
if(IsFirstTickOfBar == true)
{
BarCounter++;//Increment counter on each new bar so you can reference it in the future
Print(Time[0].ToString() + "BarCounter: " + BarCounter);
}
}
#region Properties
[NinjaScriptProperty]
[Display(ResourceType = typeof(Custom.Resource), Name = "Enter Minute Bar Chart", GroupName = "NinjaScriptStrategyParameters", Order = 3)]
public int MinuteBar
{ get; set; }
#endregion
}
}
#region NinjaScript generated code. Neither change nor remove.
namespace NinjaTrader.NinjaScript.Indicators
{
public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
{
private TEST2[] cacheTEST2;
public TEST2 TEST2(int minuteBar)
{
return TEST2(Input, minuteBar);
}
public TEST2 TEST2(ISeries<double> input, int minuteBar)
{
if (cacheTEST2 != null)
for (int idx = 0; idx < cacheTEST2.Length; idx++)
if (cacheTEST2[idx] != null && cacheTEST2[idx].MinuteBar == minuteBar && cacheTEST2[idx].EqualsInput(input))
return cacheTEST2[idx];
return CacheIndicator<TEST2>(new TEST2(){ MinuteBar = minuteBar }, input, ref cacheTEST2);
}
}
}
namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
{
public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
{
public Indicators.TEST2 TEST2(int minuteBar)
{
return indicator.TEST2(Input, minuteBar);
}
public Indicators.TEST2 TEST2(ISeries<double> input , int minuteBar)
{
return indicator.TEST2(input, minuteBar);
}
}
}
namespace NinjaTrader.NinjaScript.Strategies
{
public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
{
public Indicators.TEST2 TEST2(int minuteBar)
{
return indicator.TEST2(Input, minuteBar);
}
public Indicators.TEST2 TEST2(ISeries<double> input , int minuteBar)
{
return indicator.TEST2(input, minuteBar);
}
}
}
#endregion

Comment