To make our community more profitable we decided to start a series in which we will review open-source TradingView strategies. The aim of the review is to select a strategy (or a number of strategies) from TradingView and run a reality check on it, optimise them and convert into alerts, so you can set it up as a bot on Wunderbit Trading platform.
Open-strategy source
Strategy adjustment for particular exchange, pair and timeframe
Backtest
This week we found a nice profitable scalping strategy for the 6 min time frame. The original idea was taken from: mohanee. This strategy is using the RSI divergence as an entry point and is looking for the exit on the opposite side of the RSI region. This scalping strategy can be easily automated on Wunderbit Trading using Tradingview Strategy alerts (How to create tradingview bot)
IMPORTANT
This strategy does not have Stop Loss or Trailing stop levels.
This strategy is looking for the counter-trend entry
We added inputs for the period selection, so you could see how the strategy is performing on a monthly basis.
Applicable to FTX: LTC-PERP 6 min
Input | Value |
Period | 15 |
RSI Period | 7 |
RSI Source | 15 |
Pivot Lookback Right | 3 |
Pivot Lookback Left | 4 |
Long Take Profit at RSI level | 77 |
Short Take Profit at RSI level | 19 |
Max of Lookback Range | 19 |
Max of Lookback Range | 6 |
Plot Bullish | True (active) |
Plot Hidden Bullish | True (active) |
Plot Bearish | True (active) |
Plot Hidden Bullish | False (Not active) |
You can copy this code and paste it into your TradingView.
//Updated by: Wunderbit Trading//Original Idea by: mohanee//@version=4strategy("RSI Divergence", shorttitle = "RSI-DIV", overlay=false, pyramiding=2, commission_type=strategy.commission.percent, commission_value=0.07, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD )ribbon_period = input(15, "Period", step=1)leadLine1 = ema(close, ribbon_period)leadLine2 = sma(close, ribbon_period)// p1 = plot(leadLine1, color= #53b987, title="EMA", transp = 50, linewidth = 1)// p2 = plot(leadLine2, color= #eb4d5c, title="SMA", transp = 50, linewidth = 1)// fill(p1, p2, transp = 60, color = leadLine1 > leadLine2 ? #53b987 : #eb4d5c)len = input(title="RSI Period", minval=1, defval=7)src = input(title="RSI Source", defval=close)lbR = input(title="Pivot Lookback Right", defval=3)lbL = input(title="Pivot Lookback Left", defval=4)takeProfitRSILevel_long = input(title="Long Take Profit at RSI Level", minval=60, defval=77)takeProfitRSILevel_short=input(title="Short Take Profit at RSI Level", maxval=30, defval=19)rangeUpper = input(title="Max of Lookback Range", defval=19)rangeLower = input(title="Min of Lookback Range", defval=6)plotBull = input(title="Plot Bullish", defval=true)plotHiddenBull = input(title="Plot Hidden Bullish", defval=true)plotBear = input(title="Plot Bearish", defval=true)plotHiddenBear = input(title="Plot Hidden Bearish", defval=false)bearColor = color.purplebullColor = color.greenhiddenBullColor = color.new(color.green, 80)hiddenBearColor = color.new(color.red, 80)textColor = color.whitenoneColor = color.new(color.white, 100)osc = rsi(src, len)plot(osc, title="RSI", linewidth=2, color=#8D1699)hline(50, title="Middle Line", linestyle=hline.style_dotted)obLevel = hline(70, title="Overbought", linestyle=hline.style_dotted)osLevel = hline(30, title="Oversold", linestyle=hline.style_dotted)fill(obLevel, osLevel, title="Background", color=#9915FF, transp=90)plFound = na(pivotlow(osc, lbL, lbR)) ? false : truephFound = na(pivothigh(osc, lbL, lbR)) ? false : true_inRange(cond) =>bars = barssince(cond == true)rangeLower <= bars and bars <= rangeUpper//------------------------------------------------------------------------------// Regular Bullish// Osc: Higher LowoscHL = osc[lbR] > valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])// Price: Lower LowpriceLL = low[lbR] < valuewhen(plFound, low[lbR], 1)bullCond = plotBull and priceLL and oscHL and plFoundplot(plFound ? osc[lbR] : na,offset=-lbR,title="Regular Bullish",linewidth=2,color=(bullCond ? bullColor : noneColor),transp=0)plotshape(bullCond ? osc[lbR] : na,offset=-lbR,title="Regular Bullish Label",text=" Bull ",style=shape.labelup,location=location.absolute,color=bullColor,textcolor=textColor,transp=0)//------------------------------------------------------------------------------// Hidden Bullish// Osc: Lower LowoscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])// Price: Higher LowpriceHL = low[lbR] > valuewhen(plFound, low[lbR], 1)hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFoundplot(plFound ? osc[lbR] : na,offset=-lbR,title="Hidden Bullish",linewidth=2,color=(hiddenBullCond ? hiddenBullColor : noneColor),transp=0)plotshape(hiddenBullCond ? osc[lbR] : na,offset=-lbR,title="Hidden Bullish Label",text=" H Bull ",style=shape.labelup,location=location.absolute,color=bullColor,textcolor=textColor,transp=0)//------------------------------------------------------------------------------// Regular Bearish// Osc: Lower HighoscLH = osc[lbR] < valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])// Price: Higher HighpriceHH = high[lbR] > valuewhen(phFound, high[lbR], 1)bearCond = plotBear and priceHH and oscLH and phFoundplot(phFound ? osc[lbR] : na,offset=-lbR,title="Regular Bearish",linewidth=2,color=(bearCond ? bearColor : noneColor),transp=0)plotshape(bearCond ? osc[lbR] : na,offset=-lbR,title="Regular Bearish Label",text=" Bear ",style=shape.labeldown,location=location.absolute,color=bearColor,textcolor=textColor,transp=0)//------------------------------------------------------------------------------// Hidden Bearish// Osc: Higher HighoscHH = osc[lbR] > valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])// Price: Lower HighpriceLH = high[lbR] < valuewhen(phFound, high[lbR], 1)hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFoundplot(phFound ? osc[lbR] : na,offset=-lbR,title="Hidden Bearish",linewidth=2,color=(hiddenBearCond ? hiddenBearColor : noneColor),transp=0)plotshape(hiddenBearCond ? osc[lbR] : na,offset=-lbR,title="Hidden Bearish Label",text=" H Bear ",style=shape.labeldown,location=location.absolute,color=bearColor,textcolor=textColor,transp=0)/// Strategy Conditionsentry_long = if leadLine2<leadLine1hiddenBullCondelsebullCondentry_price_long=valuewhen(entry_long,close,0)exit_long = crossover(osc,takeProfitRSILevel_long)// or bearCond///// SHORT ////entry_short = if leadLine2>leadLine1hiddenBearCondelsebearCondentry_price_short=valuewhen(entry_short,close,0)exit_short = crossunder(osc,takeProfitRSILevel_short)// or bullCond///// BACKTEST PERIOD ///////testStartYear = input(2019, "Backtest Start Year")testStartMonth = input(1, "Backtest Start Month")testStartDay = input(1, "Backtest Start Day")testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)testStopYear = input(9999, "Backtest Stop Year")testStopMonth = input(12, "Backtest Stop Month")testStopDay = input(31, "Backtest Stop Day")testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)testPeriod() =>time >= testPeriodStart and time <= testPeriodStop ? true : falseif testPeriod()if strategy.position_size == 0 or strategy.position_size > 0strategy.entry(id="long", long=true, when = entry_long, comment="Enter Long Comment")strategy.close(id="long", when=exit_long, comment = "Exit Long Comment")if strategy.position_size == 0 or strategy.position_size < 0strategy.entry(id="short", long=false, when = entry_short, comment="Enter Short Comment")strategy.close(id="short", when=exit_short, comment = "Exit Short Comment")
Follow this guide to automate your TradingView STRATEGY alerts. (no need for study script).