0bps

Strategy vault / Trend following

Multi Indicator Golden Swing Trading Strategy

This trading strategy combines multiple indicators including RSI, Stochastic, Bollinger Bands and SuperTrend to generate trading signals. Specifically, it considers RSI above 50 and Stochastic K value above D as…

Author
ChaoZhang
Complexity
Intermediate · 93 lines
Parameters
11
Backtest bar
45m · intraday
Tested on
BTC/USDT · futures

This trading strategy combines multiple indicators including RSI, Stochastic, Bollinger Bands and SuperTrend to generate trading signals.

Specifically, it considers RSI above 50 and Stochastic K value above D as bullish signals. Price below SuperTrend represents an uptrend, and SuperTrend below BB middle band forms the long signal.

Conversely, RSI below 50 and Stochastic K below D gives bearish signals. Price above SuperTrend shows a downtrend, and SuperTrend above BB middle band creates the short signal.

The multi-indicator combo serves as an effective filter to improve signal reliability. The strategy also sets stop loss and take profit conditions to control risk.

However, combining indicators also introduces lag, potentially missing optimal entries. Live tuning of parameters is still required, along with monitoring overall economic impacts. Comprehensive risk management is crucial for long-term steady profits.

Parameters

NameDefaultWhat it controls
v_input_1_close0RSI Source: close | high | low | open | hl2 | hlc3 | hlcc4 | ohlc4
v_input_int_120RSI Length
v_input_int_255Stoch %K Length
v_input_int_334Stoch %K Smoothing
v_input_int_421Stoch %D Smoothing
v_input_25ATR Length
v_input_310SuperTrend ATR Length
v_input_float_12SuperTrend Multiplier
v_input_int_520BB Length
v_input_4_close0BB Source: close | high | low | open | hl2 | hlc3 | hlcc4 | ohlc4
v_input_float_22BB Std Dev

Source Pine Script

/*backtest
start: 2023-01-01 00:00:00
end: 2023-03-10 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// 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")

Published by ChaoZhang on the FMZ strategy square · last modified 2023-09-11. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.

Build this with AgenKit

A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.

in Claude Code, Cursor, Codex & 4 more
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/Multi-Indicator-Golden-Swing-Trading-Strategy.md
  1. npx agenkit install engineering-kit in your project
  2. Paste the command into your agent and approve each phase
  3. Get tests, backtest, risk controls and a paper-trading switch

Understand it first

Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.

Related specs

esc

Try , , or .

↑↓ move↵ open