Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

AddVolumetric Print issue

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    AddVolumetric Print issue

    I have applied a custom indicator on a 1 min ES chart. The indicator is using AddVolumetric in State.Configure. When I apply a bar counter (called BarCounter in the code) under an if(IsFirstTickOfBar), the BarCounter prints twice. It should only print once since there is only one FirstTickOfBar when using a 1 min (non-volumetric) ES chart. Why would it be printing twice? I attached a pic of output window and the code
    Click image for larger version

Name:	image.png
Views:	141
Size:	82.7 KB
ID:	1332187

    HTML Code:
    #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
    
    ​

    #2
    Hello algospoke,

    It is the first tick for BarsInProgress 0 and the first tick for BarsInProgress 1 and there is no check for BarsInProgress your code will run for all series.
    Chelsea B.NinjaTrader Customer Service

    Comment


      #3
      Cheslea - Ok that makes sense and fixed my issue. Thanks for help

      Comment

      Latest Posts

      Collapse

      Topics Statistics Last Post
      Started by Geovanny Suaza, 02-11-2026, 06:32 PM
      0 responses
      566 views
      0 likes
      Last Post Geovanny Suaza  
      Started by Geovanny Suaza, 02-11-2026, 05:51 PM
      0 responses
      330 views
      1 like
      Last Post Geovanny Suaza  
      Started by Mindset, 02-09-2026, 11:44 AM
      0 responses
      101 views
      0 likes
      Last Post Mindset
      by Mindset
       
      Started by Geovanny Suaza, 02-02-2026, 12:30 PM
      0 responses
      547 views
      1 like
      Last Post Geovanny Suaza  
      Started by RFrosty, 01-28-2026, 06:49 PM
      0 responses
      548 views
      1 like
      Last Post RFrosty
      by RFrosty
       
      Working...
      X