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 Waxavi, 04-19-2024, 02:10 AM
    2 responses
    36 views
    0 likes
    Last Post poeds
    by poeds
     
    Started by chbruno, Yesterday, 04:10 PM
    1 response
    44 views
    0 likes
    Last Post NinjaTrader_Gaby  
    Started by Max238, Today, 01:28 AM
    1 response
    23 views
    0 likes
    Last Post CactusMan  
    Started by giulyko00, Yesterday, 12:03 PM
    2 responses
    10 views
    0 likes
    Last Post giulyko00  
    Started by r68cervera, Today, 05:29 AM
    0 responses
    4 views
    0 likes
    Last Post r68cervera  
    Working...
    X