Mouse clicks can be used to influence programming code execution. But how can we manipulate the chart window with mouse clicks?
In this article:
Mouse clicks and the Command Line in PowerLanguage
Mouse clicks are processable when ProcessMouseEvents
is set to true (MultiCharts Wiki, 2012). Each click on a data series’ chart area then triggers a script calculation so that the mouse click keywords reflect the current click info. These include MouseClickCtrlPressed
and MouseClickShiftPressed
for indicating whether the Control or Shift keys were pressed during the click.
Changing a MultiCharts price chart is possible with the Command Line. This toolbar manipulates the active chart through textual commands (MultiCharts Wiki, 2014). It looks like:

Instead of manually typing in these commands, they can also be executed programmatically with the CommandLine()
keyword (MultiCharts Wiki, 2013). Keep in mind though that each time when CommandLine()
is executed, its Command Line command is also carried out. This can lead to a continuously changing price chart until the script is manually aborted.
Reloading price data with mouse clicks and the Command Line
One Command Line feature is reloading price data on the current chart. This can be triggered by mouse clicks as follows:
[ProcessMouseEvents = true];
if (MouseClickShiftPressed) then
CommandLine(".rld int=1 day")
else if (MouseClickCtrlPressed) then
CommandLine(".rld int=2 weeks, res=30 min");
First we set ProcessMouseEvents
to true. Then an if-else statement checks whether the Control (MouseClickCtrlPressed
) or Shift (MouseClickShiftPressed
) keyboard keys were pressed down during the click.
When Control is used with a click, CommandLine()
is executed with the .rld
command. This command reloads price data on the active chart and potentially on other charts with the same symbol (MultiCharts Wiki, 2014). It’s used here together with the int
parameter, which specifies the time period that needs to be reloaded. Given the int
value of 1 day
, one day of price data is reloaded for each of the chart’s data series with a mouse click plus Shift.
CommandLine()
is also executed when Shift was held down during the click. The command then also reloads price data (.rld
), but now for two weeks back (int=2 weeks
). With the res=30 min
parameter this reload will only apply to 30 minute data series on the chart.
Adding indicators to the chart programmatically
The Command Line can also add indicators to the chart. If we start with a price chart like the following:

Executing the code (see below) leads to:

This is done with the following code:
[ProcessMouseEvents = true];
if (MouseClickShiftPressed and MouseClickCtrlPressed) then begin
CommandLine(".iind name=Volume");
CommandLine(".iind name=Mov Avg Exp 2 Lines");
end;
After mouse click processing is enabled by ProcessMouseEvents
, an if statement evaluates whether both Control and Shift were pressed down during the click. When they were, the code inside the if statement is executed.
That code consists out of two CommandLine()
statements that both use the .iind
command. This command adds the indicator specified by its name
parameter to the current chart (MultiCharts Wiki, 2014). The first .iind
command adds the ‘Volume’ indicator, while the second adds the ‘Mov Avg Exp 2 Lines’ indicator to the chart.
Summary
Once ProcessMouseEvents
is enabled, mouse clicks can be used to execute Command Line commands through the CommandLine()
keyword. Available commands include .rld
(reloads price data) and .iind
(adds an indicator to the chart).
References
MultiCharts Wiki (2012, February 24). ProcessMouseEvents. Retrieved on January 11, 2015, from http://www.multicharts.com/trading-software/index.php/ProcessMouseEvents
MultiCharts Wiki (2013, May 16). CommandLine. Retrieved on January 18, 2015, from http://www.multicharts.com/trading-software/index.php/CommandLine
MultiCharts Wiki (2014, August 18). MultiCharts Work Area: Understanding Command Line. Retrieved on January 18, 2015, from http://www.multicharts.com/trading-software/index.php/MultiCharts_Work_Area#Understanding_Command_Line
Visit programming tutorials for more helpful coding articles.