NinjaTrader Support Forum  
X

Attention!

This website will be down for maintenance from Friday May 24th at 6PM MDT until Saturday May 25th at 11AM MDT. We apologize for the inconvenience. If you need assistance during this time, please email sales@ninjatrader.com


Go Back   NinjaTrader Support Forum > NinjaScript Development Support > Indicator Development

Indicator Development Support for the development of custom indicators using NinjaScript.

Reply
 
Thread Tools Display Modes
Old 07-25-2008, 11:05 AM   #1
eDanny
Senior Member
 
eDanny's Avatar
 
Join Date: Jul 2008
Location: East Rochester, NY
Posts: 899
Thanks: 0
Thanked 19 times in 17 posts
Default Keeping rectangles

I am drawing a rectangle in an area and after a certain number of bars the beginning of the rectangle disappears and starts moving forward. I want the rectangle to stay from the days opening till the close and also want it to stay and have a new rectangle plotted the next day with new parameters. I should be able to scroll back through the days and see the different rectangles still plotted.

Sample here:

Add(new Plot(Color.FromKnownColor(KnownColor.OrangeRed), "Zone"));


{
{
if (CurrentBar == 0)
return;
}

Zone.Set(0);

daystart = Bars.BarsSinceSession;

DrawRectangle("Zone", false, daystart, Zone, 0 , Zone + 3, Color.OrangeRed, Color.OrangeRed, 2);
}
Last edited by eDanny; 07-25-2008 at 12:48 PM.
eDanny is offline  
Reply With Quote
Old 07-25-2008, 11:24 AM   #2
NinjaTrader_Dierk
Administrator
 
NinjaTrader_Dierk's Avatar
 
Join Date: Mar 2005
Location: Bamberg, Germany
Posts: 9,994
Thanks: 0
Thanked 6 times in 6 posts
Default

This might help: http://www.ninjatrader-support.com/v...ead.php?t=3419
NinjaTrader_Dierk is offline  
Reply With Quote
Old 07-25-2008, 12:45 PM   #3
eDanny
Senior Member
 
eDanny's Avatar
 
Join Date: Jul 2008
Location: East Rochester, NY
Posts: 899
Thanks: 0
Thanked 19 times in 17 posts
Default

No help at all, and have read it before. If you refer to my code you can see I do plot a rectangle but it doesn't behave as I would like. I tried this and had bad results:

DrawRectangle("Zone" + CurrentBar, false, daystart, Zone, 0 , Zone + 3, Color.OrangeRed, Color.OrangeRed, 2);

It turned my rectangle solid until about the last 10 price bars, and then gradually lightened up. Also a rectangle was plotted for the previous day at the same level. I need one long rectangle plotted throughout the day, from beginning till close, and stay on chart even when the next days rectangle is starting to plot at a different level.
eDanny is offline  
Reply With Quote
Old 07-25-2008, 12:51 PM   #4
NinjaTrader_Dierk
Administrator
 
NinjaTrader_Dierk's Avatar
 
Join Date: Mar 2005
Location: Bamberg, Germany
Posts: 9,994
Thanks: 0
Thanked 6 times in 6 posts
Default

The key factor is the
"Zone" + CurrentBar
which you figured out already by the link I provided. This makes your rectangle unique. You now would need to figure out the startBar and endBar. As soon as CurrentBar==endBar you can issue the DrawRectangle function.
NinjaTrader_Dierk is offline  
Reply With Quote
Old 07-25-2008, 01:11 PM   #5
eDanny
Senior Member
 
eDanny's Avatar
 
Join Date: Jul 2008
Location: East Rochester, NY
Posts: 899
Thanks: 0
Thanked 19 times in 17 posts
Default

That makes sense but I can't see how to define "endbar".

Add(new Plot(Color.FromKnownColor(KnownColor.OrangeRed), "Zone"));


{
{
if (CurrentBar == ???) << endbar?
{
if (CurrentBar == 0)
return;
}

Zone.Set(0);

daystart = Bars.BarsSinceSession;

DrawRectangle("Zone" + CurrentBar, false, daystart, Zone, 0 , Zone + 3, Color.OrangeRed, Color.OrangeRed, 2);
}
}
Last edited by eDanny; 07-25-2008 at 01:15 PM.
eDanny is offline  
Reply With Quote
Old 07-25-2008, 01:15 PM   #6
NinjaTrader_Dierk
Administrator
 
NinjaTrader_Dierk's Avatar
 
