ChartTemplates
interface cAlgo.API Since 5.6
DesktopCLICloud
Represents collection of chart templates and provide access to chart template API.
Environment behaviour
CLI — works differently. No templates are listed; Create works for this run only and is not saved; Remove returns false; DefaultTemplate throws NullReferenceException.
Cloud — not supported. Empty: Get returns null, Contains and Remove return false, Create and Duplicate throw, DefaultTemplate throws NullReferenceException.
Definition
public interface ChartTemplates
Namespace: cAlgo.API · Group: Templates
Examples
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using System.Linq;
namespace cAlgo.Robots
{
public partial class ChartTemplatesTest : Robot
{
protected override void OnStart()
{
var templatesComboBox = new ComboBox();
foreach (var template in ChartTemplates)
{
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}");
};
var showTemplateInfoButton = new Button {Text = "Show Template Info"};
showTemplateInfoButton.Click += args =>
{
if (string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem))
{
Print("No template is selected");
return;
}
var template = ChartTemplates.Get(templatesComboBox.SelectedItem);
Print($"Name: {template.Name} | Bots #: {template.Robots.Count} | Indicators #: {template.Indicators.Count}");
};
var showDefaultTemplateInfoButton = new Button {Text = "Show Default Template Info"};
showDefaultTemplateInfoButton.Click += args =>
{
Print($"Name: {ChartTemplates.DefaultTemplate.Name} | Bots #: {ChartTemplates.DefaultTemplate.Robots.Count} | Indicators #: {ChartTemplates.DefaultTemplate.Indicators.Count}");
};
var removeTemplateButton = new Button {Text = "Remove Template"};
removeTemplateButton.Click += _ => ChartTemplates.Remove(ChartTemplates.Get(templatesComboBox.SelectedItem));
var applyTemplateButton = new Button {Text = "Apply Template"};
applyTemplateButton.Click += _ => ChartTemplates.Get(templatesComboBox.SelectedItem).Apply(Chart);
var duplicateTemplateButton = new Button {Text = "Duplicate Template"};
duplicateTemplateButton.Click += _ => ChartTemplates.Duplicate($"{templatesComboBox.SelectedItem} Duplicate", ChartTemplates.Get(templatesComboBox.SelectedItem));
var createTemplateTextBox = new TextBox {Text = "Template Name"};
var createEmptyTemplateButton = new Button {Text = "Create Empty Template"};
createEmptyTemplateButton.Click += _ => ChartTemplates.Create(createTemplateTextBox.Text);
var createTemplateBasedOnChartButton = new Button {Text = "Create Template Based On Chart"};
createTemplateBasedOnChartButton.Click += _ => ChartTemplates.Create(createTemplateTextBox.Text, Chart);
var changeDefaultTemplateToSelectedButton = new Button {Text = "Change Default Template To Selected"};
changeDefaultTemplateToSelectedButton.Click += _ => ChartTemplates.DefaultTemplate = ChartTemplates.Get(templatesComboBox.SelectedItem);
var checkSelectedTemplateExistsButton = new Button {Text = "Check Selected Template Exists"};
checkSelectedTemplateExistsButton.Click += _ => Print($"Template {templatesComboBox.SelectedItem} Exists: {ChartTemplates.Contains(templatesComboBox.SelectedItem)}");
var removeSelectedTemplateIndicator = new Button {Text = "Remove Selected Template Indicator"};
removeSelectedTemplateIndicator.Click += _ =>
{
if (string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem))
{
Print("No template is selected");
return;
}
var template = ChartTemplates.Get(templatesComboBox.SelectedItem);
if (template.Indicators.Count == 0)
return;
Print($"Remove Result: {template.Indicators.Remove(template.Indicators.First())}");
};
var removeSelectedTemplateBot = new Button {Text = "Remove Selected Template Bot"};
removeSelectedTemplateBot.Click += _ =>
{
if (string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem))
{
Print("No template is selected");
return;
}
var template = ChartTemplates.Get(templatesComboBox.SelectedItem);
if (template.Robots.Count == 0)
return;
Print($"Remove Result: {template.Robots.Remove(template.Robots.First())}");
};
var indicatorsCombobox = new ComboBox();
foreach (var indicator in AlgoRegistry.Indicators.OrderBy(i => i.Name))
{
indicatorsCombobox.AddItem(indicator.Name);
}
var addIndicatorWithDefaultParametersToSelectedTemplate = new Button {Text = "Add Indicator with default parameters to Selected Template"};
addIndicatorWithDefaultParametersToSelectedTemplate.Click += _ =>
{
if (string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem))
{
Print("No template is selected");
return;
}
var template = 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);
};
var robotsCombobox = new ComboBox();
foreach (var robot in AlgoRegistry.Robots.OrderBy(i => i.Name))
{
robotsCombobox.AddItem(robot.Name);
}
var addRobotWithDefaultParametersToSelectedTemplate = new Button {Text = "Add Robot with default parameters to Selected Template"};
addRobotWithDefaultParametersToSelectedTemplate.Click += _ =>
{
if (string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem))
{
Print("No template is selected");
return;
}
var template = 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);
};
var addEmaIndicatorWithDifferentParametersToSelectedTemplate = new Button {Text = "Add EMA indicator with Different parameters to Selected Template"};
addEmaIndicatorWithDifferentParametersToSelectedTemplate.Click += _ =>
{
if (string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem))
{
Print("No template is selected");
return;
}
var template = ChartTemplates.Get(templatesComboBox.SelectedItem);
var emaType = AlgoRegistry.Get("Exponential Moving Average", AlgoKind.StandardIndicator) as IndicatorType;
Print($"Adding Indicator {emaType.Name} with Period 100");
template.Indicators.Add(emaType, Bars.OpenPrices, 100);
};
var changeEmaIndicatorParametersForSelectedTemplate = new Button {Text = "Change EMA indicator parameters for Selected Template"};
changeEmaIndicatorParametersForSelectedTemplate.Click += _ =>
{
if (string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem))
{
Print("No template is selected");
return;
}
var template = ChartTemplates.Get(templatesComboBox.SelectedItem);
var emaType = AlgoRegistry.Get("Exponential Moving Average", AlgoKind.StandardIndicator) as IndicatorType;
if (template.Indicators.FirstOrDefault(i => i.Type == emaType) is not {} templateIndicator)
{
Print($"EMA indicator not found in template '{template.Name}'");
return;
}
Print($"Changing Indicator {emaType.Name} Period to 200");
templateIndicator.Parameters["Periods"].Value = 200;
};
var setAllColorSettingsToRedForSelectedTemplate = new Button {Text = "Set All Color Setting to Red for Selected Template"};
setAllColorSettingsToRedForSelectedTemplate.Click += _ =>
{
if (string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem))
{
Print("No template is selected");
return;
}
var template = 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;
};
var enableAllDisplayOptionsForSelectedTemplate = new Button {Text = "Enable all display options for Selected Template"};
enableAllDisplayOptionsForSelectedTemplate.Click += _ =>
{
if (string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem))
{
Print("No template is selected");
return;
}
var template = 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;
};
var disableAllDisplayOptionsForSelectedTemplate = new Button {Text = "Disable all display options for Selected Template"};
disableAllDisplayOptionsForSelectedTemplate.Click += _ =>
{
if (string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem))
{
Print("No template is selected");
return;
}
var template = 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;
};
var changeChartTypeForSelectedTemplate = new Button {Text = "Change Chart Type for Selected Template"};
changeChartTypeForSelectedTemplate.Click += _ =>
{
if (string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem))
{
Print("No template is selected");
return;
}
var template = ChartTemplates.Get(templatesComboBox.SelectedItem);
template.DisplaySettings.ChartType = template.DisplaySettings.ChartType switch
{
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}'");
};
var changeZoomLevelForSelectedTemplate = new Button {Text = "Change Zoom Level for Selected Template"};
changeZoomLevelForSelectedTemplate.Click += _ =>
{
if (string.IsNullOrWhiteSpace(templatesComboBox.SelectedItem))
{
Print("No template is selected");
return;
}
var template = ChartTemplates.Get(templatesComboBox.SelectedItem);
template.DisplaySettings.ZoomLevel = template.DisplaySettings.ZoomLevel switch
{
5 => 400,
400 => 5,
_ => 5
};
Print($"Changed template '{template.Name}' zoom level to '{template.DisplaySettings.ZoomLevel}'");
};
var panel = new StackPanel {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);
}
}
}
import clr
clr.AddReference("cAlgo.API")
# Import cAlgo API types
from cAlgo.API import *
# Import trading wrapper functions
from robot_wrapper import *
class Test():
def on_chart_template_added(self, args):
self.templatesComboBox.AddItem(args.ChartTemplate.Name)
print(f"New Template added: {args.ChartTemplate.Name}")
def on_chart_template_removed(self, args):
self.templatesComboBox.RemoveItem(args.ChartTemplate.Name)
print(f"Template Removed: {args.ChartTemplate.Name}")
def on_show_template_info_button_clicked(self, args):
if self.templatesComboBox.SelectedItem is None:
print("No template is selected")
return
template = api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)
print(f"Name: {template.Name} | Bots #: {template.Robots.Count} | Indicators #: {template.Indicators.Count}")
def on_remove_selected_template_indicator_clicked(self, args):
if self.templatesComboBox.SelectedItem is None:
print("No template is selected")
return
template = api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)
if template.Indicators.Count == 0:
return
print(f"Remove Result: {template.Indicators.Remove(next(i for i in template.Indicators))}")
def on_remove_selected_template_bot_clicked(self, args):
if self.templatesComboBox.SelectedItem is None:
print("No template is selected")
return
template = api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)
if template.Robots.Count == 0:
return
print(f"Remove Result: {template.Robots.Remove(next(r for r in template.Robots))}")
def on_add_indicator_with_default_parameters_to_selected_template_clicked(self, args):
if self.templatesComboBox.SelectedItem is None:
print("No template is selected")
return
template = api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)
if self.indicatorsCombobox.SelectedItem is None:
print("No indicator is selected")
return
print(f"Adding indicator {self.indicatorsCombobox.SelectedItem}")
template.Indicators.Add(self.indicatorsCombobox.SelectedItem)
def on_add_robot_with_default_parameters_to_selected_template_clicked(self, args):
if self.templatesComboBox.SelectedItem is None:
print("No template is selected")
return
template = api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)
if self.robotsCombobox.SelectedItem is None:
print("No robot is selected")
return
print(f"Adding robot {self.robotsCombobox.SelectedItem}")
template.Robots.Add(self.robotsCombobox.SelectedItem)
def on_add_ema_indicator_with_different_parameters_to_selected_template_clicked(self, args):
if self.templatesComboBox.SelectedItem is None:
print("No template is selected")
return
template = 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)
def on_change_ema_indicator_parameters_for_selected_template_clicked(self, args):
if self.templatesComboBox.SelectedItem is None:
print("No template is selected")
return
template = api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)
emaType = IndicatorType(api.AlgoRegistry.Get("Exponential Moving Average", AlgoKind.StandardIndicator))
templateIndicator = next((x for x in template.Indicators if x.Type == emaType), None)
if templateIndicator is None:
print(f"EMA indicator not found in template '{template.Name}'")
return
print(f"Changing Indicator {emaType.Name} Period to 200")
templateIndicator.Parameters["Periods"].Value = 200
def on_set_all_color_settings_to_red_for_selected_template_clicked(self, args):
if self.templatesComboBox.SelectedItem is None:
print("No template is selected")
return
template = api.ChartTemplates.Get(self.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
def on_enable_all_display_options_for_selected_template_clicked(self, args):
if self.templatesComboBox.SelectedItem is None:
print("No template is selected")
return
template = api.ChartTemplates.Get(self.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
def on_disable_all_display_options_for_selected_template_clicked(self, args):
if self.templatesComboBox.SelectedItem is None:
print("No template is selected")
return
template = api.ChartTemplates.Get(self.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
def on_change_chart_type_for_selected_template_clicked(self, args):
if self.templatesComboBox.SelectedItem is None:
print("No template is selected")
return
template = api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)
match template.DisplaySettings.ChartType:
case ChartType.Area:
template.DisplaySettings.ChartType = ChartType.Bars
case ChartType.Bars:
template.DisplaySettings.ChartType = ChartType.Candlesticks
case ChartType.Candlesticks:
template.DisplaySettings.ChartType = ChartType.Dots
case ChartType.Dots:
template.DisplaySettings.ChartType = ChartType.Hlc
case ChartType.Hlc:
template.DisplaySettings.ChartType = ChartType.Line
case _:
template.DisplaySettings.ChartType = ChartType.Area
print(f"Changed template '{template.Name}' chart type to '{template.DisplaySettings.ChartType}'")
def on_change_zoom_level_for_selected_template_clicked(self, args):
if self.templatesComboBox.SelectedItem is None:
print("No template is selected")
return
template = api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)
match template.DisplaySettings.ZoomLevel:
case 5:
template.DisplaySettings.ZoomLevel = 400
case _:
template.DisplaySettings.ZoomLevel = 5
print(f"Changed template '{template.Name}' zoom level to '{template.DisplaySettings.ZoomLevel}'")
def on_change_default_template_to_selected_button_clicked(self, args):
api.ChartTemplates.DefaultTemplate = api.ChartTemplates.Get(self.templatesComboBox.SelectedItem)
def on_start(self):
self.templatesComboBox = ComboBox()
for template in api.ChartTemplates:
self.templatesComboBox.AddItem(template.Name)
api.ChartTemplates.Added += self.on_chart_template_added
api.ChartTemplates.Removed += self.on_chart_template_removed
showTemplateInfoButton = Button()
showTemplateInfoButton.Text = "Show Template Info"
showTemplateInfoButton.Click += self.on_show_template_info_button_clicked
showDefaultTemplateInfoButton = Button()
showDefaultTemplateInfoButton.Text = "Show Default Template Info"
showDefaultTemplateInfoButton.Click += lambda args: 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_clicked
checkSelectedTemplateExistsButton = 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_clicked
removeSelectedTemplateBot = Button()
removeSelectedTemplateBot.Text = "Remove Selected Template Bot"
removeSelectedTemplateBot.Click += self.on_remove_selected_template_bot_clicked
self.indicatorsCombobox = ComboBox()
for indicatorName in sorted([i.Name for i in api.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_clicked
self.robotsCombobox = ComboBox()
for robotName in sorted([i.Name for i in api.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_clicked
addEmaIndicatorWithDifferentParametersToSelectedTemplate = 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_clicked
changeEmaIndicatorParametersForSelectedTemplate = Button()
changeEmaIndicatorParametersForSelectedTemplate.Text = "Change EMA indicator parameters for Selected Template"
changeEmaIndicatorParametersForSelectedTemplate.Click += self.on_change_ema_indicator_parameters_for_selected_template_clicked
setAllColorSettingsToRedForSelectedTemplate = 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_clicked
enableAllDisplayOptionsForSelectedTemplate = Button()
enableAllDisplayOptionsForSelectedTemplate.Text = "Enable all display options for Selected Template"
enableAllDisplayOptionsForSelectedTemplate.Click += self.on_enable_all_display_options_for_selected_template_clicked
disableAllDisplayOptionsForSelectedTemplate = Button()
disableAllDisplayOptionsForSelectedTemplate.Text = "Disable all display options for Selected Template"
disableAllDisplayOptionsForSelectedTemplate.Click += self.on_disable_all_display_options_for_selected_template_clicked
changeChartTypeForSelectedTemplate = Button()
changeChartTypeForSelectedTemplate.Text = "Change Chart Type for Selected Template"
changeChartTypeForSelectedTemplate.Click += self.on_change_chart_type_for_selected_template_clicked
changeZoomLevelForSelectedTemplate = Button()
changeZoomLevelForSelectedTemplate.Text = "Change Zoom Level for Selected Template"
changeZoomLevelForSelectedTemplate.Click += self.on_change_zoom_level_for_selected_template_clicked
panel = StackPanel()
panel.Orientation = Orientation.Vertical
panel.HorizontalAlignment = HorizontalAlignment.Center
panel.VerticalAlignment = VerticalAlignment.Center
panel.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)
{
"AccessRights": "None",
"AddIndicators": true
}
Methods
| Name | Description |
|---|---|
ContainsDesktopCLICloudbool | Checks if a chart template with passed name exists or not. |
Create 2 overloadsDesktopCLICloudChartTemplate | Creates a new chart template based on a chart. |
DuplicateDesktopCLICloudChartTemplate | Duplicates or creates a copy of an existing chart template. |
GetDesktopCLICloudChartTemplate | Returns a chart template by name if exists otherwise null. |
RemoveDesktopCLICloudbool | Removes an existing chart template. |
Properties
| Name | Description |
|---|---|
DefaultTemplateDesktopCLICloudChartTemplate | Gets or sets default chart template. |