In this video tutorial you’ll learn how to create a fully functional RS Line indicator for TradingView in Pine Script.
RS Line features:
■ Choose the index (S&P 500 default)
■ Optional line color based on direction
■ Adjust line width and vertical offset
■ New high indicator
The video was put together rather quickly, so apologies up front on a few rather clunky transitions. Hopefully the content makes up for the lack of polish. Time for an equipment upgrade 🙂
RS Line Indicator Code
There is one step that was missed in the video as it relates to creating a new indicator. After you click on Pine Editor on the bottom of TradingView, follow these steps:
■ Tap on the Open menu in the upper right.
■ Choose New Blank Indicator.
At this point you can copy and paste the code below.
Version 1 - Basic RS Line indicator in a separate pane.
//@version=4 study(title = "RS Line", overlay = false) //--------------------------------------------------------- // Calls to input() show in the Settings dialog //--------------------------------------------------------- iIndex = input(title = "Index", type = input.symbol, defval = "SPX") //--------------------------------------------------------- // Calculate the ratio of closing price vs selected index //--------------------------------------------------------- spx = security(iIndex, "D", close) ratio = (close / spx) * 100 //--------------------------------------------------------- // Plot the RS Line //--------------------------------------------------------- plot(ratio, color = color.blue, linewidth = 1)
Version 2 - Complete RS Line indicator
//@version=4 study(title = "RS Line", overlay = true) //--------------------------------------------------------- // Calls to input() show in the Settings dialog //--------------------------------------------------------- iIndex = input(title="Index", type = input.symbol, defval="SPX") iChangeColor = input(title = "Color Based on Direction", type = input.bool, defval = false, inline = "I1") iColorUp = input(title = "Up", type = input.color, defval = color.green, inline = "I1") iColorDown = input(title = "Down", type = input.color, defval = color.red, inline = "I1") iWidth = input(title = "Line Width", type = input.integer, defval = 1, minval = 1, maxval = 5) iOffset = input(title = "Vertical offset of RS Line", type = input.integer, defval = 25, minval = 1, maxval = 500, step = 1) iLookbackCount = input(title = "New high look-back count", defval = 50, minval = 10, maxval = 200) // Save the ratio of closing price vs index var previousRatio = 0.0 // Save each ratio so we can look for RS Line new high var arrayOfRatios = array.new_float(0) //--------------------------------------------------------- // Calculate the ratio of closing price vs selected index //--------------------------------------------------------- spx = security(iIndex, "D", close) ratio = (close / spx) * 100 //--------------------------------------------------------- // Determine the color to display //--------------------------------------------------------- lineColor = color.blue if (iChangeColor and ratio > previousRatio) lineColor := iColorUp else if (iChangeColor and ratio <= previousRatio) lineColor := iColorDown //lineColor = iChangeColor ? (ratio > previousRatio ? iColorUp : iColorDown) : color.blue //--------------------------------------------------------- // Plot the RS Line and save the current ratio //--------------------------------------------------------- plot(timeframe.isdwm ? ratio * iOffset : na, color = lineColor, linewidth = iWidth) //--------------------------------------------------------- // Show new high dot if applicable //--------------------------------------------------------- if (barstate.islast) newHigh = true for i = 0 to iLookbackCount - 1 if (array.get(arrayOfRatios, i) > ratio) newHigh := false break if (newHigh) label.new(x = bar_index, y = (ratio * iOffset), color = color.new(color.green, transp = 50), style = label.style_circle, size = size.tiny) //--------------------------------------------------------- // Save current ratio for comparison colored bars // Push ratio into front of array //--------------------------------------------------------- previousRatio := ratio array.unshift(arrayOfRatios, ratio)
TradingView is my preferred tool for charting and technical analysis.
If you haven’t tried TradingView, I highly recommend you check out the free trial!