Pine Script Video Lessons
Here’s a list of my YouTube Pine Script video lessons and the source code for each of them!
Lesson 1: Hello World!
//@version=4 study("Lesson 1") plot(close)
Lesson 2: Drawing Data to the Chart
//@version=4 study("Lesson 2", overlay=true) lookback = input(title="Lookback Period", type=input.integer, defval=50, minval=1) highestHigh = highest(high, lookback) lowestLow = lowest(low, lookback) plot(highestHigh, color=color.red, transp=0, linewidth=2) plot(lowestLow, color=color.blue, transp=0, linewidth=2)
Lesson 3: Getting Basic User Input
//@version=4 study("Lesson 3") booleanInput = input(title="Boolean", type=input.bool, defval=true) integerInput = input(title="Integer", type=input.integer, defval=2) floatInput = input(title="Float", type=input.float, defval=1.5) stringInput = input(title="String", type=input.string, defval="Some text") plot(booleanInput ? 1 : 0, color=color.red) plot(integerInput, color=color.blue) plot(floatInput, color=color.purple) // Draw label if(barstate.islast) labelExample = label.new(bar_index, na, stringInput, color=color.green, textcolor=color.white, style=label.style_labeldown, yloc=yloc.abovebar)
Lesson 4: Generating RSI Signals
//@version=4 study("Lesson 4", overlay=true) // Get user input rsiSource = input(title="RSI Source", type=input.source, defval=close) rsiLength = input(title="RSI Length", type=input.integer, defval=14) rsiOverbought = input(title="RSI Overbought Level", type=input.integer, defval=80) rsiOversold = input(title="RSI Oversold Level", type=input.integer, defval=20) // Get RSI Value rsiValue = rsi(rsiSource, rsiLength) isRsiOB = rsiValue >= rsiOverbought isRsiOS = rsiValue <= rsiOversold // Plot signals to chart plotshape(isRsiOB, title="Overbought", location=location.abovebar, color=color.red, transp=0, style=shape.triangledown, text="Sell") plotshape(isRsiOS, title="Oversold", location=location.belowbar, color=color.green, transp=0, style=shape.triangleup, text="Buy")
Lesson 5: TradingView Script Alerts
//@version=4 study("Lesson 5", overlay=true) // Get user input rsiSource = input(title="RSI Source", type=input.source, defval=close) rsiLength = input(title="RSI Length", type=input.integer, defval=14) rsiOverbought = input(title="RSI Overbought Level", type=input.integer, defval=80) rsiOversold = input(title="RSI Oversold Level", type=input.integer, defval=20) // Get RSI Value rsiValue = rsi(rsiSource, rsiLength) isRsiOB = rsiValue >= rsiOverbought isRsiOS = rsiValue <= rsiOversold // Plot signals to chart plotshape(isRsiOB, title="Overbought", location=location.abovebar, color=color.red, transp=0, style=shape.triangledown, text="Sell") plotshape(isRsiOS, title="Oversold", location=location.belowbar, color=color.green, transp=0, style=shape.triangleup, text="Buy") // Send out an alert if this candle meets our conditions alertcondition(isRsiOB or isRsiOS, title="RSI Signal!", message="RSI Signal Detected for {{ticker}}")
Lesson 6: Detecting Engulfing Candles
//@version=4 study("Lesson 6", overlay=true) // Get user input rsiSource = input(title="RSI Source", type=input.source, defval=close) rsiLength = input(title="RSI Length", type=input.integer, defval=14) rsiOverbought = input(title="RSI Overbought Level", type=input.integer, defval=80) rsiOversold = input(title="RSI Oversold Level", type=input.integer, defval=20) // Get RSI Value rsiValue = rsi(rsiSource, rsiLength) isRsiOB = rsiValue >= rsiOverbought isRsiOS = rsiValue <= rsiOversold // Identify engulfing candles bullishEC = close >= open[1] and close[1] < open[1] bearishEC = close <= open[1] and close[1] > open[1] tradeSignal = ((isRsiOS or isRsiOS[1]) and bullishEC) or ((isRsiOB or isRsiOB[1]) and bearishEC) // Plot signals to chart plotshape(tradeSignal and bearishEC, title="Overbought", location=location.abovebar, color=color.red, transp=0, style=shape.triangledown, text="Sell") plotshape(tradeSignal and bullishEC, title="Oversold", location=location.belowbar, color=color.green, transp=0, style=shape.triangleup, text="Buy") // Send out an alert if this candle meets our conditions alertcondition(tradeSignal, title="RSI Signal!", message="RSI Signal Detected for {{ticker}}")