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=4​strategy("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 plFound​plot(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 plFound​plot(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 phFound​plot(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 phFound​plot(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 Conditions​​entry_long = if leadLine2<leadLine1hiddenBullCondelsebullCond​entry_price_long=valuewhen(entry_long,close,0)exit_long = crossover(osc,takeProfitRSILevel_long)// or bearCond​​///// SHORT ////​entry_short = if leadLine2>leadLine1hiddenBearCondelsebearCond​entry_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(2020, "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 : false​if 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).