# HaasScript: Basic Plotting

In this article, we are going to take a first look at basic plotting in HaasScript. If you are just getting started with programming or HaasScript in general, this article is targeted at you. On the other hand, if you are a veteran in the area or at least somewhat familiar with programming, then a step by step overview of how to use a `plot()`function might put you to sleep. Note: This article assumes the reader is at least familiar with accessing HaasScript via the Haas Online Trade Server. If you do not know how to do this, please take a look at the first HaasScript tutorial.

## Scope

Plotting forms an integral part of any strategy. Although it is not absolutely required for automated trading, plotting does allow us to get a quick feel for how a strategy is performing without the need to scan through detailed logs. Furthermore, if you only want to create indicators for discretionary trading, then plotting is one of the most important aspects of your code. In this article, we will take a look at a the `plot()`function, feed it some dummy data and play around with the arguments one by one. By the end of the tutorial you should have some familiarity with:
• Plotting horizontal lines
• Plotting series data
• Plotting to the main chart or subplots
• Changing colors

## Plot()

The `plot()`function will likely be one of the most common functions that you ever use. You can provide either a single value to create horizontal line or provide a series of data (such as `close` prices) for some squiggly lines. Here is a link to the official documentation. Documentation: https://help.haasonline.com/api/haasscript/commands/charting#plot So without further ado, let’s go through the plotting options (otherwise known as arguments).

### chartId

The first parameter is `chartId`. This argument tells HaasScript which chart to plot the line on. Some indicators like an RSI appear as subplots below the candlestick chart whilst other indicators such as Moving Averages are plotted with candlesticks on the main plot. In the example below, we simply plot a single value around the current `BTC/USD`price (at the time of writing!). Copy the following line into a blank new script and then hit play to reproduce.
`Plot(0, 'Horizontal Line', 8300)`
As you can see, the `chartId`is`0`in this example. That means anytime you want plot a line on the candlestick chart, you need to use `chartId` of `0`. In programming zero is always the first number/value and so it makes sense that a `chartId` of zero would be the first chart available. Next, let’s target a sub-chart. We can do this by using `1` instead of `0`. If a chart with the id `1` does not exist, then it will create a new sub-chart with that ID below the candlestick chart like so: To demonstrate the “targeting” aspect, we can add a second line using the same `chartId`like so:
```Plot(1, 'Horizontal Line', 8300)
Plot(1, 'Another Line', 8500)``` Finally, let’s change the `chartId`of the second line to `2`to see an example of creating multiple sub-charts. ### lineName

Next up is an argument we are already using, it is line name! This is fairly self-explanatory as it will give your line a title. You can see this title when you hover over the chart. The only thing you need to remember is that the title must be a string (and therefore placed inside quote marks like this”).

### value

Now we move onto the final mandatory argument. `value`is the price level we want to the plot. In the examples above, we have shown how to plot a single value as a horizontal line. So in this example, let’s take a look at plotting a series of values that move around.
```C = ClosePrices()
Plot(1, 'Horizontal Line', C)``` ### Optional Arguments

Optional arguments by definition do not need to be provided to get things working. However, they often provide useful features and extended functionality. We can define colors, styles and a whole host of other things. In fact, there are so many options, that they have their own section in the documentation: https://help.haasonline.com/api/haasscript/commands/charting#lineoptions Let’s take a look at how to specify some of the options:

#### Passing Options

A color can be specified directly in the `plot()` function as the 4th argument you pass like so:
`Plot(1, 'Horizontal Line', 9300, Red)`
There are a number of colors to choose from such as `Red`,`Cyan`,`DarkGreen`etc. However, If you need to change any other option, you will first need to create a `LineOptions`object. Doing this is simple and will allow you to specify other things like line width, line style and so on.
```opt = LineOptions(DarkGreen,Smooth,Dashed,3)
Plot(1, 'Close Prices', C, opt)```
As you can see in the example above, we create a `LineOptions()`object on the first line. In it we specify that we want a dark green color, a smooth but dashed line and that the line should have a width of 3. We then pass the object (which is saved as `opt`) to the `plot()`function. Adding both the examples together, we will be left with code that looks like this:
```C = ClosePrices()

opt = LineOptions(DarkGreen,Smooth,Dashed,3)
Plot(1, 'Close Prices', C, opt)

Plot(1, 'Horizontal Line', 9300, Red)```
And a chart which looks like this: Take a look at all the options available and have a play around with each to find the line-styling that you like.

## Find This Post Useful?

If this post saved you time and effort, please consider support the site! There are many ways to support us and some won’t even cost you a penny.