namespace NinjaTrader.NinjaScript.Indicators { public class BarWidthTest : Indicator { protected override void OnStateChange() { if (State == State.SetDefaults) { Description = @"Displays the Average Volume for a particular time based on N previous days."; Name = "BarWidthTest"; Calculate = Calculate.OnBarClose; IsOverlay = false; DisplayInDataBox = true; DrawOnPricePanel = true; DrawHorizontalGridLines = true; DrawVerticalGridLines = true; PaintPriceMarkers = true; ScaleJustification = NinjaTrader.Gui.Chart.ScaleJustification.Right; //Disable this property if your indicator requires custom values that cumulate with each new market data event. //See Help Guide for additional information. IsSuspendedWhileInactive = true; AddPlot(new Stroke(Brushes.Black), PlotStyle.Bar, "AverageVolume"); AddPlot(new Stroke(Brushes.Red,5), PlotStyle.Bar, "VolumeIndicator"); Plots[0].AutoWidth = true; } else if (State == State.DataLoaded) { } else if (State == State.Configure) { } } protected override void OnBarUpdate() { if(CurrentBar < 0) return; AverageVolume[0] = Volume[0]/2; VolumeIndicator[0] = Volume[0]; } protected override void OnRender(ChartControl chartControl, ChartScale chartScale) { Plots[1].Width = Plots[0].Width - 1; } #region Properties [Browsable(false)] [XmlIgnore] public Series<double> VolumeIndicator { get { return Values[1]; } } [Browsable(false)] [XmlIgnore] public Series<double> AverageVolume { get { return Values[0]; } } #endregion } }
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
Dynamically updating Plots[0].Width in OnRender
Collapse
X
-
Dynamically updating Plots[0].Width in OnRender
I am trying to get the Width of one of my plots to match the width of another minus 1 pixel. I am trying to confirm that OnRender is the right place to do that and also inquire as to why this isn't working:
Code: -
Hello swcooke,
Thanks for your reply.
Yes, I missed that, thanks.
In OnRender() you would need to use base.OnRender(chartControl, chartScale); See the 2nd tip here: https://ninjatrader.com/support/help.../?onrender.htm
In OnRender you can obtain the current bar width from BarWidth: https://ninjatrader.com/support/help...l_barwidth.htm which is a double so just convert to int type and subtract 1 and set Plots[1].width to that value.
Paul H.NinjaTrader Customer Service
Comment
-
Thank you Paul. Here is the code I went with in case it helps anyone else:
Code:protected override void OnRender(ChartControl chartControl, ChartScale chartScale) { base.OnRender(chartControl, chartScale); Plots[1].Width = Math.Max((float)chartControl.BarWidth - 3,2); }
- Likes 1
Comment
Latest Posts
Collapse
Topics | Statistics | Last Post | ||
---|---|---|---|---|
Started by XXtrader, Yesterday, 11:30 PM
|
2 responses
11 views
0 likes
|
Last Post
by XXtrader
Today, 03:07 AM
|
||
Started by Waxavi, Today, 02:10 AM
|
0 responses
6 views
0 likes
|
Last Post
by Waxavi
Today, 02:10 AM
|
||
Started by TradeForge, Today, 02:09 AM
|
0 responses
11 views
0 likes
|
Last Post
by TradeForge
Today, 02:09 AM
|
||
Started by Waxavi, Today, 02:00 AM
|
0 responses
2 views
0 likes
|
Last Post
by Waxavi
Today, 02:00 AM
|
||
Started by elirion, Today, 01:36 AM
|
0 responses
7 views
0 likes
|
Last Post
by elirion
Today, 01:36 AM
|
Comment