Join Date: Mar 2005
Location: Bamberg, Germany
Posts: 9,994
Thanks: 0
Thanked 6 times in 6 posts
Default

Sorry, I don't know by what logic your rectangle would get "closed" (which is the endBar).
NinjaTrader_Dierk is offline  
Reply With Quote
Old 07-25-2008, 01:17 PM   #7
eDanny
Senior Member
 
eDanny's Avatar
 
Join Date: Jul 2008
Location: East Rochester, NY
Posts: 899
Thanks: 0
Thanked 19 times in 17 posts
Default

Exactly. I don't know if it would, looks like not. Just using this for the first time today and trying to debug.
Look at edited post above yours.
eDanny is offline  
Reply With Quote
Old 07-25-2008, 01:19 PM   #8
NinjaTrader_Dierk
Administrator
 
NinjaTrader_Dierk's Avatar
 
Join Date: Mar 2005
Location: Bamberg, Germany
Posts: 9,994
Thanks: 0
Thanked 6 times in 6 posts
Default

You need to define and code the logic on when the "endBar" would get reached.
NinjaTrader_Dierk is offline  
Reply With Quote
Old 07-25-2008, 01:23 PM   #9
eDanny
Senior Member
 
eDanny's Avatar
 
Join Date: Jul 2008
Location: East Rochester, NY
Posts: 899
Thanks: 0
Thanked 19 times in 17 posts
Default

Quote:
Originally Posted by NinjaTrader_Dierk View Post
You need to define and code the logic on when the "endBar" would get reached.
I see that but don't know how to define the end of day.
eDanny is offline  
Reply With Quote
Old 07-25-2008, 10:55 PM   #10
NinjaTrader_Josh
NinjaTrader Product Manager
 
NinjaTrader_Josh's Avatar
 
Join Date: May 2007
Location: Denver, CO
Posts: 17,458
Thanks: 1
Thanked 106 times in 70 posts
Default

You can try checking DateTime.Now against the bar's timestamps to determine if the day is over.
NinjaTrader_Josh is offline  
Reply With Quote
Old 08-05-2008, 08:58 PM   #11
SteveB
Senior Member
 
Join Date: Jan 2008
Posts: 108
Thanks: 0
Thanked 0 times in 0 posts
Default

It would be nice to be able to provide a StartDateTime/EndDateTime (instead of BarsAgo) & let DrawXXX do the rest...

(with EndDateTime being able to draw into the future)
SteveB is offline  
Reply With Quote
Old 08-06-2008, 06:57 AM   #12
eDanny
Senior Member
 
eDanny's Avatar
 
Join Date: Jul 2008
Location: East Rochester, NY
Posts: 899
Thanks: 0
Thanked 19 times in 17 posts
Default

I still have resolved this issue. I have no idea how to stop the rectangle and start a new one the next day while keeping the old.
eDanny is offline  
Reply With Quote
Old 08-06-2008, 07:05 AM   #13
SteveB
Senior Member
 
Join Date: Jan 2008
Posts: 108
Thanks: 0
Thanked 0 times in 0 posts
Default

Each Rectangle is identified by its Tag.

To start a new Rect; change the Tag.

The hard part (and undesireable use of resources) is to redraw the Rect with every OnBarUpdate event, having to calc the BarsAgo field.

It would be nice to draw it once...and use DateTime to define the left & right sides.
SteveB is offline  
Reply With Quote
Old 08-06-2008, 07:29 AM   #14
NinjaTrader_Ray
Administrator
 
NinjaTrader_Ray's Avatar
 
Join Date: Nov 2004
Location: Denver, CO, USA
Posts: 11,163
Thanks: 6
Thanked 45 times in 32 posts
Default

You could use the GetBar() method which accepts a time parameter and retuns n bars ago.

http://www.ninjatrader-support.com/H...V6/GetBar.html
NinjaTrader_Ray is offline  
Reply With Quote
Old 08-06-2008, 11:09 AM   #15
eDanny
Senior Member
 
eDanny's Avatar
 
Join Date: Jul 2008
Location: East Rochester, NY
Posts: 899
Thanks: 0
Thanked 19 times in 17 posts
Default

Why doesn't something like this work? Doesn't the tag effectively change every day and begin a new rectangle?


daystart = Bars.BarsSinceSession;


DrawRectangle("Test" + Time[0].DayOfWeek, false, daystart, TestLow, 0 , TestLow + 2, Color.Orchid, Color.Orchid, 1);
eDanny is offline  
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -6. The time now is 11:50 PM.