namespace NinjaTrader.NinjaScript.Indicators
{
public class EMAChartToggle : Indicator
{
private SimpleFont largeFont;
[NinjaScriptProperty]
[Display(ResourceType = typeof(Custom.Resource), Name = "In Trade - Chart off", GroupName = "Make chart invisible", Order = 0)]
public bool ChartOff { get; set; }
[NinjaScriptProperty]
[Display(Name = "Hotkey", GroupName = "Make chart invisible", Order = 1)]
public string Hotkey { get; set; }
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Name = "EMA Chart Toggle";
IsOverlay = true;
largeFont = new Gui.Tools.SimpleFont("Arial", 20);
ChartOff = false;
Hotkey = null;
Calculate = Calculate.OnBarClose;
}
else if (State == State.Configure)
{
// Attach key press event to chart control
ChartControl chartControl = ChartPanel.ChartControl;
if (chartControl != null)
{
chartControl.PreviewKeyDown += OnPreviewKeyDown;
}
}
else if (State == State.Terminated)
{
largeFont = null;
if (ChartPanel != null && ChartPanel.ChartControl != null)
{
ChartPanel.ChartControl.PreviewKeyDown -= OnPreviewKeyDown;
}
}
}
protected override void OnBarUpdate()
{
if (CurrentBar < 100)
{
return;
}
if (ChartOff)
{
int barsAgo = 100;
double highestHigh = MAX(High, barsAgo)[0];
double lowestLow = MIN(Low, barsAgo)[0];
Draw.Rectangle(this, "ChartOffRectangle", false, barsAgo, lowestLow, -15, highestHigh, Brushes.Transparent, Brushes.White, 100);
Draw.TextFixed(this, "ChartOffText", " IN TRADE ", TextPosition.Center, Brushes.Black, largeFont, Brushes.Transparent, Brushes.Lime, 100);
}
else
{
RemoveDrawObject("ChartOffRectangle");
RemoveDrawObject("ChartOffText");
}
}
private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{
Key hotkey;
if (Enum.TryParse(Hotkey, out hotkey) && e.Key == hotkey)
{
ChartOff = !ChartOff;
}
}
}
}
Can anyone help?
Thanks
Peter

Comment