트렌드 필터링 및 비정상적 종료를 통한 매끄러운 이동 평균 손절매 및 이익 실현 전략

SMA RSI TR MA TP SL
생성 날짜: 2024-06-03 16:54:04 마지막으로 수정됨: 2024-06-03 16:54:04
복사: 7 클릭수: 616
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

트렌드 필터링 및 비정상적 종료를 통한 매끄러운 이동 평균 손절매 및 이익 실현 전략

개요

이 전략은 평평한 이동 평균 (SMA), 상대적으로 강한 지수 (RSI), 실제 범위 (TR) 및 거래량 이동 평균 (Volume MA) 과 같은 지표를 사용하여 트렌드 필터, 거래량 및 변동률 조건과 결합하여 특정 조건이 충족될 때 거래합니다. 이 전략의 주요 아이디어는 가격이 SMA200보다 낮고 하향 추세, 낮은 거래량 및 낮은 변동률이있는 경우 구매하고 중지 손실과 중지 지점을 설정합니다.

전략 원칙

  1. SMA, RSI, 거래량 MA, TR MA와 같은 지표를 계산합니다.
  2. 현재 상승 또는 하락 추세인지 판단하기
  3. 현재 거래량과 변동성이 낮은지 판단하기
  4. 가격이 SMA200보다 낮고 낮은 거래량과 낮은 변동성 조건을 충족하면 구매합니다.
  5. 구매 가격의 95%로 정해진 스톱 로스는 구매 가격의 150%로 정해진 스톱 로스는 구매 가격의 150%입니다.
  6. RSI가 70을 넘어서거나 기본 중지 지점에 도달했을 때 거래에서 탈퇴하십시오.
  7. 동향이 바뀌고 가격이 SMA를 넘어서면 강제 평준화

우위 분석

  1. 이 전략은 여러 기술 지표를 결합하여 시장 상황을 더 포괄적으로 분석합니다.
  2. 트렌드 필터와 거래량, 변동성 조건으로 불리한 시장 환경에서 거래를 피할 수 있습니다.
  3. 명확한 스톱로스트 포지션을 설정하여 위험을 효과적으로 제어합니다.
  4. 비정상적 탈퇴 메커니즘은 특정 상황에서 추가 손실을 방지하기 위해 적시에 청산 할 수 있습니다.

위험 분석

  1. 이 정책은 여러 파라미터의 설정에 의존하며, 파라미터의 선택은 정책의 성능에 영향을 줄 수 있습니다.
  2. 어떤 경우에는, 가격이 구매 조건을 유발한 후 급격히 반전하여 손실을 초래할 수 있습니다.
  3. 이 전략은 중대한 사건의 영향을 받을 수 있는 기본적인 요소들을 고려하지 않았습니다.

최적화 방향

  1. 진입 및 출전 정확도를 높이기 위해 MACD, 브린 띠 등과 같은 더 많은 기술 지표를 도입하는 것을 고려할 수 있습니다.
  2. 이동식 상쇄 또는 동적 상쇄를 사용하는 것과 같이 상쇄 상쇄를 최적화할 수 있는 설정
  3. 다양한 시장 상황에 따라 전략 변수를 동적으로 조정할 수 있습니다.
  4. 포지션 관리, 자금 관리 등과 같은 위험 관리 모듈을 추가할 수 있습니다.

요약하다

이 전략은 트렌드 필터링과 거래량, 변동률 조건을 결합하여 여러 기술적 지표를 통합하여 특정 상황에서 거래한다. 동시에, 명확한 중단 중단 및 비정상적 퇴출 메커니즘을 설정하면 위험을 효과적으로 제어 할 수 있다. 그러나 이 전략에는 파라미터 선택, 시장 비정상적 인 요인 등이 전략의 성과에 영향을 미칠 수 있는 제한이 있습니다.

전략 소스 코드
/*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)