Esta estrategia de negociación combina múltiples indicadores, incluidos el RSI, el estocástico, las bandas de Bollinger y SuperTrend, para generar señales comerciales.
Específicamente, considera que el RSI por encima de 50 y el valor estocástico K por encima de D son señales alcistas.
Por el contrario, el RSI por debajo de 50 y el Stochastic K por debajo de D dan señales bajistas.
La combinación de múltiples indicadores sirve como un filtro eficaz para mejorar la fiabilidad de la señal.
Sin embargo, la combinación de indicadores también introduce un retraso, potencialmente faltando entradas óptimas.
/*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")