Esta estrategia utiliza indicadores como el Smooth Moving Average (SMA), el Relative Strength Index (RSI), el True Range (TR) y el Volume Moving Average (Volume MA) en combinación con filtros de tendencia, volumen y condiciones de volatilidad para ejecutar operaciones cuando se cumplen criterios específicos. La idea principal detrás de esta estrategia es entrar en una posición larga cuando el precio está por debajo del SMA200, la tendencia es descendente y tanto el volumen como la volatilidad son bajos. Los niveles de stop loss y take profit se establecen al momento de la entrada. Además, la estrategia incorpora un mecanismo de salida excepcional, cerrando la posición cuando el RSI excede los 70 o cuando se alcanzan los niveles de stop loss o take profit preestablecidos.
Esta estrategia combina múltiples indicadores técnicos con filtros de tendencia, volumen y condiciones de volatilidad para ejecutar operaciones en situaciones específicas. Al establecer niveles de stop loss y take profit claros e implementar un mecanismo de salida excepcional, la estrategia gestiona eficazmente el riesgo. Sin embargo, la estrategia tiene ciertas limitaciones, ya que factores como la selección de parámetros y anomalías del mercado pueden afectar su rendimiento. Se pueden hacer mejoras futuras incorporando más indicadores, optimizando la configuración de parámetros y agregando componentes de gestión de riesgos.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Strategia Stop Loss & Take Profit z Filtrem Trendu i Wyjątkiem", shorttitle="Smooth MA SL & TP with Exception", overlay=true) // Parametry tp_multiplier = input.float(1.5, title="Mnożnik Take Profit") sl_percent = input.float(5, title="Procent Stop Loss") wait_bars = input.int(3, title="Liczba Oczekiwanych Świec") sma_period = input.int(200, title="Okres SMA") rsi_period = input.int(14, title="Okres RSI") vol_ma_period = input.int(20, title="Okres Średniej Wolumenu") tr_ma_period = input.int(20, title="Okres Średniej Rzeczywistego Zakresu") // Obliczenie Gładkiej Średniej Kroczącej sma = ta.sma(close, sma_period) // Obliczenie RSI rsi = ta.rsi(close, rsi_period) // Filtr Trendu uptrend = close > sma downtrend = close < sma // Warunek konsolidacji: Niski wolumen i niska zmienność niski_wolumen = volume < ta.sma(volume, vol_ma_period) niska_zmienosc = ta.tr(true) < ta.sma(ta.tr(true), tr_ma_period) // Warunek Wejścia (Long): Cena poniżej SMA 200 i filtr trendu w strefie czerwonej warunek_wejscia = close < sma and niski_wolumen and niska_zmienosc and not uptrend // Warunek Wyjścia ze strategii warunek_wyjscia = downtrend and close > sma and ta.crossover(close, sma) // Ustalanie Stop Loss i Take Profit var float stop_loss = na var float take_profit = na var int indeks_wejscia = na if (warunek_wejscia) stop_loss := close * (1 - sl_percent / 100) take_profit := close * (1 + tp_multiplier) indeks_wejscia := bar_index // Handel if (warunek_wejscia) strategy.entry("Long", strategy.long) // Warunek Wyjścia: RSI w strefie wykupienia lub Stop Loss/Take Profit if (strategy.opentrades != 0) if (rsi > 70) strategy.exit("Take Profit/Stop Loss", "Long", limit=take_profit) else if (bar_index - indeks_wejscia == wait_bars) strategy.exit("Take Profit/Stop Loss", "Long", stop=stop_loss, limit=take_profit) // Wyjątek: Warunek Wyjścia z Longów na podstawie zmiany trendu if (warunek_wyjscia) strategy.close("Long") // Rysowanie RSI rsi_plot = plot(rsi, title="RSI", color=color.blue) // Rysowanie Gładkiej Średniej Kroczącej sma_plot = plot(sma, color=color.gray, title="Smooth MA", linewidth=2) // Rysowanie Filtru Trendu fill(sma_plot, rsi_plot, color=downtrend ? color.new(color.red, 90) : na)