Cette stratégie de négociation combine plusieurs indicateurs, notamment le RSI, le stochastique, les bandes de Bollinger et la SuperTrend, pour générer des signaux de négociation.
Plus précisément, il considère le RSI supérieur à 50 et la valeur stochastique K supérieure à D comme des signaux haussiers.
À l'inverse, le RSI inférieur à 50 et le stochastique K inférieur à D donnent des signaux baissiers.
La combinaison de plusieurs indicateurs sert de filtre efficace pour améliorer la fiabilité du signal.
Cependant, la combinaison d'indicateurs entraîne également un retard, manquant potentiellement des entrées optimales.
/*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")