Golden Swing Strategy - Souradeep Dey
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © rajm14

//@version=5
strategy(title = "Golden Swing Strategy - Souradeep Dey", shorttitle = "GSS", overlay = true, process_orders_on_close = true, default_qty_type = strategy.cash, default_qty_value=100000, currency = currency.USD)

// Indicator - RSI - 20
rsiSrc = input(defval = close, title = "RSI Source")
rsiLen = input.int(defval = 20, title = "RSI Length", minval = 0, maxval = 200, step = 1)
rsi = ta.rsi(rsiSrc, rsiLen)
//plot(rsi)

// Indicator - Stochastic (55,34,21)
kLength = input.int(defval = 55, title="Stoch %K Length", minval=1)
kSmooth = input.int(defval = 34, title="Stoch %K Smoothing", minval=1)
dLength = input.int(defval = 21, title="Stoch %D Smoothing", minval=1)
kLine = ta.sma(ta.stoch(close, high, low, kLength), kSmooth)
dLine = ta.sma(kLine, dLength)
// plot(kLine, color=color.red)
// plot(dLine, color=color.green)

// Indicator - ATR(5)
atrLength = input(5, "ATR Length")
atr = ta.atr(5)
// plot(atr)

// Indicator - SuperTrend(10,2)
atrPeriod = input(10, "SuperTrend ATR Length")
stSrc = hl2
stfactor = input.float(2.0, "SuperTrend Multiplier", step = 0.1)
stAtr = ta.atr(atrPeriod)
[supertrend, direction] = ta.supertrend(stfactor, atrPeriod)
bodyMiddle = (open + close) / 2
upTrend = direction < 0 ? supertrend : na
downTrend = direction < 0? na : supertrend
// plot(bodyMiddle, display=display.none)
// plot(upTrend)
// plot(downTrend)


// Indicator - Bollinger Bands (20,2)
bblength = input.int(defval = 20, title = "BB Length")
bbsource = input(defval = close, title = "BB Source")
bbStdDev = input.float(defval = 2.0, title = "BB Std Dev", step = 0.1)
bbmultiplier = bbStdDev * ta.stdev(bbsource, bblength)
bbMband = ta.sma(bbsource, bblength)
bbUband = bbMband + bbmultiplier
bbLband = bbMband - bbmultiplier
// plot (bbUband, color = color.red, linewidth = 2)
// plot (bbMband, color = color.black, linewidth = 2)
// plot (bbLband, color = color.green, linewidth = 2)

// Trade Entry

LongEntry = rsi >= 50 and kLine > dLine and low < supertrend and direction < 0 and supertrend < bbMband
ShortEntry = rsi <= 50 and kLine < dLine and high > supertrend and direction > 0 and supertrend > bbMband
plotshape(LongEntry, style = shape.triangleup,  text = "Long", location = location.belowbar, size = size.large, color = color.green)
plotshape(ShortEntry, style = shape.triangledown,  text = "Short", location = location.abovebar, size = size.large, color = color.red)

//Trade execution
if LongEntry
    strategy.entry(id = "Buy", direction = strategy.long, limit = close * .5 * atr)

closelong = close >= strategy.position_avg_price * 2.2 * atr
stoplong = close <=  strategy.position_avg_price * 1.1 * atr

if closelong
    strategy.close(id = "Buy")
    
if stoplong
    strategy.close(id = "Buy")
    
if ShortEntry
    strategy.entry(id = "Sell", direction = strategy.long, limit = close * .5 * atr)

closeshort = close <= strategy.position_avg_price * 2.2 * atr
stopshort = close >=  strategy.position_avg_price * 1.1 * atr

if closeshort
    strategy.close(id = "Sell")
    
if stopshort
    strategy.close(id = "Sell")




































    

