OPEN-SOURCE SCRIPT
My script

//version=5
strategy("Backtest: Renko + Fractals Strategy | RVNUSDT", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === Inputs ===
brick_size = input.float(0.0003, title="Simulated Renko Brick Size", step=0.0001)
sl_bricks = input.float(1.5, title="Stop Loss (bricks)")
tp_bricks = input.float(2.0, title="Take Profit (bricks)")
leftBars = input.int(2, title="Fractal Left Bars")
rightBars = input.int(2, title="Fractal Right Bars")
// === Simulated Renko Price ===
var float renko_price = na
var int renko_dir = 0
renko_price := na(renko_price[1]) ? close : renko_price
up_move = close - renko_price >= brick_size
down_move = renko_price - close >= brick_size
if up_move
renko_price += brick_size
renko_dir := 1
else if down_move
renko_price -= brick_size
renko_dir := -1
// === Williams Fractals ===
bullFractal = low[rightBars] < low[rightBars + 1] and low[rightBars] < low[rightBars - 1] and low[rightBars] < low[rightBars - 2]
bearFractal = high[rightBars] > high[rightBars + 1] and high[rightBars] > high[rightBars - 1] and high[rightBars] > high[rightBars - 2]
// === Entry Conditions ===
longCondition = renko_dir == 1 and renko_dir[1] != 1 and bullFractal
shortCondition = renko_dir == -1 and renko_dir[1] != -1 and bearFractal
// === Risk Management ===
long_sl = close - sl_bricks * brick_size
long_tp = close + tp_bricks * brick_size
short_sl = close + sl_bricks * brick_size
short_tp = close - tp_bricks * brick_size
// === Execute Trades ===
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", from_entry="Long", stop=long_sl, limit=long_tp)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", from_entry="Short", stop=short_sl, limit=short_tp)
// === Plotting for Visuals ===
plotshape(longCondition, location=location.belowbar, color=color.lime, style=shape.labelup, text="Long")
plotshape(shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="Short")
strategy("Backtest: Renko + Fractals Strategy | RVNUSDT", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === Inputs ===
brick_size = input.float(0.0003, title="Simulated Renko Brick Size", step=0.0001)
sl_bricks = input.float(1.5, title="Stop Loss (bricks)")
tp_bricks = input.float(2.0, title="Take Profit (bricks)")
leftBars = input.int(2, title="Fractal Left Bars")
rightBars = input.int(2, title="Fractal Right Bars")
// === Simulated Renko Price ===
var float renko_price = na
var int renko_dir = 0
renko_price := na(renko_price[1]) ? close : renko_price
up_move = close - renko_price >= brick_size
down_move = renko_price - close >= brick_size
if up_move
renko_price += brick_size
renko_dir := 1
else if down_move
renko_price -= brick_size
renko_dir := -1
// === Williams Fractals ===
bullFractal = low[rightBars] < low[rightBars + 1] and low[rightBars] < low[rightBars - 1] and low[rightBars] < low[rightBars - 2]
bearFractal = high[rightBars] > high[rightBars + 1] and high[rightBars] > high[rightBars - 1] and high[rightBars] > high[rightBars - 2]
// === Entry Conditions ===
longCondition = renko_dir == 1 and renko_dir[1] != 1 and bullFractal
shortCondition = renko_dir == -1 and renko_dir[1] != -1 and bearFractal
// === Risk Management ===
long_sl = close - sl_bricks * brick_size
long_tp = close + tp_bricks * brick_size
short_sl = close + sl_bricks * brick_size
short_tp = close - tp_bricks * brick_size
// === Execute Trades ===
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", from_entry="Long", stop=long_sl, limit=long_tp)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", from_entry="Short", stop=short_sl, limit=short_tp)
// === Plotting for Visuals ===
plotshape(longCondition, location=location.belowbar, color=color.lime, style=shape.labelup, text="Long")
plotshape(shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="Short")
Open-source script
In true TradingView spirit, the creator of this script has made it open-source, so that traders can review and verify its functionality. Kudos to the author! While you can use it for free, remember that republishing the code is subject to our House Rules.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.
Open-source script
In true TradingView spirit, the creator of this script has made it open-source, so that traders can review and verify its functionality. Kudos to the author! While you can use it for free, remember that republishing the code is subject to our House Rules.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.