CheckEnumValueTest Ninjatrader

Enums
 avatar
unknown
csharp
a year ago
10 kB
21
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