Chiến lược này sử dụng các chỉ số như Smooth Moving Average (SMA), Relative Strength Index (RSI), True Range (TR), và Volume Moving Average (Volume MA) kết hợp với các bộ lọc xu hướng, khối lượng và điều kiện biến động để thực hiện giao dịch khi các tiêu chí cụ thể được đáp ứng. Ý tưởng chính đằng sau chiến lược này là vào một vị trí dài khi giá dưới SMA200, xu hướng giảm, và cả khối lượng và biến động đều thấp. Mức dừng lỗ và lấy lợi nhuận được thiết lập khi nhập. Ngoài ra, chiến lược kết hợp một cơ chế thoát ngoại lệ, đóng vị trí khi RSI vượt quá 70 hoặc khi mức dừng lỗ hoặc lấy lợi nhuận đã được đặt trước đạt được.
Chiến lược này kết hợp nhiều chỉ số kỹ thuật với bộ lọc xu hướng, khối lượng và điều kiện biến động để thực hiện giao dịch trong các tình huống cụ thể. Bằng cách thiết lập mức dừng lỗ rõ ràng và lấy lợi nhuận và thực hiện cơ chế thoát ngoại lệ, chiến lược quản lý rủi ro hiệu quả. Tuy nhiên, chiến lược có một số hạn chế nhất định, vì các yếu tố như lựa chọn tham số và bất thường thị trường có thể ảnh hưởng đến hiệu suất của nó. Những cải tiến trong tương lai có thể được thực hiện bằng cách kết hợp nhiều chỉ số hơn, tối ưu hóa cài đặt tham số và thêm các thành phần quản lý rủi ro.
/*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)