usingSystem;usingcAlgo.API;usingcAlgo.API.Collections;usingcAlgo.API.Indicators;usingcAlgo.API.Internals;usingSystem.Linq;namespacecAlgo.Robots{[Robot(AccessRights = AccessRights.None, AddIndicators = true)]publicclassChartTemplatesTest:Robot{protectedoverridevoidOnStart(){vartemplatesComboBox=newComboBox();foreach(vartemplateinChartTemplates){templatesComboBox.AddItem(template.Name);}ChartTemplates.Added+=args=>{templatesComboBox.AddItem(args.ChartTemplate.Name);Print($"New Template added: {args.ChartTemplate.Name}");};ChartTemplates.Removed+=args=>{templatesComboBox.RemoveItem(args.ChartTemplate.Name);Print($"Template Removed: {args.ChartTemplate.Name}");};varshowTemplateInfoButton=newButton{Text="Show Template Info"};showTemplateInfoButton.Click+=args=>{if(string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem)){Print("No template is selected");return;}vartemplate=ChartTemplates.Get(templatesComboBox.SelectedItem);Print($"Name: {template.Name} | Bots #: {template.Robots.Count} | Indicators #: {template.Indicators.Count}");};varshowDefaultTemplateInfoButton=newButton{Text="Show Default Template Info"};showDefaultTemplateInfoButton.Click+=args=>{Print($"Name: {ChartTemplates.DefaultTemplate.Name} | Bots #: {ChartTemplates.DefaultTemplate.Robots.Count} | Indicators #: {ChartTemplates.DefaultTemplate.Indicators.Count}");};varremoveTemplateButton=newButton{Text="Remove Template"};removeTemplateButton.Click+=_=>ChartTemplates.Remove(ChartTemplates.Get(templatesComboBox.SelectedItem));varapplyTemplateButton=newButton{Text="Apply Template"};applyTemplateButton.Click+=_=>ChartTemplates.Get(templatesComboBox.SelectedItem).Apply(Chart);varduplicateTemplateButton=newButton{Text="Duplicate Template"};duplicateTemplateButton.Click+=_=>ChartTemplates.Duplicate($"{templatesComboBox.SelectedItem} Duplicate",ChartTemplates.Get(templatesComboBox.SelectedItem));varcreateTemplateTextBox=newTextBox{Text="Template Name"};varcreateEmptyTemplateButton=newButton{Text="Create Empty Template"};createEmptyTemplateButton.Click+=_=>ChartTemplates.Create(createTemplateTextBox.Text);varcreateTemplateBasedOnChartButton=newButton{Text="Create Template Based On Chart"};createTemplateBasedOnChartButton.Click+=_=>ChartTemplates.Create(createTemplateTextBox.Text,Chart);varchangeDefaultTemplateToSelectedButton=newButton{Text="Change Default Template To Selected"};changeDefaultTemplateToSelectedButton.Click+=_=>ChartTemplates.DefaultTemplate=ChartTemplates.Get(templatesComboBox.SelectedItem);varcheckSelectedTemplateExistsButton=newButton{Text="Check Selected Template Exists"};checkSelectedTemplateExistsButton.Click+=_=>Print($"Template {templatesComboBox.SelectedItem} Exists: {ChartTemplates.Contains(templatesComboBox.SelectedItem)}");varremoveSelectedTemplateIndicator=newButton{Text="Remove Selected Template Indicator"};removeSelectedTemplateIndicator.Click+=_=>{if(string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem)){Print("No template is selected");return;}vartemplate=ChartTemplates.Get(templatesComboBox.SelectedItem);if(template.Indicators.Count==0)return;Print($"Remove Result: {template.Indicators.Remove(template.Indicators.First())}");};varremoveSelectedTemplateBot=newButton{Text="Remove Selected Template Bot"};removeSelectedTemplateBot.Click+=_=>{if(string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem)){Print("No template is selected");return;}vartemplate=ChartTemplates.Get(templatesComboBox.SelectedItem);if(template.Robots.Count==0)return;Print($"Remove Result: {template.Robots.Remove(template.Robots.First())}");};varindicatorsCombobox=newComboBox();foreach(varindicatorinAlgoRegistry.Indicators.OrderBy(i=>i.Name)){indicatorsCombobox.AddItem(indicator.Name);}varaddIndicatorWithDefaultParametersToSelectedTemplate=newButton{Text="Add Indicator with default parameters to Selected Template"};addIndicatorWithDefaultParametersToSelectedTemplate.Click+=_=>{if(string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem)){Print("No template is selected");return;}vartemplate=ChartTemplates.Get(templatesComboBox.SelectedItem);if(string.IsNullOrWhiteSpace(indicatorsCombobox.SelectedItem)){Print("No indicator is selected");return;}Print($"Adding indicator {indicatorsCombobox.SelectedItem}");template.Indicators.Add(indicatorsCombobox.SelectedItem);};varrobotsCombobox=newComboBox();foreach(varrobotinAlgoRegistry.Robots.OrderBy(i=>i.Name)){robotsCombobox.AddItem(robot.Name);}varaddRobotWithDefaultParametersToSelectedTemplate=newButton{Text="Add Robot with default parameters to Selected Template"};addRobotWithDefaultParametersToSelectedTemplate.Click+=_=>{if(string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem)){Print("No template is selected");return;}vartemplate=ChartTemplates.Get(templatesComboBox.SelectedItem);if(string.IsNullOrWhiteSpace(robotsCombobox.SelectedItem)){Print("No robot is selected");return;}Print($"Adding Robot {robotsCombobox.SelectedItem}");template.Robots.Add(robotsCombobox.SelectedItem);};varaddEmaIndicatorWithDifferentParametersToSelectedTemplate=newButton{Text="Add EMA indicator with Different parameters to Selected Template"};addEmaIndicatorWithDifferentParametersToSelectedTemplate.Click+=_=>{if(string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem)){Print("No template is selected");return;}vartemplate=ChartTemplates.Get(templatesComboBox.SelectedItem);varemaType=AlgoRegistry.Get("Exponential Moving Average",AlgoKind.StandardIndicator)asIndicatorType;Print($"Adding Indicator {emaType.Name} with Period 100");template.Indicators.Add(emaType,Bars.OpenPrices,100);};varchangeEmaIndicatorParametersForSelectedTemplate=newButton{Text="Change EMA indicator parameters for Selected Template"};changeEmaIndicatorParametersForSelectedTemplate.Click+=_=>{if(string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem)){Print("No template is selected");return;}vartemplate=ChartTemplates.Get(templatesComboBox.SelectedItem);varemaType=AlgoRegistry.Get("Exponential Moving Average",AlgoKind.StandardIndicator)asIndicatorType;if(template.Indicators.FirstOrDefault(i=>i.Type==emaType)isnot{}templateIndicator){Print($"EMA indicator not found in template '{template.Name}'");return;}Print($"Changing Indicator {emaType.Name} Period to 200");templateIndicator.Parameters["Periods"].Value=200;};varsetAllColorSettingsToRedForSelectedTemplate=newButton{Text="Set All Color Setting to Red for Selected Template"};setAllColorSettingsToRedForSelectedTemplate.Click+=_=>{if(string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem)){Print("No template is selected");return;}vartemplate=ChartTemplates.Get(templatesComboBox.SelectedItem);template.ColorSettings.AskPriceLineColor=Color.Red;template.ColorSettings.BidPriceLineColor=Color.Red;template.ColorSettings.BackgroundColor=Color.Red;template.ColorSettings.BearFillColor=Color.Red;template.ColorSettings.BearOutlineColor=Color.Red;template.ColorSettings.BullFillColor=Color.Red;template.ColorSettings.BullOutlineColor=Color.Red;template.ColorSettings.BuyColor=Color.Red;template.ColorSettings.ForegroundColor=Color.Red;template.ColorSettings.GridLinesColor=Color.Red;template.ColorSettings.LosingDealColor=Color.Red;template.ColorSettings.PeriodSeparatorColor=Color.Red;template.ColorSettings.SellColor=Color.Red;template.ColorSettings.TickVolumeColor=Color.Red;template.ColorSettings.WinningDealColor=Color.Red;template.ColorSettings.AreaFillColor=Color.Red;};varenableAllDisplayOptionsForSelectedTemplate=newButton{Text="Enable all display options for Selected Template"};enableAllDisplayOptionsForSelectedTemplate.Click+=_=>{if(string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem)){Print("No template is selected");return;}vartemplate=ChartTemplates.Get(templatesComboBox.SelectedItem);template.DisplaySettings.AskPriceLine=true;template.DisplaySettings.Bars=true;template.DisplaySettings.BidPriceLine=true;template.DisplaySettings.ChartScale=true;template.DisplaySettings.DealMap=true;template.DisplaySettings.Grid=true;template.DisplaySettings.IndicatorTitles=true;template.DisplaySettings.MarketSentiment=true;template.DisplaySettings.Orders=true;template.DisplaySettings.PeriodSeparators=true;template.DisplaySettings.Positions=true;template.DisplaySettings.PriceAlerts=true;template.DisplaySettings.PriceAxisOverlayButtons=true;template.DisplaySettings.QuickTradeButtons=true;template.DisplaySettings.Targets=true;template.DisplaySettings.TickVolume=true;template.DisplaySettings.AddRobotButton=true;};vardisableAllDisplayOptionsForSelectedTemplate=newButton{Text="Disable all display options for Selected Template"};disableAllDisplayOptionsForSelectedTemplate.Click+=_=>{if(string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem)){Print("No template is selected");return;}vartemplate=ChartTemplates.Get(templatesComboBox.SelectedItem);template.DisplaySettings.AskPriceLine=false;template.DisplaySettings.Bars=false;template.DisplaySettings.BidPriceLine=false;template.DisplaySettings.ChartScale=false;template.DisplaySettings.DealMap=false;template.DisplaySettings.Grid=false;template.DisplaySettings.IndicatorTitles=false;template.DisplaySettings.MarketSentiment=false;template.DisplaySettings.Orders=false;template.DisplaySettings.PeriodSeparators=false;template.DisplaySettings.Positions=false;template.DisplaySettings.PriceAlerts=false;template.DisplaySettings.PriceAxisOverlayButtons=false;template.DisplaySettings.QuickTradeButtons=false;template.DisplaySettings.Targets=false;template.DisplaySettings.TickVolume=false;template.DisplaySettings.AddRobotButton=false;};varchangeChartTypeForSelectedTemplate=newButton{Text="Change Chart Type for Selected Template"};changeChartTypeForSelectedTemplate.Click+=_=>{if(string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem)){Print("No template is selected");return;}vartemplate=ChartTemplates.Get(templatesComboBox.SelectedItem);template.DisplaySettings.ChartType=template.DisplaySettings.ChartTypeswitch{ChartType.Area=>ChartType.Bars,ChartType.Bars=>ChartType.Candlesticks,ChartType.Candlesticks=>ChartType.Dots,ChartType.Dots=>ChartType.Hlc,ChartType.Hlc=>ChartType.Line,_=>ChartType.Area};Print($"Changed template '{template.Name}' chart type to '{template.DisplaySettings.ChartType}'");};varchangeZoomLevelForSelectedTemplate=newButton{Text="Change Zoom Level for Selected Template"};changeZoomLevelForSelectedTemplate.Click+=_=>{if(string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem)){Print("No template is selected");return;}vartemplate=ChartTemplates.Get(templatesComboBox.SelectedItem);template.DisplaySettings.ZoomLevel=template.DisplaySettings.ZoomLevelswitch{5=>400,400=>5,_=>5};Print($"Changed template '{template.Name}' zoom level to '{template.DisplaySettings.ZoomLevel}'");};varpanel=newStackPanel{Orientation=Orientation.Vertical,HorizontalAlignment=HorizontalAlignment.Center,VerticalAlignment=VerticalAlignment.Center};panel.AddChild(templatesComboBox);panel.AddChild(showTemplateInfoButton);panel.AddChild(showDefaultTemplateInfoButton);panel.AddChild(removeTemplateButton);panel.AddChild(applyTemplateButton);panel.AddChild(duplicateTemplateButton);panel.AddChild(createTemplateTextBox);panel.AddChild(createEmptyTemplateButton);panel.AddChild(createTemplateBasedOnChartButton);panel.AddChild(changeDefaultTemplateToSelectedButton);panel.AddChild(checkSelectedTemplateExistsButton);panel.AddChild(removeSelectedTemplateIndicator);panel.AddChild(removeSelectedTemplateBot);panel.AddChild(indicatorsCombobox);panel.AddChild(addIndicatorWithDefaultParametersToSelectedTemplate);panel.AddChild(robotsCombobox);panel.AddChild(addRobotWithDefaultParametersToSelectedTemplate);panel.AddChild(addEmaIndicatorWithDifferentParametersToSelectedTemplate);panel.AddChild(changeEmaIndicatorParametersForSelectedTemplate);panel.AddChild(setAllColorSettingsToRedForSelectedTemplate);panel.AddChild(enableAllDisplayOptionsForSelectedTemplate);panel.AddChild(disableAllDisplayOptionsForSelectedTemplate);panel.AddChild(changeChartTypeForSelectedTemplate);panel.AddChild(changeZoomLevelForSelectedTemplate);Chart.AddControl(panel);}}}
importclrclr.AddReference("cAlgo.API")# Import cAlgo API typesfromcAlgo.APIimport*# Import trading wrapper functionsfromrobot_wrapperimport*classTest():defon_chart_template_added(self,args):self.templatesComboBox.AddItem(args.ChartTemplate.Name)print(f"New Template added: {args.ChartTemplate.Name}")defon_chart_template_removed(self,args):self.templatesComboBox.RemoveItem(args.ChartTemplate.Name)print(f"Template Removed: {args.ChartTemplate.Name}")defon_show_template_info_button_clicked(self,args):ifself.templatesComboBox.SelectedItemisNone:print("No template is selected")returntemplate=api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)print(f"Name: {template.Name} | Bots #: {template.Robots.Count} | Indicators #: {template.Indicators.Count}")defon_remove_selected_template_indicator_clicked(self,args):ifself.templatesComboBox.SelectedItemisNone:print("No template is selected")returntemplate=api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)iftemplate.Indicators.Count==0:returnprint(f"Remove Result: {template.Indicators.Remove(next(iforiintemplate.Indicators))}")defon_remove_selected_template_bot_clicked(self,args):ifself.templatesComboBox.SelectedItemisNone:print("No template is selected")returntemplate=api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)iftemplate.Robots.Count==0:returnprint(f"Remove Result: {template.Robots.Remove(next(rforrintemplate.Robots))}")defon_add_indicator_with_default_parameters_to_selected_template_clicked(self,args):ifself.templatesComboBox.SelectedItemisNone:print("No template is selected")returntemplate=api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)ifself.indicatorsCombobox.SelectedItemisNone:print("No indicator is selected")returnprint(f"Adding indicator {self.indicatorsCombobox.SelectedItem}")template.Indicators.Add(self.indicatorsCombobox.SelectedItem)defon_add_robot_with_default_parameters_to_selected_template_clicked(self,args):ifself.templatesComboBox.SelectedItemisNone:print("No template is selected")returntemplate=api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)ifself.robotsCombobox.SelectedItemisNone:print("No robot is selected")returnprint(f"Adding robot {self.robotsCombobox.SelectedItem}")template.Robots.Add(self.robotsCombobox.SelectedItem)defon_add_ema_indicator_with_different_parameters_to_selected_template_clicked(self,args):ifself.templatesComboBox.SelectedItemisNone:print("No template is selected")returntemplate=api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)emaType=IndicatorType(api.AlgoRegistry.Get("Exponential Moving Average",AlgoKind.StandardIndicator))print(f"Adding Indicator {emaType.Name} with Period 100")template.Indicators.Add(emaType,api.Bars.OpenPrices,100)defon_change_ema_indicator_parameters_for_selected_template_clicked(self,args):ifself.templatesComboBox.SelectedItemisNone:print("No template is selected")returntemplate=api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)emaType=IndicatorType(api.AlgoRegistry.Get("Exponential Moving Average",AlgoKind.StandardIndicator))templateIndicator=next((xforxintemplate.Indicatorsifx.Type==emaType),None)iftemplateIndicatorisNone:print(f"EMA indicator not found in template '{template.Name}'")returnprint(f"Changing Indicator {emaType.Name} Period to 200")templateIndicator.Parameters["Periods"].Value=200defon_set_all_color_settings_to_red_for_selected_template_clicked(self,args):ifself.templatesComboBox.SelectedItemisNone:print("No template is selected")returntemplate=api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)template.ColorSettings.AskPriceLineColor=Color.Redtemplate.ColorSettings.BidPriceLineColor=Color.Redtemplate.ColorSettings.BackgroundColor=Color.Redtemplate.ColorSettings.BearFillColor=Color.Redtemplate.ColorSettings.BearOutlineColor=Color.Redtemplate.ColorSettings.BullFillColor=Color.Redtemplate.ColorSettings.BullOutlineColor=Color.Redtemplate.ColorSettings.BuyColor=Color.Redtemplate.ColorSettings.ForegroundColor=Color.Redtemplate.ColorSettings.GridLinesColor=Color.Redtemplate.ColorSettings.LosingDealColor=Color.Redtemplate.ColorSettings.PeriodSeparatorColor=Color.Redtemplate.ColorSettings.SellColor=Color.Redtemplate.ColorSettings.TickVolumeColor=Color.Redtemplate.ColorSettings.WinningDealColor=Color.Redtemplate.ColorSettings.AreaFillColor=Color.Reddefon_enable_all_display_options_for_selected_template_clicked(self,args):ifself.templatesComboBox.SelectedItemisNone:print("No template is selected")returntemplate=api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)template.DisplaySettings.AskPriceLine=Truetemplate.DisplaySettings.Bars=Truetemplate.DisplaySettings.BidPriceLine=Truetemplate.DisplaySettings.ChartScale=Truetemplate.DisplaySettings.DealMap=Truetemplate.DisplaySettings.Grid=Truetemplate.DisplaySettings.IndicatorTitles=Truetemplate.DisplaySettings.MarketSentiment=Truetemplate.DisplaySettings.Orders=Truetemplate.DisplaySettings.PeriodSeparators=Truetemplate.DisplaySettings.Positions=Truetemplate.DisplaySettings.PriceAlerts=Truetemplate.DisplaySettings.PriceAxisOverlayButtons=Truetemplate.DisplaySettings.QuickTradeButtons=Truetemplate.DisplaySettings.Targets=Truetemplate.DisplaySettings.TickVolume=Truetemplate.DisplaySettings.AddRobotButton=Truedefon_disable_all_display_options_for_selected_template_clicked(self,args):ifself.templatesComboBox.SelectedItemisNone:print("No template is selected")returntemplate=api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)template.DisplaySettings.AskPriceLine=Falsetemplate.DisplaySettings.Bars=Falsetemplate.DisplaySettings.BidPriceLine=Falsetemplate.DisplaySettings.ChartScale=Falsetemplate.DisplaySettings.DealMap=Falsetemplate.DisplaySettings.Grid=Falsetemplate.DisplaySettings.IndicatorTitles=Falsetemplate.DisplaySettings.MarketSentiment=Falsetemplate.DisplaySettings.Orders=Falsetemplate.DisplaySettings.PeriodSeparators=Falsetemplate.DisplaySettings.Positions=Falsetemplate.DisplaySettings.PriceAlerts=Falsetemplate.DisplaySettings.PriceAxisOverlayButtons=Falsetemplate.DisplaySettings.QuickTradeButtons=Falsetemplate.DisplaySettings.Targets=Falsetemplate.DisplaySettings.TickVolume=Falsetemplate.DisplaySettings.AddRobotButton=Falsedefon_change_chart_type_for_selected_template_clicked(self,args):ifself.templatesComboBox.SelectedItemisNone:print("No template is selected")returntemplate=api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)matchtemplate.DisplaySettings.ChartType:caseChartType.Area:template.DisplaySettings.ChartType=ChartType.BarscaseChartType.Bars:template.DisplaySettings.ChartType=ChartType.CandlestickscaseChartType.Candlesticks:template.DisplaySettings.ChartType=ChartType.DotscaseChartType.Dots:template.DisplaySettings.ChartType=ChartType.HlccaseChartType.Hlc:template.DisplaySettings.ChartType=ChartType.Linecase_:template.DisplaySettings.ChartType=ChartType.Areaprint(f"Changed template '{template.Name}' chart type to '{template.DisplaySettings.ChartType}'")defon_change_zoom_level_for_selected_template_clicked(self,args):ifself.templatesComboBox.SelectedItemisNone:print("No template is selected")returntemplate=api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)matchtemplate.DisplaySettings.ZoomLevel:case5:template.DisplaySettings.ZoomLevel=400case_:template.DisplaySettings.ZoomLevel=5print(f"Changed template '{template.Name}' zoom level to '{template.DisplaySettings.ZoomLevel}'")defon_change_default_template_to_selected_button_clicked(self,args):api.ChartTemplates.DefaultTemplate=api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)defon_start(self):self.templatesComboBox=ComboBox()fortemplateinapi.ChartTemplates:self.templatesComboBox.AddItem(template.Name)api.ChartTemplates.Added+=self.on_chart_template_addedapi.ChartTemplates.Removed+=self.on_chart_template_removedshowTemplateInfoButton=Button()showTemplateInfoButton.Text="Show Template Info"showTemplateInfoButton.Click+=self.on_show_template_info_button_clickedshowDefaultTemplateInfoButton=Button()showDefaultTemplateInfoButton.Text="Show Default Template Info"showDefaultTemplateInfoButton.Click+=lambdaargs:print(f"Name: {api.ChartTemplates.DefaultTemplate.Name} | Bots #: {api.ChartTemplates.DefaultTemplate.Robots.Count} | Indicators #: {api.ChartTemplates.DefaultTemplate.Indicators.Count}")removeTemplateButton=Button()removeTemplateButton.Text="Remove Template"removeTemplateButton.Click+=lambda_:api.ChartTemplates.Remove(api.ChartTemplates.Get(self.templatesComboBox.SelectedItem))applyTemplateButton=Button()applyTemplateButton.Text="Apply Template"applyTemplateButton.Click+=lambda_:api.ChartTemplates.Get(self.templatesComboBox.SelectedItem).Apply(api.Chart)duplicateTemplateButton=Button()duplicateTemplateButton.Text="Duplicate Template"duplicateTemplateButton.Click+=lambda_:api.ChartTemplates.Duplicate(f"{self.templatesComboBox.SelectedItem} Duplicate",api.ChartTemplates.Get(self.templatesComboBox.SelectedItem))createTemplateTextBox=TextBox()createTemplateTextBox.Text="Template Name"createEmptyTemplateButton=Button()createEmptyTemplateButton.Text="Create Empty Template"createEmptyTemplateButton.Click+=lambda_:api.ChartTemplates.Create(createTemplateTextBox.Text)createTemplateBasedOnChartButton=Button()createTemplateBasedOnChartButton.Text="Create Template Based On Chart"createTemplateBasedOnChartButton.Click+=lambda_:api.ChartTemplates.Create(createTemplateTextBox.Text,api.Chart)changeDefaultTemplateToSelectedButton=Button()changeDefaultTemplateToSelectedButton.Text="Change Default Template To Selected"changeDefaultTemplateToSelectedButton.Click+=self.on_change_default_template_to_selected_button_clickedcheckSelectedTemplateExistsButton=Button()checkSelectedTemplateExistsButton.Text="Check Selected Template Exists"checkSelectedTemplateExistsButton.Click+=lambda_:print(f"Template {self.templatesComboBox.SelectedItem} Exists: {api.ChartTemplates.Contains(self.templatesComboBox.SelectedItem)}")removeSelectedTemplateIndicator=Button()removeSelectedTemplateIndicator.Text="Remove Selected Template Indicator"removeSelectedTemplateIndicator.Click+=self.on_remove_selected_template_indicator_clickedremoveSelectedTemplateBot=Button()removeSelectedTemplateBot.Text="Remove Selected Template Bot"removeSelectedTemplateBot.Click+=self.on_remove_selected_template_bot_clickedself.indicatorsCombobox=ComboBox()forindicatorNameinsorted([i.Nameforiinapi.AlgoRegistry.Indicators]):self.indicatorsCombobox.AddItem(indicatorName)addIndicatorWithDefaultParametersToSelectedTemplate=Button()addIndicatorWithDefaultParametersToSelectedTemplate.Text="Add Indicator with default parameters to Selected Template"addIndicatorWithDefaultParametersToSelectedTemplate.Click+=self.on_add_indicator_with_default_parameters_to_selected_template_clickedself.robotsCombobox=ComboBox()forrobotNameinsorted([i.Nameforiinapi.AlgoRegistry.Robots]):self.robotsCombobox.AddItem(robotName)addRobotWithDefaultParametersToSelectedTemplate=Button()addRobotWithDefaultParametersToSelectedTemplate.Text="Add Robot with default parameters to Selected Template"addRobotWithDefaultParametersToSelectedTemplate.Click+=self.on_add_robot_with_default_parameters_to_selected_template_clickedaddEmaIndicatorWithDifferentParametersToSelectedTemplate=Button()addEmaIndicatorWithDifferentParametersToSelectedTemplate.Text="Add EMA indicator with Different parameters to Selected Template"addEmaIndicatorWithDifferentParametersToSelectedTemplate.Click+=self.on_add_ema_indicator_with_different_parameters_to_selected_template_clickedchangeEmaIndicatorParametersForSelectedTemplate=Button()changeEmaIndicatorParametersForSelectedTemplate.Text="Change EMA indicator parameters for Selected Template"changeEmaIndicatorParametersForSelectedTemplate.Click+=self.on_change_ema_indicator_parameters_for_selected_template_clickedsetAllColorSettingsToRedForSelectedTemplate=Button()setAllColorSettingsToRedForSelectedTemplate.Text="Set All Color Setting to Red for Selected Template"setAllColorSettingsToRedForSelectedTemplate.Click+=self.on_set_all_color_settings_to_red_for_selected_template_clickedenableAllDisplayOptionsForSelectedTemplate=Button()enableAllDisplayOptionsForSelectedTemplate.Text="Enable all display options for Selected Template"enableAllDisplayOptionsForSelectedTemplate.Click+=self.on_enable_all_display_options_for_selected_template_clickeddisableAllDisplayOptionsForSelectedTemplate=Button()disableAllDisplayOptionsForSelectedTemplate.Text="Disable all display options for Selected Template"disableAllDisplayOptionsForSelectedTemplate.Click+=self.on_disable_all_display_options_for_selected_template_clickedchangeChartTypeForSelectedTemplate=Button()changeChartTypeForSelectedTemplate.Text="Change Chart Type for Selected Template"changeChartTypeForSelectedTemplate.Click+=self.on_change_chart_type_for_selected_template_clickedchangeZoomLevelForSelectedTemplate=Button()changeZoomLevelForSelectedTemplate.Text="Change Zoom Level for Selected Template"changeZoomLevelForSelectedTemplate.Click+=self.on_change_zoom_level_for_selected_template_clickedpanel=StackPanel()panel.Orientation=Orientation.Verticalpanel.HorizontalAlignment=HorizontalAlignment.Centerpanel.VerticalAlignment=VerticalAlignment.Centerpanel.AddChild(self.templatesComboBox)panel.AddChild(showTemplateInfoButton)panel.AddChild(showDefaultTemplateInfoButton)panel.AddChild(removeTemplateButton)panel.AddChild(applyTemplateButton)panel.AddChild(duplicateTemplateButton)panel.AddChild(createTemplateTextBox)panel.AddChild(createEmptyTemplateButton)panel.AddChild(createTemplateBasedOnChartButton)panel.AddChild(changeDefaultTemplateToSelectedButton)panel.AddChild(checkSelectedTemplateExistsButton)panel.AddChild(removeSelectedTemplateIndicator)panel.AddChild(removeSelectedTemplateBot)panel.AddChild(self.indicatorsCombobox)panel.AddChild(addIndicatorWithDefaultParametersToSelectedTemplate)panel.AddChild(self.robotsCombobox)panel.AddChild(addRobotWithDefaultParametersToSelectedTemplate)panel.AddChild(addEmaIndicatorWithDifferentParametersToSelectedTemplate)panel.AddChild(changeEmaIndicatorParametersForSelectedTemplate)panel.AddChild(setAllColorSettingsToRedForSelectedTemplate)panel.AddChild(enableAllDisplayOptionsForSelectedTemplate)panel.AddChild(disableAllDisplayOptionsForSelectedTemplate)panel.AddChild(changeChartTypeForSelectedTemplate)panel.AddChild(changeZoomLevelForSelectedTemplate)api.Chart.AddControl(panel)