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

ChartBars.Bars vs. Bars

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

    ChartBars.Bars vs. Bars

    I find this (or something like this) is common at the start of OnRender():

    Code:
       if (Bars == null || ChartBars.Bars == null || Bars.Instrument == null || CurrentBar < 1) {
        return;
       }
    This was a suggestion on another forum post I had however, after reading the doc's a little further, it would seem that Bars and ChartBars.Bars are the same thing. Is one an alias for the other? Do I need to check both as shown above? If so, is there some sort of hierarchical overview given in the doc's that would have shown me this?

    #2
    Hello swcooke,

    Thank you for the post.

    In this case, the context is important due to how NinjaScript inherits properties.

    First, to directly answer your question, you only need to null check what you use. If you didn't use ChartBars.Bars in the syntax, there would not be a need to check if it was null. Likely the various objects have been used in the syntax below that point, so those are the null checks that were the result. After seeing the difference between the two objects, you can better determine what may be needed in the code you are asking about.

    The ChartBars.Bars object points to specifically the primary ChartBars object configured on the chart. Bars are the NinjaScript inherited property meaning this changes depending on the series that called OnBarUpdate.

    For example, using the following print you can see how these properties work. An example is using a multi-series script. Assume the primary chart series is a 4 range chart, and I have added a 15 minute series in code.

    Code:
    protected override void OnBarUpdate()
    {
        Print(Bars.ToChartString() + " " +  ChartBars.Bars.ToChartString());
    }
    results in:

    ES 06-18 (4 Range) ES 06-18 (4 Range)
    ES 06-18 (4 Range) ES 06-18 (4 Range)
    ES 06-18 (15 Minute) ES 06-18 (4 Range)
    ES 06-18 (4 Range) ES 06-18 (4 Range)
    ES 06-18 (4 Range) ES 06-18 (4 Range)
    ChartBars.Bars is static and represents the chart series, where the Bars object changes when the series calls OnBarUpdate.

    I look forward to being of further assistance.
    JesseNinjaTrader Customer Service

    Comment

    Latest Posts

    Collapse

    Topics Statistics Last Post
    Started by warreng86, 11-10-2020, 02:04 PM
    7 responses
    1,360 views
    0 likes
    Last Post NinjaTrader_Manfred  
    Started by Perr0Grande, Today, 08:16 PM
    0 responses
    5 views
    0 likes
    Last Post Perr0Grande  
    Started by elderan, Today, 08:03 PM
    0 responses
    9 views
    0 likes
    Last Post elderan
    by elderan
     
    Started by algospoke, Today, 06:40 PM
    0 responses
    10 views
    0 likes
    Last Post algospoke  
    Started by maybeimnotrader, Today, 05:46 PM
    0 responses
    14 views
    0 likes
    Last Post maybeimnotrader  
    Working...
    X