Advertisement
Guest User

Working Jim's Expiry method added series Tick Size

a guest
Mar 25th, 2022
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.65 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 jimsExpiryMethod : Indicator
  28.     {
  29.         private Series<double> CLSeries;
  30.         private Series<double> ESSeries;
  31.        
  32.         protected override void OnStateChange()
  33.         {
  34.             if (State == State.SetDefaults)
  35.             {
  36.                 Description                                 = @"Enter the description for your new custom Indicator here.";
  37.                 Name                                        = "jimsExpiryMethod";
  38.                 Calculate                                   = Calculate.OnEachTick;
  39.                 IsOverlay                                   = true;
  40.                 DisplayInDataBox                            = true;
  41.                 DrawOnPricePanel                            = true;
  42.                 DrawHorizontalGridLines                     = true;
  43.                 DrawVerticalGridLines                       = true;
  44.                 PaintPriceMarkers                           = true;
  45.                 ScaleJustification                          = NinjaTrader.Gui.Chart.ScaleJustification.Right;
  46.                 //Disable this property if your indicator requires custom values that cumulate with each new market data event.
  47.                 //See Help Guide for additional information.
  48.                 IsSuspendedWhileInactive                    = true;
  49.             }
  50.             else if (State == State.Configure)
  51.             {
  52.                 AddDataSeries(GetCurrentFuture("CL"), BarsPeriodType.Day, 1);
  53.                 AddDataSeries(GetCurrentFuture("ES"), BarsPeriodType.Day, 1);
  54.             }
  55.             else if (State == State.DataLoaded)
  56.             {
  57.                 CLSeries = new Series<double>(this, MaximumBarsLookBack.Infinite);
  58.                 ESSeries = new Series<double>(this, MaximumBarsLookBack.Infinite);
  59.             }
  60.         }
  61.        
  62.         private string GetCurrentFuture(string name)
  63.         {
  64.           foreach (Instrument inst in Instrument.All)
  65.           {
  66.             if (inst.MasterInstrument.Name == name && inst.MasterInstrument.InstrumentType == InstrumentType.Future)
  67.             {
  68.               string instFullName = String.Format("{0} {1}-{2}",
  69.                       name,
  70.                       inst.MasterInstrument.GetNextExpiry(Core.Globals.Now).Month.ToString("D2"),
  71.                       inst.MasterInstrument.GetNextExpiry(Core.Globals.Now).ToString("yy"));
  72.               return instFullName;
  73.             }
  74.           }
  75.           return name;
  76.         }
  77.  
  78.         protected override void OnBarUpdate()
  79.         {
  80.  
  81.             if (CurrentBars[0] < 10 || CurrentBars[1] < 4) return;
  82.            
  83.             if (BarsInProgress != 0) return;
  84.            
  85.            
  86.             NinjaTrader.Gui.Tools.SimpleFont myFont = new NinjaTrader.Gui.Tools.SimpleFont("Courier New", 12) { Size = 12, Bold = true };
  87.            
  88.            
  89.             Print("GetCurrentFuture(string name) " + GetCurrentFuture("CL"));
  90.            
  91.             CLSeries[0] = Highs[1][0]-Lows[1][0];
  92.            
  93. //          Print("CLSeries " + CLSeries[0]);
  94.            
  95.             Instrument Crude = Instrument.GetInstrument(GetCurrentFuture("CL"));
  96.            
  97.             Print("Crude " + Crude);
  98.            
  99.             Draw.TextFixed(
  100.               this,
  101.               "CLSeries",
  102.               "CL DR: "+Crude.MasterInstrument.RoundToTickSize(CLSeries[0] / Crude.MasterInstrument.TickSize),
  103.               TextPosition.TopRight,
  104.               Brushes.White,
  105.               myFont,
  106.               Brushes.Transparent,
  107.               Brushes.Transparent,
  108.               0);
  109.            
  110.             Print("GetCurrentFuture(string name) " + GetCurrentFuture("ES"));
  111.            
  112.             ESSeries[0] = Highs[2][0]-Lows[2][0];
  113.            
  114.             Instrument Emini = Instrument.GetInstrument(GetCurrentFuture("ES"));
  115.            
  116. //          Print("ESSeries " + ESSeries[0]);
  117.            
  118.             Print("Emini " + Emini);
  119.            
  120.             Draw.TextFixed(
  121.               this,
  122.               "ESSeries",
  123.               new String('\n', 1)+"ES DR: "+Emini.MasterInstrument.RoundToTickSize(ESSeries[0] / Emini.MasterInstrument.TickSize),
  124.               TextPosition.TopRight,
  125.               Brushes.White,
  126.               myFont,
  127.               Brushes.Transparent,
  128.               Brushes.Transparent,
  129.               0);
  130.         }
  131.     }
  132. }
  133.  
  134. #region NinjaScript generated code. Neither change nor remove.
  135.  
  136. namespace NinjaTrader.NinjaScript.Indicators
  137. {
  138.     public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
  139.     {
  140.         private jimsExpiryMethod[] cachejimsExpiryMethod;
  141.         public jimsExpiryMethod jimsExpiryMethod()
  142.         {
  143.             return jimsExpiryMethod(Input);
  144.         }
  145.  
  146.         public jimsExpiryMethod jimsExpiryMethod(ISeries<double> input)
  147.         {
  148.             if (cachejimsExpiryMethod != null)
  149.                 for (int idx = 0; idx < cachejimsExpiryMethod.Length; idx++)
  150.                     if (cachejimsExpiryMethod[idx] != null &&  cachejimsExpiryMethod[idx].EqualsInput(input))
  151.                         return cachejimsExpiryMethod[idx];
  152.             return CacheIndicator<jimsExpiryMethod>(new jimsExpiryMethod(), input, ref cachejimsExpiryMethod);
  153.         }
  154.     }
  155. }
  156.  
  157. namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
  158. {
  159.     public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
  160.     {
  161.         public Indicators.jimsExpiryMethod jimsExpiryMethod()
  162.         {
  163.             return indicator.jimsExpiryMethod(Input);
  164.         }
  165.  
  166.         public Indicators.jimsExpiryMethod jimsExpiryMethod(ISeries<double> input )
  167.         {
  168.             return indicator.jimsExpiryMethod(input);
  169.         }
  170.     }
  171. }
  172.  
  173. namespace NinjaTrader.NinjaScript.Strategies
  174. {
  175.     public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
  176.     {
  177.         public Indicators.jimsExpiryMethod jimsExpiryMethod()
  178.         {
  179.             return indicator.jimsExpiryMethod(Input);
  180.         }
  181.  
  182.         public Indicators.jimsExpiryMethod jimsExpiryMethod(ISeries<double> input )
  183.         {
  184.             return indicator.jimsExpiryMethod(input);
  185.         }
  186.     }
  187. }
  188.  
  189. #endregion
  190.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement