Announcement
Collapse
No announcement yet.
Partner 728x90
Collapse
NinjaTrader
dataSeries pointer or mirror
Collapse
X
-
dataSeries pointer or mirror
EMA(), Falling(), Rising(), and many other useful functions require a DataSeries as argument. My indicator allows the user to select open, high, low, or close to use in all price calcs. I would like to be able to use a pointer to hold the current selection and just use the pointer everywhere the price is needed. Is something like this possible? Currently I use switch case statements everywhere I need to pass the price DataSeries as argument.Tags: None
-
I wasn't very clear. Up until now all my calculations have been on Close.
I do other things with Close in the code as well. I am changing things to be more generic. For example, The user will select from a menu in the dialog:Code:for( i=0; i < kGups_total; i++) { Values[i].Set( EMA( Close, gup_periods[i] )[0] ); }
I don't want to use if() or switch() statements everywhere I currently use Close. For example, the first code snippet above would look like this:Code:[Description("")] [GridCategory("Parameters -- General")] [Gui.Design.DisplayName ("100 - Price based on:")] public eCalc_type2 Calc_enum { get { return calc_enum; } set { calc_enum = value; } } public enum eCalc_type2 { Open, Close, High, Low, }
I would have to do something like this in about 7 places in my code. It would be a lot cleaner if when the user selected a different price type I could set a DataSeries pointer to the desired OCLH DataSeries. Then I would simply pass the pointer to EMA(), etc.. I doubt if this can be done as simply as I am illustrating it. This is how I would do this in C. I am just illustrating it this way to get my point across. How is this sort of thing done in NinjaScript?Code:for( i=0; i < kGups_total; i++) { switch( calc_enum ) { case eCalc_type2.Open: Values[i].Set( EMA( Open, gup_periods[i] )[0] ); break; case eCalc_type2.Close: Values[i].Set( EMA( Close, gup_periods[i] )[0] ); break; case eCalc_type2.High: Values[i].Set( EMA( High, gup_periods[i] )[0] ); break; case eCalc_type2.Low: Values[i].Set( EMA( Low, gup_periods[i] )[0] ); break; } }
Comment
-
Hello bernie_c,
Thank you for your response.
My mistake as we cannot set the DataSeries values in Initialize(). You would need to instead check the case and switch in the OnBarUpdate() and place the full code for each choose in each switch much like the SampleUniversalMovingAverage example: http://www.ninjatrader.com/support/f...ead.php?t=3420
Comment
Latest Posts
Collapse
| Topics | Statistics | Last Post | ||
|---|---|---|---|---|
|
Started by Geovanny Suaza, 02-11-2026, 06:32 PM
|
0 responses
571 views
0 likes
|
Last Post
|
||
|
Started by Geovanny Suaza, 02-11-2026, 05:51 PM
|
0 responses
330 views
1 like
|
Last Post
|
||
|
Started by Mindset, 02-09-2026, 11:44 AM
|
0 responses
101 views
0 likes
|
Last Post
by Mindset
02-09-2026, 11:44 AM
|
||
|
Started by Geovanny Suaza, 02-02-2026, 12:30 PM
|
0 responses
549 views
1 like
|
Last Post
|
||
|
Started by RFrosty, 01-28-2026, 06:49 PM
|
0 responses
549 views
1 like
|
Last Post
by RFrosty
01-28-2026, 06:49 PM
|

Comment