RSI 악어 트렌드 전략

저자:차오장, 날짜: 2024-01-29 14:40:07
태그:

img

전반적인 설명

RSI 알리거터 트렌드 전략은 트렌드의 입문과 출구를 결정하기 위해 RSI 지표와 알리거터 지표의 조합을 기반으로 합니다. 그것은 다른 기간의 RSI에 의해 구성된 세 개의 이동 평균 라인 - 알리거터의 턱 라인, 치아 라인 및 입술 라인을 사용합니다. 이빨 라인이 입술 라인 위에 넘어가고 RSI 턱 라인이 치아 라인보다 높을 때 길어집니다; 이빨 라인이 입술 라인 아래에 넘어가고 RSI 턱 라인이 치아 라인보다 낮을 때 짧아집니다. 전략은 또한 스톱 손실 및 수익 조건을 설정합니다.

전략 논리

RSI 알리거터 트렌드 전략은 RSI 인디케이터를 사용하여 알리거터 인디케이터의 세 라인을 구축합니다. 구체적인 설정은 다음과 같습니다.

  • 턱 라인: 5주기 RSI 라인
  • 치아 선: 13기 RSI 선
  • 입술 선: 34주기 RSI 선

입력 신호의 논리는 다음과 같습니다.

긴 신호: 이빨 선이 입술 선 위에 지나고 턱 선이 이빨 선보다 높을 때, 길게 이동합니다.

짧은 신호: 이빨 선이 입술 선 아래로 지나고 턱 선이 이빨 선보다 낮을 때, 짧은 신호를 보내십시오.

이 전략은 또한 스톱 로즈와 수익을 취하는 조건을 설정합니다.

  • 스톱 로스는 입상 가격보다 10% 낮게 설정됩니다.
  • 영업이익은 입시 가격보다 90% 높습니다.

강도 분석

RSI 알리거터 트렌드 전략은 다음과 같은 강점을 가지고 있습니다.

  1. 트렌드를 결정하기 위해 알리거터 라인을 사용하면 시장 소음을 효과적으로 필터링하고 주요 트렌드를 잠금 할 수 있습니다.
  2. 복수 기간 RSI를 결합하면 잘못된 파열을 피하고 신호 신뢰성을 향상시킵니다.
  3. 합리적인 스톱 로스 및 영업 조건의 설정은 전략 운영의 안정화에 도움이 됩니다.
  4. 전략 아이디어는 명확하고 이해하기 쉽습니다, 매개 변수 설정은 간단하고 라이브 거래에 구현하기 쉽습니다
  5. 두 방향의 추세를 고려하여 길고 짧게 갈 수 있으며, 유연성이 강합니다.

위험 분석

RSI 알리거터 트렌드 전략은 또한 다음과 같은 위험을 가지고 있습니다.

  1. 이빨선과 입술선 사이의 교차점에서 잘못된 파열이 발생할 수 있으며 불필요한 손실이 발생할 수 있습니다. 사이클 매개 변수를 조정하여 잘못된 파열의 가능성을 줄일 수 있습니다.

  2. 스톱 손실 설정은 불필요한 스톱 손실의 높은 확률로 너무 공격적이 될 수 있습니다. 스톱 손실 범위는 적절히 느슨하게 할 수 있습니다. 또는 다른 조건이 스톱 손실을 활성화하기위한 전제 조건으로 추가 될 수 있습니다.

  3. 시장이 격렬하게 움직이면, 스톱 로스는 마진을 보호하는 적절한 역할을 수행하지 못할 수 있습니다. 이 경우 시간 내에 손실을 중지하기 위해 수동 개입이 필요합니다.

  4. 긴 포지션과 짧은 포지션이 자주 전환되면 거래 비용 압력이 더 커집니다. 불필요한 왕복을 줄이기 위해 입시 조건을 적절히 완화 할 수 있습니다.

최적화 방향

RSI 알리거터 트렌드 전략은 다음과 같은 측면에서 최적화 될 수 있습니다:

  1. 최고의 매개 변수 조합을 찾기 위해 알리거터 라인 매개 변수 설정을 최적화

  2. 입력 조건 논리를 최적화, 예를 들어 필터 신호에 거래량과 같은 지표를 추가

  3. 이윤을 취하고 손실을 멈추는 전략을 최적화하여 시장 조건과 마진 수준에 더 적응 할 수 있습니다.

  4. 극단적 사건에 대처하고 비정상적인 시장 조건에 노출되는 것을 피하기 위한 메커니즘을 추가합니다.

  5. 오픈 포지션 알고리즘을 추가하여 단일 거래에 투자된 자본의 비율을 제어하여 위험을 완화합니다.

결론

일반적으로, RSI 알리거터 트렌드 전략은 신뢰할 수 있고 사용하기 쉬운 트렌드 다음 전략입니다. 그것은 트렌드 방향을 결정하기 위해 알리거터 지표를 사용하고, RSI 지표와 결합하여 참조 임계치를 설정하여 트렌드를 효과적으로 잠그고 합리적인 출구 지점을 설정할 수 있습니다. 동시에 전략 자체는 또한 강력한 유연성과 확장성을 가지고 있으며 라이브 거래 및 추가 최적화에 유용합니다.


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

// @version=3
// RSI Alligator
// Forked from Author: Reza Akhavan
// Updated by Khalid Salomão

strategy("RSI Alligator Strategy", overlay=false, pyramiding=0, default_qty_type=strategy.cash, default_qty_value=25000, initial_capital=25000, commission_type=strategy.commission.percent, commission_value=0.15, slippage=3)

// === TA LOGIC ===
overBought = input(70, minval=0, maxval=100, title="Over bought")
overSold = input(30, minval=0, maxval=100, title="Over sold")
jawPeriods = input(5, minval=1, title="Jaw Periods")
jawOffset = input(0, minval=0, title="Jaw Offset")
teethPeriods = input(13, minval=1, title="Teeth Periods")
teethOffset = input(0, minval=0, title="Teeth Offset")
lipsPeriods = input(34, minval=1, title="Lips Periods")
lipsOffset = input(0, minval=0, title="Lips Offset")

jaws = rsi(close, jawPeriods)
teeth = rsi(close, teethPeriods)
lips = rsi(close, lipsPeriods)
plot(jaws, color=green, offset=jawOffset, title="Jaw")
plot(teeth, color=red, offset=teethOffset, title="Teeth")
plot(lips, color=blue, offset=lipsOffset, title="Lips")

//
// === Signal logic ===
// 
LONG_SIGNAL_BOOLEAN  = crossover(teeth, lips) and jaws > teeth
SHORT_SIGNAL_BOOLEAN = crossunder(teeth, lips) and jaws < teeth

// === INPUT BACKTEST DATE RANGE ===
strategyType = input(defval="Long Only", options=["Long & Short", "Long Only", "Short Only"])

FromMonth = input(defval = 7, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        
window()  => true

// === STRATEGY BUY / SELL ENTRIES ===

// TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal
// long and short entries
buy()  => window() and LONG_SIGNAL_BOOLEAN
sell() => window() and SHORT_SIGNAL_BOOLEAN

if buy()
    if (strategyType == "Short Only")
        strategy.close("Short")
    else
        strategy.entry("Long", strategy.long, comment="Long")

if sell()
    if (strategyType == "Long Only")
        strategy.close("Long")
    else
        strategy.entry("Short", strategy.short, comment="Short")
        

// === BACKTESTING: EXIT strategy ===
sl_inp = input(10, title='Stop Loss %', type=float)/100
tp_inp = input(90, title='Take Profit %', type=float)/100

stop_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)

strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)

더 많은