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 stafe, 04-15-2024, 08:34 PM
        7 responses
        31 views
        0 likes
        Last Post NinjaTrader_ChelseaB  
        Started by adeelshahzad, Today, 03:54 AM
        5 responses
        30 views
        0 likes
        Last Post NinjaTrader_BrandonH  
        Started by merzo, 06-25-2023, 02:19 AM
        10 responses
        823 views
        1 like
        Last Post NinjaTrader_ChristopherJ  
        Started by frankthearm, Today, 09:08 AM
        5 responses
        17 views
        0 likes
        Last Post NinjaTrader_Clayton  
        Started by jeronymite, 04-12-2024, 04:26 PM
        3 responses
        43 views
        0 likes
        Last Post jeronymite  
        Working...
        X