이 전략은 트렌드 필터, 볼륨 및 변동성 조건과 결합하여 트렌드 이동 평균 (SMA), 상대적 강도 지수 (RSI), 참 범위 (TR), 볼륨 이동 평균 (Volume MA) 과 같은 지표를 사용하여 특정 기준이 충족되면 거래를 실행합니다. 이 전략의 주된 아이디어는 가격이 SMA200 이하이고 트렌드가 하락하고 볼륨과 변동성이 낮을 때 긴 포지션을 입력하는 것입니다. 스톱 로스와 취득 수준은 입시에 설정됩니다. 또한 전략에는 예외 출구 메커니즘이 포함되어 있으며, RSI가 70을 초과하거나 미리 설정된 스톱 로스와 취득 수준이 달성되면 포지션을 닫습니다.
이 전략은 트렌드 필터, 볼륨 및 변동성 조건과 함께 여러 기술적 지표를 결합하여 특정 상황에서 거래를 실행합니다. 명확한 스톱 로스 및 수익 수치를 설정하고 예외 출구 메커니즘을 구현함으로써 전략은 위험을 효과적으로 관리합니다. 그러나 매개 변수 선택 및 시장 이상과 같은 요소가 성능에 영향을 줄 수 있으므로 전략에는 특정 한계가 있습니다. 더 많은 지표를 통합하고 매개 변수 설정을 최적화하고 위험 관리 구성 요소를 추가하여 향후 개선이 가능합니다.
/*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)