Announcement

Collapse

Looking for a User App or Add-On built by the NinjaTrader community?

Visit NinjaTrader EcoSystem and our free User App Share!

Have a question for the NinjaScript developer community? Open a new thread in our NinjaScript File Sharing Discussion Forum!
See more
See less

Partner 728x90

Collapse

Session Volume in Ninjascript

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

    Session Volume in Ninjascript

    How do I get/compute the session volume in ninjascript?

    Please see attached for what I am referring to.

    When I open the L2 window in a given session, the number does not start from 0. Where does Ninjatrader get this number and how do I access this from code.

    Thanks
    Attached Files

    #2
    Hello madankumars,

    Thanks for your post and welcome to the NinjaTrader forums.

    You can use the Volume per bar and accumulate the volume over whatever period you prefer. If you want to accumulate over an instruments session (trading hours) you can use the property Bars.IsFirstBarOfSession to reset a variable you create as the accumulator and from then on can add each bars Volume[0] to the variable.

    References:

    Paul H.NinjaTrader Customer Service

    Comment


      #3
      I tried what you said but the numbers are not adding up.

      see below for sample code. I compared the output with the NQ Level 2 Window. the number is off by almost 30,000 during the middle of the session. why? the L2 window shows more than what I can get out of the code, starting from IsFirstBarOfSession.



      public class SessionVolume : Indicator
      {
      //class member variable
      private double _volume = 0;

      protected override void OnStateChange()
      {
      if (State == State.SetDefaults)
      {
      Calculate = Calculate.OnBarClose;
      }
      }

      protected override void OnBarUpdate()
      {
      if (Bars.IsFirstBarOfSession)
      {
      _volume = 0;
      }

      _volume += Volume[0];

      Print(_volume);
      }
      }

      Comment


        #4
        Hello madankumars,

        Thanks for your reply.

        Your code appears correct and I see about the same values. I would have expected the values to be closer to the daily volume value shown so we will look closer at this.

        To answer your original question, you can access the same DailyVolume value through OnMarketData(). Here is an example:

        protected override void OnMarketData(MarketDataEventArgs marketDataUpdate)
        {
        if (marketDataUpdate.MarketDataType == Data.MarketDataType.DailyVolume)
        Print ("Daily Volume: "+marketDataUpdate.Volume);
        }

        reference: http://ninjatrader.com/support/helpG...aeventargs.htm
        Paul H.NinjaTrader Customer Service

        Comment

        Latest Posts

        Collapse

        Topics Statistics Last Post
        Started by alifarahani, Today, 09:40 AM
        6 responses
        31 views
        0 likes
        Last Post alifarahani  
        Started by Waxavi, Today, 02:10 AM
        1 response
        17 views
        0 likes
        Last Post NinjaTrader_LuisH  
        Started by Kaledus, Today, 01:29 PM
        5 responses
        14 views
        0 likes
        Last Post NinjaTrader_Jesse  
        Started by Waxavi, Today, 02:00 AM
        1 response
        12 views
        0 likes
        Last Post NinjaTrader_LuisH  
        Started by gentlebenthebear, Today, 01:30 AM
        3 responses
        17 views
        0 likes
        Last Post NinjaTrader_Jesse  
        Working...
        X