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

Bar out of range

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

    Bar out of range

    As a test and to learn, I am trying to create a Custom Series, assign values to it, and then Print() those values back out from inside of OnRender(). I am getting the error:
    Code:
    Time	Category	Message
    9/10/2018 5:40:16 PM	Default	Indicator 'Sample custom series': Error on calling 'OnRender' method on bar 342: You are accessing an index with a value that is invalid since it is out-of-range. I.E. accessing a series [barsAgo] with a value of 5 when there are only 4 bars on the chart.
    Any help would be appreciated.
    Attached Files

    #2
    Hello swooke,

    Thanks for your post.

    In your code you are using a barsAgro reference in OnRender which would throw the error you are receiving.

    Code:
    for (int idx = ChartBars.FromIndex; idx <= ChartBars.ToIndex; idx++)
    {
    	Print(xlkClose[idx]);	// This is a barsAgo reference and not a reference to an absolute index.
    }
    In OnRender, it would be recommended to use absolute bar indexes (similar to CurrentBar) than relative barsAgo references like we use in OnBarUpdate().

    From the OnRender documentation:
    5. Unlike market data events and strategy order related events, there is NO guarantee that the barsAgo indexer used for Series<T> objects are in sync with the current bars in progress. As a result, you should favor using an absolute index method to look up values (e.g., <series>.GetValueAt(), Bars.GetOpen(), etc)
    OnRender - https://ninjatrader.com/support/help.../?onrender.htm

    Values from absolute indexes can be retrieved from Series<t> objects by using the GetValueAt method. To observe the differences you may see in OnBarUpdate that Close.GetValueAt(CurrentBar) would be the same as Close[0];

    GetValueAt - https://ninjatrader.com/support/help...getvalueat.htm

    I have included a link to an Ichimokou Cloud indicator I wrote that processes 2 custom Series<doubles> to draw a region. You can observe how this indicator uses absolute references in place of barsAgo index.

    Ichimokou Cloud - https://ninjatrader.com/support/foru...tid=-1&lpage=1

    I've also provided a link to our Using SharpDX for custom rendering page of the help guide for important tips and best practices while using SharpDX.

    Using SharpDX for custom rendering - https://ninjatrader.com/support/help..._rendering.htm

    Please let us know if we can be of further assistance.
    JimNinjaTrader Customer Service

    Comment

    Latest Posts

    Collapse

    Topics Statistics Last Post
    Started by bortz, 11-06-2023, 08:04 AM
    47 responses
    1,604 views
    0 likes
    Last Post aligator  
    Started by jaybedreamin, Today, 05:56 PM
    0 responses
    8 views
    0 likes
    Last Post jaybedreamin  
    Started by DJ888, 04-16-2024, 06:09 PM
    6 responses
    18 views
    0 likes
    Last Post DJ888
    by DJ888
     
    Started by Jon17, Today, 04:33 PM
    0 responses
    4 views
    0 likes
    Last Post Jon17
    by Jon17
     
    Started by Javierw.ok, Today, 04:12 PM
    0 responses
    13 views
    0 likes
    Last Post Javierw.ok  
    Working...
    X