Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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 SeriesDoubleTest : Indicator
- {
- private Series<double> myDoubleSeries;
- private Series<double> varH;
- private Series<double> varL;
- protected override void OnStateChange()
- {
- if (State == State.SetDefaults)
- {
- Description = @"Enter the description for your new custom Indicator here.";
- Name = "SeriesDoubleTest";
- Calculate = Calculate.OnBarClose;
- 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;
- BarsBack = 5;
- }
- else if (State == State.Configure)
- {
- }
- else if (State == State.DataLoaded)
- {
- myDoubleSeries = new Series<double>(this, MaximumBarsLookBack.Infinite);
- varH = new Series<double>(this, MaximumBarsLookBack.Infinite);
- varL = new Series<double>(this, MaximumBarsLookBack.Infinite);
- }
- }
- protected override void OnBarUpdate()
- {
- if(CurrentBar < 5)
- {
- return;
- }
- NinjaTrader.Gui.Tools.SimpleFont myFont = new NinjaTrader.Gui.Tools.SimpleFont("Courier New", 12) { Size = 15, Bold = true };
- Print("\n========= High[0]-Low[0] =========");
- Print("\nHigh[0] - Low[0]: " + Instrument.MasterInstrument.RoundToTickSize((High[0] - Low[0]) / TickSize));
- Print("High[1] - Low[1]: " + Instrument.MasterInstrument.RoundToTickSize((High[1] - Low[1]) / TickSize));
- Print("High[2] - Low[2]: " + Instrument.MasterInstrument.RoundToTickSize((High[2] - Low[2]) / TickSize));
- Print("High[3] - Low[3]: " + Instrument.MasterInstrument.RoundToTickSize((High[3] - Low[3]) / TickSize));
- Print("High[4] - Low[4]: " + Instrument.MasterInstrument.RoundToTickSize((High[4] - Low[4]) / TickSize));
- Print("\n========= H-L | H-L' | Count =========");
- varH[0] = High[0];
- varL[0] = Low[0];
- myDoubleSeries[0] = varH[0] - varL[0];
- Print("\nHigh - Low value: " +myDoubleSeries[0]);
- Print("High - Low value (rounded): " +Instrument.MasterInstrument.RoundToTickSize(myDoubleSeries[0] / TickSize)+"\n");
- double var0 = CountIf(() => myDoubleSeries[0] >= 15*TickSize, BarsBack);
- Print("\ncount # of H-L Bars >= 15 ticks: " +var0);
- Draw.TextFixed(
- this,
- "j",
- "\ncount # of H-L Bars >= 15 ticks: "+var0,
- TextPosition.TopRight,
- Brushes.Green,
- myFont,
- Brushes.Transparent,
- Brushes.Transparent,
- 0);
- }
- #region Properties
- [Range(1, int.MaxValue), NinjaScriptProperty]
- [Display(ResourceType = typeof(Custom.Resource), Name = "BarsBack", GroupName = "Number of Bars for Stats", Order = 0)]
- public int BarsBack
- { get; set; }
- #endregion
- }
- }
- #region NinjaScript generated code. Neither change nor remove.
- namespace NinjaTrader.NinjaScript.Indicators
- {
- public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
- {
- private SeriesDoubleTest[] cacheSeriesDoubleTest;
- public SeriesDoubleTest SeriesDoubleTest(int barsBack)
- {
- return SeriesDoubleTest(Input, barsBack);
- }
- public SeriesDoubleTest SeriesDoubleTest(ISeries<double> input, int barsBack)
- {
- if (cacheSeriesDoubleTest != null)
- for (int idx = 0; idx < cacheSeriesDoubleTest.Length; idx++)
- if (cacheSeriesDoubleTest[idx] != null && cacheSeriesDoubleTest[idx].BarsBack == barsBack && cacheSeriesDoubleTest[idx].EqualsInput(input))
- return cacheSeriesDoubleTest[idx];
- return CacheIndicator<SeriesDoubleTest>(new SeriesDoubleTest(){ BarsBack = barsBack }, input, ref cacheSeriesDoubleTest);
- }
- }
- }
- namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
- {
- public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
- {
- public Indicators.SeriesDoubleTest SeriesDoubleTest(int barsBack)
- {
- return indicator.SeriesDoubleTest(Input, barsBack);
- }
- public Indicators.SeriesDoubleTest SeriesDoubleTest(ISeries<double> input , int barsBack)
- {
- return indicator.SeriesDoubleTest(input, barsBack);
- }
- }
- }
- namespace NinjaTrader.NinjaScript.Strategies
- {
- public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
- {
- public Indicators.SeriesDoubleTest SeriesDoubleTest(int barsBack)
- {
- return indicator.SeriesDoubleTest(Input, barsBack);
- }
- public Indicators.SeriesDoubleTest SeriesDoubleTest(ISeries<double> input , int barsBack)
- {
- return indicator.SeriesDoubleTest(input, barsBack);
- }
- }
- }
- #endregion
Advertisement
Add Comment
Please, Sign In to add comment