Diese Strategie nutzt Indikatoren wie den Smooth Moving Average (SMA), den Relative Strength Index (RSI), den True Range (TR) und den Volume Moving Average (Volume MA) in Kombination mit Trendfiltern, Volumen und Volatilitätsbedingungen, um Trades auszuführen, wenn bestimmte Kriterien erfüllt sind. Die Hauptidee hinter dieser Strategie besteht darin, eine Long-Position einzugeben, wenn der Preis unter dem SMA200 liegt, der Trend nach unten ist und sowohl das Volumen als auch die Volatilität niedrig sind. Stop-Loss- und Take-Profit-Level werden beim Eintritt festgelegt. Darüber hinaus beinhaltet die Strategie einen Ausnahme-Exit-Mechanismus, der die Position schließt, wenn der RSI 70 überschreitet oder wenn die vorgegebenen Stop-Loss- oder Take-Profit-Level erreicht werden.
Diese Strategie kombiniert mehrere technische Indikatoren mit Trendfiltern, Volumen und Volatilitätsbedingungen, um Trades in bestimmten Situationen auszuführen. Durch die Festlegung klarer Stop-Loss- und Take-Profit-Levels und die Implementierung eines Ausnahme-Exit-Mechanismus verwaltet die Strategie das Risiko effektiv. Die Strategie hat jedoch bestimmte Einschränkungen, da Faktoren wie Parameterwahl und Marktanomalien ihre Leistung beeinflussen können. Zukünftige Verbesserungen können durch die Einbeziehung mehrer Indikatoren, die Optimierung der Parameter-Einstellungen und das Hinzufügen von Risikomanagement-Komponenten erzielt werden.
/*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)