Guest User

Series<double>

a guest
Feb 25th, 2022
423
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.53 KB | None | 0 0
  1. #region Using declarations
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.ComponentModel.DataAnnotations;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows;
  10. using System.Windows.Input;
  11. using System.Windows.Media;
  12. using System.Xml.Serialization;
  13. using NinjaTrader.Cbi;
  14. using NinjaTrader.Gui;
  15. using NinjaTrader.Gui.Chart;
  16. using NinjaTrader.Gui.SuperDom;
  17. using NinjaTrader.Gui.Tools;
  18. using NinjaTrader.Data;
  19. using NinjaTrader.NinjaScript;
  20. using NinjaTrader.Core.FloatingPoint;
  21. using NinjaTrader.NinjaScript.DrawingTools;
  22. #endregion
  23.  
  24. //This namespace holds Indicators in this folder and is required. Do not change it.
  25. namespace NinjaTrader.NinjaScript.Indicators
  26. {
  27.     public class SeriesDoubleTest : Indicator
  28.     {
  29.         private Series<double> myDoubleSeries;
  30.         private Series<double> varH;
  31.         private Series<double> varL;
  32.        
  33.         protected override void OnStateChange()
  34.         {
  35.             if (State == State.SetDefaults)
  36.             {
  37.                 Description                                 = @"Enter the description for your new custom Indicator here.";
  38.                 Name                                        = "SeriesDoubleTest";
  39.                 Calculate                                   = Calculate.OnBarClose;
  40.                 IsOverlay                                   = true;
  41.                 DisplayInDataBox                            = true;
  42.                 DrawOnPricePanel                            = true;
  43.                 DrawHorizontalGridLines                     = true;
  44.                 DrawVerticalGridLines                       = true;
  45.                 PaintPriceMarkers                           = true;
  46.                 ScaleJustification                          = NinjaTrader.Gui.Chart.ScaleJustification.Right;
  47.                 //Disable this property if your indicator requires custom values that cumulate with each new market data event.
  48.                 //See Help Guide for additional information.
  49.                 IsSuspendedWhileInactive                    = true;
  50.                 BarsBack                                = 5;
  51.             }
  52.             else if (State == State.Configure)
  53.             {
  54.             }
  55.             else if (State == State.DataLoaded)
  56.             {
  57.                 myDoubleSeries = new Series<double>(this, MaximumBarsLookBack.Infinite);
  58.                 varH = new Series<double>(this, MaximumBarsLookBack.Infinite);
  59.                 varL = new Series<double>(this, MaximumBarsLookBack.Infinite);
  60.             }
  61.         }
  62.  
  63.         protected override void OnBarUpdate()
  64.         {  
  65.            
  66.             if(CurrentBar < 5)
  67.             {
  68.                 return;
  69.             }
  70.            
  71.             NinjaTrader.Gui.Tools.SimpleFont myFont = new NinjaTrader.Gui.Tools.SimpleFont("Courier New", 12) { Size = 15, Bold = true };
  72.            
  73.             Print("\n========= High[0]-Low[0] =========");
  74.            
  75.             Print("\nHigh[0] - Low[0]: " + Instrument.MasterInstrument.RoundToTickSize((High[0] - Low[0]) / TickSize));
  76.             Print("High[1] - Low[1]: " + Instrument.MasterInstrument.RoundToTickSize((High[1] - Low[1]) / TickSize));
  77.             Print("High[2] - Low[2]: " + Instrument.MasterInstrument.RoundToTickSize((High[2] - Low[2]) / TickSize));
  78.             Print("High[3] - Low[3]: " + Instrument.MasterInstrument.RoundToTickSize((High[3] - Low[3]) / TickSize));
  79.             Print("High[4] - Low[4]: " + Instrument.MasterInstrument.RoundToTickSize((High[4] - Low[4]) / TickSize));
  80.            
  81.             Print("\n========= H-L | H-L' | Count =========");
  82.  
  83.             varH[0] = High[0];
  84.             varL[0] = Low[0];
  85.            
  86.             myDoubleSeries[0] = varH[0] - varL[0];
  87.            
  88.             Print("\nHigh - Low value: " +myDoubleSeries[0]);
  89.             Print("High - Low value (rounded): " +Instrument.MasterInstrument.RoundToTickSize(myDoubleSeries[0] / TickSize)+"\n");
  90.            
  91.            
  92.             double var0 = CountIf(() => myDoubleSeries[0] >= 15*TickSize, BarsBack);
  93.            
  94.             Print("\ncount # of H-L Bars >= 15 ticks: " +var0);
  95.            
  96.             Draw.TextFixed(
  97.                 this,
  98.                 "j",
  99.                 "\ncount # of H-L Bars >= 15 ticks:  "+var0,
  100.                 TextPosition.TopRight,
  101.                 Brushes.Green,
  102.                 myFont,
  103.                 Brushes.Transparent,
  104.                 Brushes.Transparent,
  105.                 0);
  106.  
  107.  
  108.         }
  109.         #region Properties
  110.         [Range(1, int.MaxValue), NinjaScriptProperty]
  111.         [Display(ResourceType = typeof(Custom.Resource), Name = "BarsBack", GroupName = "Number of Bars for Stats", Order = 0)]
  112.         public int BarsBack
  113.         { get; set; }
  114.         #endregion
  115.     }
  116. }
  117.  
  118. #region NinjaScript generated code. Neither change nor remove.
  119.  
  120. namespace NinjaTrader.NinjaScript.Indicators
  121. {
  122.     public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
  123.     {
  124.         private SeriesDoubleTest[] cacheSeriesDoubleTest;
  125.         public SeriesDoubleTest SeriesDoubleTest(int barsBack)
  126.         {
  127.             return SeriesDoubleTest(Input, barsBack);
  128.         }
  129.  
  130.         public SeriesDoubleTest SeriesDoubleTest(ISeries<double> input, int barsBack)
  131.         {
  132.             if (cacheSeriesDoubleTest != null)
  133.                 for (int idx = 0; idx < cacheSeriesDoubleTest.Length; idx++)
  134.                     if (cacheSeriesDoubleTest[idx] != null && cacheSeriesDoubleTest[idx].BarsBack == barsBack && cacheSeriesDoubleTest[idx].EqualsInput(input))
  135.                         return cacheSeriesDoubleTest[idx];
  136.             return CacheIndicator<SeriesDoubleTest>(new SeriesDoubleTest(){ BarsBack = barsBack }, input, ref cacheSeriesDoubleTest);
  137.         }
  138.     }
  139. }
  140.  
  141. namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
  142. {
  143.     public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
  144.     {
  145.         public Indicators.SeriesDoubleTest SeriesDoubleTest(int barsBack)
  146.         {
  147.             return indicator.SeriesDoubleTest(Input, barsBack);
  148.         }
  149.  
  150.         public Indicators.SeriesDoubleTest SeriesDoubleTest(ISeries<double> input , int barsBack)
  151.         {
  152.             return indicator.SeriesDoubleTest(input, barsBack);
  153.         }
  154.     }
  155. }
  156.  
  157. namespace NinjaTrader.NinjaScript.Strategies
  158. {
  159.     public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
  160.     {
  161.         public Indicators.SeriesDoubleTest SeriesDoubleTest(int barsBack)
  162.         {
  163.             return indicator.SeriesDoubleTest(Input, barsBack);
  164.         }
  165.  
  166.         public Indicators.SeriesDoubleTest SeriesDoubleTest(ISeries<double> input , int barsBack)
  167.         {
  168.             return indicator.SeriesDoubleTest(input, barsBack);
  169.         }
  170.     }
  171. }
  172.  
  173. #endregion
  174.  
Advertisement
Add Comment
Please, Sign In to add comment