CheckEnumValueTest Ninjatrader
Enumsunknown
csharp
a year ago
10 kB
28
Indexable
#region Using declarations
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Gui;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Gui.SuperDom;
using NinjaTrader.Gui.Tools;
using NinjaTrader.Data;
using NinjaTrader.NinjaScript;
using NinjaTrader.Core.FloatingPoint;
using NinjaTrader.NinjaScript.DrawingTools;
using System.Windows.Controls;
#endregion
//This namespace holds Indicators in this folder and is required. Do not change it.
namespace NinjaTrader.NinjaScript.Indicators
{
public class CheckEnumValueTest : Indicator
{
#region Class Variables
// Create a variable that stores the user's selection for a moving average
private CheckEnumValueTest_Tools.CustomEnum myEnum;
private string ticksString;
private Grid chartTraderGrid, chartTraderButtonsGrid;
private ChartTab chartTab;
private Style chartTraderButtonStyle;
private Chart chartWindow;
private TabItem tabItem;
private RowDefinition customCtaddedRow2;
private Grid lowerButtonsGrid;
private Button[] chartTraderCustomButtonsArray;
private bool customCtButtonsActive;
#endregion
#region OnStateChange()
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Description = @"";
Name = "CheckEnumValueTest";
myEnum = CheckEnumValueTest_Tools.CustomEnum.D;
}
else if (State == State.Historical)
{
ticksString = "12345";
if (ChartControl != null)
{
ChartControl.Dispatcher.InvokeAsync((() =>
{
LoadBrushesFromSkin();
// WPF modifications wait until State.Historical to play nice with duplicating tabs
CreateWPFControls();
}));
}
}
else if (State == State.Terminated)
{
if (ChartControl != null)
{
ChartControl.Dispatcher.InvokeAsync((() =>
{
DisposeWPFControls();
}));
}
}
}
#endregion
#region CreateWPFControls()
protected void CreateWPFControls()
{
#region GRID GONFIG
chartWindow = Window.GetWindow(ChartControl.Parent) as Chart;
if (chartWindow == null)
return;
chartTraderGrid = (chartWindow.FindFirst("ChartWindowChartTraderControl") as ChartTrader).Content as Grid;
chartTraderButtonsGrid = chartTraderGrid.Children[0] as Grid;;
lowerButtonsGrid = new Grid();
Grid.SetColumnSpan(lowerButtonsGrid, 4);
lowerButtonsGrid.ColumnDefinitions.Add(new ColumnDefinition());
lowerButtonsGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength((double)Application.Current.FindResource("MarginBase")) });
lowerButtonsGrid.ColumnDefinitions.Add(new ColumnDefinition());
customCtaddedRow2 = new RowDefinition() { Height = new GridLength(40) };
#endregion
#region BUTTONS CONFIG
string addToContentString = new CheckEnumValueTest_Tools.CustomEnum[]
{
CheckEnumValueTest_Tools.CustomEnum.A,
CheckEnumValueTest_Tools.CustomEnum.B,
CheckEnumValueTest_Tools.CustomEnum.C
}.Contains(MyEnum) ? " - " + ticksString : string.Empty;
chartTraderCustomButtonsArray = new Button[2];
for (int i = 0; i < 2; ++i)
{
chartTraderCustomButtonsArray[i] = new Button()
{
Content = string.Format("Button {0}{1}", i + 1, addToContentString),
Height = 30,
Margin = new Thickness(0,0,0,0),
Padding = new Thickness(0,0,0,0),
Style = chartTraderButtonStyle
};
}
chartTraderCustomButtonsArray[0].Click += ChartTraderButtonMenu_Click;
chartTraderCustomButtonsArray[1].Click += ChartTraderButtonMenu_Click;
Grid.SetColumn(chartTraderCustomButtonsArray[0], 0);
Grid.SetColumn(chartTraderCustomButtonsArray[1], 2);
for (int i = 0; i < 2; ++i)
lowerButtonsGrid.Children.Add(chartTraderCustomButtonsArray[i]);
#endregion
#region TABs CONFIG
if (TabSelected())
ShowWPFControls();
chartWindow.MainTabControl.SelectionChanged += TabChangedHandler;
#endregion
}
#endregion
#region DisposeWPFControls()
private void DisposeWPFControls()
{
if (chartWindow != null)
chartWindow.MainTabControl.SelectionChanged -= TabChangedHandler;
HideWPFControls();
for (int i = 0; i < 2; i++)
if (chartTraderCustomButtonsArray[i] != null)
chartTraderCustomButtonsArray[i].Click -= ChartTraderButtonMenu_Click;
if (customCtButtonsActive)
{
if (chartTraderButtonsGrid != null || lowerButtonsGrid != null)
{
chartTraderGrid.Children.Remove(lowerButtonsGrid);
chartTraderGrid.RowDefinitions.Remove(customCtaddedRow2);
}
customCtButtonsActive = false;
}
}
#endregion
#region HideWPFControls()
private void HideWPFControls()
{
if (customCtButtonsActive)
{
if (chartTraderButtonsGrid != null || lowerButtonsGrid != null)
{
chartTraderGrid.Children.Remove(lowerButtonsGrid);
chartTraderGrid.RowDefinitions.Remove(customCtaddedRow2);
}
customCtButtonsActive = false;
}
}
#endregion
#region LoadBrushesFromSkin()
private void LoadBrushesFromSkin()
{
chartTraderButtonStyle = Application.Current.TryFindResource("BasicEntryButton") as Style;
}
#endregion
#region OnBarUpdate()
protected override void OnBarUpdate() { }
#endregion
#region ShowWPFControls()
private void ShowWPFControls()
{
if (!customCtButtonsActive)
{
// add a new row (addedRow2) for our lowerButtonsGrid below the ask and bid prices and pnl display
chartTraderGrid.RowDefinitions.Add(customCtaddedRow2);
Grid.SetRow(lowerButtonsGrid, (chartTraderGrid.RowDefinitions.Count - 1));
chartTraderGrid.Children.Add(lowerButtonsGrid);
customCtButtonsActive = true;
}
}
#endregion
#region ChartTraderButtonMenu_Click
protected void ChartTraderButtonMenu_Click(object sender, RoutedEventArgs eventArgs)
{
Button button = sender as Button;
}
#endregion
#region TabSelected()
private bool TabSelected()
{
if (ChartControl == null || chartWindow == null || chartWindow.MainTabControl == null)
return false;
bool tabSelected = false;
if (ChartControl.ChartTab == ((chartWindow.MainTabControl.Items.GetItemAt(chartWindow.MainTabControl.SelectedIndex) as TabItem).Content as ChartTab))
tabSelected = true;
return tabSelected;
}
#endregion
#region TabChangedHandler
// Runs ShowWPFControls if this is the selected chart tab, other wise runs HideWPFControls()
private void TabChangedHandler(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count <= 0)
return;
tabItem = e.AddedItems[0] as TabItem;
if (tabItem == null)
return;
chartTab = tabItem.Content as ChartTab;
if (chartTab == null)
return;
if (TabSelected())
ShowWPFControls();
else
HideWPFControls();
}
#endregion
// Creates the user definable parameter for the moving average type.
[Display(GroupName = "Parameters", Description = "Choose an enum value")]
public CheckEnumValueTest_Tools.CustomEnum MyEnum
{
get { return myEnum; }
set { myEnum = value; }
}
}
}
namespace CheckEnumValueTest_Tools
{
public enum CustomEnum
{
A,
B,
C,
D,
E
}
}
#region NinjaScript generated code. Neither change nor remove.
namespace NinjaTrader.NinjaScript.Indicators
{
public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
{
private CheckEnumValueTest[] cacheCheckEnumValueTest;
public CheckEnumValueTest CheckEnumValueTest()
{
return CheckEnumValueTest(Input);
}
public CheckEnumValueTest CheckEnumValueTest(ISeries<double> input)
{
if (cacheCheckEnumValueTest != null)
for (int idx = 0; idx < cacheCheckEnumValueTest.Length; idx++)
if (cacheCheckEnumValueTest[idx] != null && cacheCheckEnumValueTest[idx].EqualsInput(input))
return cacheCheckEnumValueTest[idx];
return CacheIndicator<CheckEnumValueTest>(new CheckEnumValueTest(), input, ref cacheCheckEnumValueTest);
}
}
}
namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
{
public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
{
public Indicators.CheckEnumValueTest CheckEnumValueTest()
{
return indicator.CheckEnumValueTest(Input);
}
public Indicators.CheckEnumValueTest CheckEnumValueTest(ISeries<double> input )
{
return indicator.CheckEnumValueTest(input);
}
}
}
namespace NinjaTrader.NinjaScript.Strategies
{
public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
{
public Indicators.CheckEnumValueTest CheckEnumValueTest()
{
return indicator.CheckEnumValueTest(Input);
}
public Indicators.CheckEnumValueTest CheckEnumValueTest(ISeries<double> input )
{
return indicator.CheckEnumValueTest(input);
}
}
}
#endregion
Editor is loading...
Leave a Comment