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 mjairg, 07-20-2023, 11:57 PM
    3 responses
    213 views
    1 like
    Last Post PaulMohn  
    Started by TheWhiteDragon, 01-21-2019, 12:44 PM
    4 responses
    544 views
    0 likes
    Last Post PaulMohn  
    Started by GLFX005, Today, 03:23 AM
    0 responses
    3 views
    0 likes
    Last Post GLFX005
    by GLFX005
     
    Started by XXtrader, Yesterday, 11:30 PM
    2 responses
    12 views
    0 likes
    Last Post XXtrader  
    Started by Waxavi, Today, 02:10 AM
    0 responses
    7 views
    0 likes
    Last Post Waxavi
    by Waxavi
     
    Working...
    X