리소스 로딩... 로딩...

RSI 최적화 시스템으로 듀얼 타임프레임 슈퍼트렌드

저자:차오장, 날짜: 2024-11-25 17:27:21
태그:RSIATR

img

전반적인 설명

이 전략은 슈퍼트렌드 지표와 RSI를 기반으로 한 이중 타임프레임 거래 시스템이다. 120분 및 15분 시간 프레임의 기술 분석 지표를 결합하여 SuperTrend을 사용하여 중장기 트렌드 방향을 파악하고 수익을 취하기 위해 RSI를 활용합니다. 전략은 비율 할당을 통해 포지션 사이징을 구현하고 비율 기반의 수익을 취하는 조건을 포함합니다.

전략 원칙

핵심 논리는 몇 가지 핵심 요소에 기반합니다.

  1. 주요 트렌드 결정 도구로 120 분 시간 프레임 슈퍼 트렌드 지표를 사용합니다. ATR 기간은 14이고 인수는 3.42입니다.
  2. 슈퍼트렌드 라인 (SuperTrend line) 의 가격 크로스오버를 통해 거래 신호를 생성합니다. 긴 엔트리에 대한 상승 크로스 및 짧은 엔트리에 대한 하락 크로스
  3. 시장 과잉 구매/ 과잉 판매 조건에 대한 추가 도구로 기간 5과 함께 15분 시간 프레임 RSI 지표를 사용합니다
  4. RSI가 과잉 매수 구역 (95) 에 도달하면 긴 포지션을 닫고 과잉 매매 구역 (5) 에서 짧은 포지션을 닫습니다.
  5. 평균 진입 가격에 비해 계산된 30%의 수익률을 설정합니다.

전략적 장점

  1. 여러 시간 프레임 조합은 신호 신뢰성을 향상시키고 잘못된 신호를 줄입니다.
  2. 최적화된 슈퍼트렌드 매개 변수는 과도한 거래를 피하면서 트렌드 감수성을 균형 잡습니다.
  3. 엄격한 RSI 극단적 값 (5 및 95) 은 극한 조건에서만 포지션 폐쇄를 보장합니다.
  4. 포지션 크기는 자본의 고정 비율 (35%) 를 사용하여 수익 잠재력을 유지하면서 위험을 효과적으로 제어합니다.
  5. 자동으로 새로운 포지션을 열기 전에 리버스 포지션을 닫습니다. 동시에 긴 및 짧은 노출을 피합니다.

전략 위험

  1. 이중 시간 프레임 접근 방식은 다양한 시장에서 지연을 초래할 수 있으며, 마취 관리가 필요합니다.
  2. 엄격한 RSI 극단적 값은 손실 된 수익 기회로 이어질 수 있습니다.
  3. 30%의 영업이익 수준은 공격적이어서 변동적인 시장에서 조기 퇴출을 초래할 수 있습니다.
  4. 스톱 로스 조건이 없으면 갑작스러운 트렌드 역전 시 상당한 손실이 발생할 수 있습니다.
  5. 35% 포지션 사이징은 상대적으로 공격적이어서 극심한 변동성 중 높은 위험을 초래합니다.

최적화 방향

  1. ATR 기반의 후속 정지를 고려하여 동적 중지 손실 메커니즘을 추가하는 것이 좋습니다.
  2. 더 나은 적응성을 위해 RSI 과잉 구매/ 과잉 판매 기준을 10 및 90로 조정할 수 있습니다.
  3. 신호 확인을 위해 부피 지표가 추가 될 수 있습니다.
  4. ATR 또는 변동성 지표를 사용하여 시장 변동성에 기초한 동적 포지션 크기를 고려하십시오.
  5. 약한 트렌드를 필터링하기 위해 DMI 또는 ADX와 같은 트렌드 강도 필터를 추가하는 것을 제안합니다.

요약

이것은 명확한 논리를 가진 잘 구성된 트렌드-추천 전략이다. 위험 통제를 유지하면서 트렌드를 포착하기 위해 다양한 시간 프레임 기술 지표를 결합한다. 최적화 할 여지가 있지만 전체 디자인은 양적 거래 원칙에 부합한다. 거래자는 라이브 거래 전에 매개 변수를 백테스트하고 최적화하고 위험 용도에 따라 포지션 크기를 조정해야합니다.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © felipemiransan

//@version=5
strategy("Supertrend Strategy", overlay=true)

// Function for Supertrend
supertrend(_factor, _atrPeriod) =>
    [out, _] = ta.supertrend(_factor, _atrPeriod)
    out

// Supertrend Settings
factor = input.float(3.42, title="Supertrend Factor")
atrPeriod = input.int(14, title="ATR Period")
tf2 = input.timeframe("120", title="Supertrend Timeframe")

// RSI Settings
rsi_tf = input.timeframe("15", title="RSI Timeframe")
rsiLength = input.int(5, title="RSI Length")
rsiUpper = input.int(95, title="RSI Upper Limit")  
rsiLower = input.int(5, title="RSI Lower Limit")   

// RSI Timeframe
rsi_tf_value = request.security(syminfo.tickerid, rsi_tf, ta.rsi(close, rsiLength), lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_off)

// Supertrend Timeframe
supertrend_tf2 = request.security(syminfo.tickerid, tf2, supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_off)

// Take Profit Settings (Percentage in relation to the average price)
takeProfitPercent = input.float(30, title="Take Profit", step=0.1) / 100

// Entry conditions based on price crossover with Supertrend Timeframe
longCondition = ta.crossover(close, supertrend_tf2) and barstate.isconfirmed
shortCondition = ta.crossunder(close, supertrend_tf2) and barstate.isconfirmed

// Execution of reversal orders with closing of previous position
if (longCondition)
    // Close a short position before opening a long position
    if (strategy.position_size < 0)
        strategy.close("Short", comment="Close Short for Long Entry")
    strategy.entry("Long", strategy.long)

if (shortCondition)
    // Close long position before opening short position
    if (strategy.position_size > 0)
        strategy.close("Long", comment="Close Long for Short Entry")
    strategy.entry("Short", strategy.short)

// Calculate take profit levels relative to the average entry price
if (strategy.position_size > 0)
    takeProfitLong = strategy.position_avg_price * (1 + takeProfitPercent)
    strategy.exit("Take Profit Long", "Long", limit=takeProfitLong)

if (strategy.position_size > 0 and (rsi_tf_value >= rsiUpper))
    strategy.close("Long", comment="RSI Take Profit Long")

if (strategy.position_size < 0)
    takeProfitShort = strategy.position_avg_price * (1 - takeProfitPercent)
    strategy.exit("Take Profit Short", "Short", limit=takeProfitShort)

if (strategy.position_size < 0 and (rsi_tf_value <= rsiLower))
    strategy.close("Short", comment="RSI Take Profit Short")

// Plot Supertrend timeframe with commit check to avoid repainting
plot(barstate.isconfirmed ? supertrend_tf2 : na, color=color.blue, title="Supertrend Timeframe (120 min)", linewidth=1)

// Plot RSI for visualization
plot(rsi_tf_value, "RSI", color=color.purple)
hline(rsiUpper, "RSI Upper", color=color.red)
hline(rsiLower, "RSI Lower", color=color.green)




관련

더 많은