Error on calling 'OnStateChange' method: 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.
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!
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
NinjaTrader
Data serie size
Collapse
X
-
Data serie size
Hi, say my strategy has Maximum bars look back = 256 and Bars required to trade = 256, is there any reason why NinjaScript would spit out this error when I try to access Close[250] (or Open, Low, etc.)? Please note that I do this in DataLoaded state.
Code:Tags: None
-
Hello amaltais,
Thanks for your post.
You can't make a BarsAgo reference in State.DataLoaded because the script has not begun to process bars yet. You could use literal bar indexes with Series.GetValueAt, though.
For example:
Code:else if (State == State.DataLoaded) { for(int i = 0; i < Bars.Count-1; i++) Print(Close.GetValueAt(i)); }
JimNinjaTrader Customer Service
-
Hello amaltais,
Brackets are used for BarsAgo references when GetValueAt is used for literal indexes.
BarsAgo indexes go from the last bar in the data series to the first bar, while literal indexes go from the first bar to the last bar.
You may open the Data Box on a chart, right click, then select "Show Bar Indexes" and Show BarsAgo indexes" to visualize.
We look forward to assisting.JimNinjaTrader Customer Service
Comment
-
Hello amaltais,
Not exactly, MaximumBarsLookback turns each Series object into a circular ring buffer. If you set something up like the following, you will see matching prints.
Code:public class MyCustomIndicator12 : Indicator { private Series<double> MySeries; protected override void OnStateChange() { if (State == State.SetDefaults) { Description = @"Enter the description for your new custom Indicator here."; Name = "MyCustomIndicator12"; MaximumBarsLookBack = MaximumBarsLookBack.TwoHundredFiftySix; } else if (State == State.Realtime) { Print(MySeries[0] + " " + MySeries.GetValueAt(CurrentBar-256)); } else if (State == State.DataLoaded) { MySeries = new Series<double>(this); } } protected override void OnBarUpdate() { MySeries[0] = Close[0]; } }
https://ninjatrader.com/support/help...rslookback.htmJimNinjaTrader Customer Service
Comment
Latest Posts
Collapse
Topics | Statistics | Last Post | ||
---|---|---|---|---|
Started by Stanfillirenfro, Today, 07:23 AM
|
9 responses
23 views
0 likes
|
Last Post Today, 10:16 AM | ||
Started by George21, Today, 10:07 AM
|
0 responses
5 views
0 likes
|
Last Post
by George21
Today, 10:07 AM
|
||
Started by DayTradingDEMON, Today, 09:28 AM
|
2 responses
16 views
0 likes
|
Last Post Today, 09:56 AM | ||
Started by navyguy06, Today, 09:28 AM
|
1 response
6 views
0 likes
|
Last Post Today, 09:54 AM | ||
Started by cmtjoancolmenero, Yesterday, 03:58 PM
|
8 responses
32 views
0 likes
|
Last Post Today, 09:34 AM |
Comment